ft60e210-ws2812/FT60E210-PWM.C
2024-07-26 14:17:44 +08:00

188 lines
4.7 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//Project: FT60E210-PWM.prj
// Device: FT60E21X
// Memory: Flash 1KX14b, EEPROM 128X8b, SRAM 64X8b
// Author:
//Company:
//Version:
// Date:
//===========================================================
//===========================================================
#include "SYSCFG.h"
#include "FT60F21X.h"
#include "sysnop.h"
//===========================================================
//Variable definition
//===========================================================
#define WS2812_HIGH (PA4 = 1)
#define WS2812_LOW (PA4 = 0)
#define WS2812_ZERO { WS2812_HIGH; WS2812_LOW; NOP(); NOP(); }
#define WS2812_ONE { WS2812_HIGH; NOP(); NOP(); WS2812_LOW; }
//void WS2812_HIGH(void)
//{
//#asm
// bsr 05H,4
//#endasm
//}
//void WS2812_LOW(void)
//{
//#asm
// bcr 05H,4
//#endasm
//}
//#define WS2812_ZERO { WS2812_HIGH; WS2812_LOW; NOP(); NOP(); }
//#define WS2812_ONE { WS2812_HIGH; NOP(); NOP(); WS2812_LOW; }
//===========================================================
//Function nameinterrupt ISR
//parameters
//returned value
//===========================================================
void interrupt ISR(void)
{
}
//===========================================================
//Function namemain
//parameters
//returned value
//===========================================================
main()
{
OSCCONbits.IRCF = 0b111; // 111 16M
MSCONbits.CKMAVG = 1; // LIRC 和 HIRC 交叉校准时 4 次平均测量模式
T2CON0bits.TMR2ON = 1; // 使能 Timer2
MSCONbits.CKCNTI = 1; // 开始校准
while(CKMIF == 1); // 等待校准完成
NOP4(); // 闲得无聊写的
TRISA4 = 0; // 使能PA4输出
nPAPU = 0; // 分组控制PA上拉电阻
WPUA4 = 1; // PA4上拉电阻使能
while(1)
{
PA4 = 0;
for (int i = 0; i< 80; i++) // 等280us
{
NOP();
}
PA4 = 1;
// asm("BCR STATUS,5");
// 1
WS2812_ONE; // G7
WS2812_ZERO; // G6
WS2812_ONE; // G5
WS2812_ZERO; // G4
WS2812_ONE; // G3
WS2812_ZERO; // G2
WS2812_ONE; // G1
WS2812_ZERO; // G0
WS2812_ONE; // R7
WS2812_ZERO; // R6
WS2812_ONE; // R5
WS2812_ZERO; // R4
WS2812_ONE; // R3
WS2812_ZERO; // R2
WS2812_ONE; // R1
WS2812_ZERO; // R0
WS2812_ONE; // B7
WS2812_ZERO; // B6
WS2812_ONE; // B5
WS2812_ZERO; // B4
WS2812_ONE; // B3
WS2812_ZERO; // B2
WS2812_ONE; // B1
WS2812_ZERO; // B0
// 2
WS2812_ONE; // G7
WS2812_ONE; // G6
WS2812_ONE; // G5
WS2812_ONE;; // G4
WS2812_ONE; // G3
WS2812_ONE; // G2
WS2812_ONE; // G1
WS2812_ONE; // G0
WS2812_ZERO; // R7
WS2812_ZERO; // R6
WS2812_ZERO; // R5
WS2812_ZERO; // R4
WS2812_ZERO; // R3
WS2812_ZERO; // R2
WS2812_ZERO; // R1
WS2812_ZERO; // R0
WS2812_ZERO; // B7
WS2812_ZERO; // B6
WS2812_ZERO; // B5
WS2812_ZERO; // B4
WS2812_ZERO; // B3
WS2812_ZERO; // B2
WS2812_ZERO; // B1
WS2812_ZERO; // B0
// 3
WS2812_ZERO; // G7
WS2812_ZERO; // G6
WS2812_ZERO; // G5
WS2812_ZERO; // G4
WS2812_ZERO; // G3
WS2812_ZERO; // G2
WS2812_ZERO; // G1
WS2812_ZERO; // G0
WS2812_ONE; // R7
WS2812_ONE; // R6
WS2812_ONE; // R5
WS2812_ONE;; // R4
WS2812_ONE; // R3
WS2812_ONE; // R2
WS2812_ONE; // R1
WS2812_ONE; // R0
WS2812_ZERO; // B7
WS2812_ZERO; // B6
WS2812_ZERO; // B5
WS2812_ZERO; // B4
WS2812_ZERO; // B3
WS2812_ZERO; // B2
WS2812_ZERO; // B1
WS2812_ZERO; // B0
// 4
WS2812_ZERO; // G7
WS2812_ZERO; // G6
WS2812_ZERO; // G5
WS2812_ZERO; // G4
WS2812_ZERO; // G3
WS2812_ZERO; // G2
WS2812_ZERO; // G1
WS2812_ZERO; // G0
WS2812_ZERO; // R7
WS2812_ZERO; // R6
WS2812_ZERO; // R5
WS2812_ZERO; // R4
WS2812_ZERO; // R3
WS2812_ZERO; // R2
WS2812_ZERO; // R1
WS2812_ZERO; // R0
WS2812_ONE; // B7
WS2812_ONE; // B6
WS2812_ONE; // B5
WS2812_ONE; // B4
WS2812_ONE; // B3
WS2812_ONE; // B2
WS2812_ONE; // B1
WS2812_ONE; // B0
}
}
//===========================================================