188 lines
4.7 KiB
C
188 lines
4.7 KiB
C
//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 name:interrupt ISR
|
||
//parameters:无
|
||
//returned value:无
|
||
//===========================================================
|
||
void interrupt ISR(void)
|
||
{
|
||
}
|
||
//===========================================================
|
||
//Function name:main
|
||
//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
|
||
|
||
}
|
||
|
||
}
|
||
//===========================================================
|