|
//航順8位單片機(jī),錦銳CA51F551S1,只可調(diào)光,調(diào)速,調(diào)燈組數(shù),不會(huì)跑馬。程序調(diào)試OK
sfr P3 = 0xb0;
sbit EA = 0xAF;
sfr LEDWTML = 0xce;
sfr LEDWTMH = 0xcf;
sfr LEDAT1 = 0xc7;
sfr PWMEN = 0x90;
sfr PWM2DIVL = 0xad;
sfr PWM2DIVH = 0xae;
sfr PWM2DUTL = 0x9f;
sfr PWM2DUTH = 0x91;
sfr PWM2CKD = 0xb3;
sfr PWM2CON = 0xbb;
sfr LEFLG = 0xbf;
#define CKCON (*(unsigned char volatile xdata *)0x8030)
#define P34F (*(unsigned char volatile xdata *)0x801C)
#define LEDUTL (*(unsigned char volatile xdata *)0x8060)
#define LEDUTH (*(unsigned char volatile xdata *)0x8061)
#define PWMIE(N) (N<<7) //N=0-1
#define PWMTOG(N) (N<<6) //N=0-1
#define PWMMOD(N) (N<<3) //N=0-7
#define PWMPOL(N) (N<<2) //N=0-1
#define PWMCKS_SYS 0
#define PWMCKS_IL 1
#define PWMCKS_IH 2 //LEFLG
#define LEF1 (1<<3)
#define LEBSY1 (1<<6)
#define IHCKE (1<<7)
void main(void)
{
EA = 1;
CKCON =(1<<7); //打開IRCH時(shí)鐘
P34F =5;
PWM2CON = PWMIE(0) | PWMTOG(0) | PWMMOD(3) | PWMPOL(0) | PWMCKS_IH; //設(shè)置PWM時(shí)鐘源為IRCH
PWM2CKD = 0;
//設(shè)置PWMDIV、PWMDUT
PWM2DIVH = 0;
PWM2DIVL = 30;
PWM2DUTH = 0;
PWM2DUTL = 7;
LEDUTH = 0;
LEDUTL = 14;
LEDWTMH = 0;
LEDWTML = 50;
//開全局中斷
PWMEN |= (1<<2); //PWM2 使能
while(1)
{
unsigned int j,k;//定義一個(gè)16位無符號整形變量
unsigned char i;
static unsigned char color_index = 0;
code unsigned char LED_DAT[][3] =
{
{0x00,0x2F,0x00}, //綠,紅,藍(lán)
{0x2F,0x00,0x00},
{0x00,0x00,0x2F},
{0x00,0x2F,0x2F},
{0x2F,0x2F,0x00},
{0x2F,0x00,0x2F},
{0x2F,0x2F,0x2F},
};
for(i=0;i<24;i++) //LED個(gè)數(shù)i*3
{
while(LEFLG & LEBSY1);
LEDAT1 = LED_DAT[color_index][i%3];
}
color_index ++;
if(color_index> 6) color_index =0; //LED數(shù)據(jù)組數(shù)N-1
for(j=0;j<1500;j++) //延時(shí)0.2s
{
for(k=1000;k>0;k--);
}
}
} |
|