📄 sn3188_20080714.c
字号:
delay_us();
//Stop
CLK=0;
DATA=0;
LATCH=1;
delay_us();
// delay_cnt(2);
LATCH=0;
// delay_cnt(2);
}
/********mode1******/
void mode1(void)
{
for(pwmR=0x00;pwmR<0xff;pwmR++)
{
run_pattern();
if(mode!=1)return;
delay_cnt(10);
}
for(pwmG=0x00;pwmG<0xff;pwmG++)
{
pwmR=pwmR--;
run_pattern();
if(mode!=1)return;
delay_cnt(10);
}
for(pwmB=0x00;pwmB<0xff;pwmB++)
{
pwmR=0x00;
pwmG=pwmG--;
run_pattern();
if(mode!=1)return;
delay_cnt(10);
}
for(pwmB=0xff;pwmB>0x00;pwmB--)
{
pwmR=0x00;
pwmG=0x00;
run_pattern();
if(mode!=1)return;
delay_cnt(10);
}
}
/*******mode2*******/
void mode2(void)
{
//RGB
//001
for(pwmB=0x00;pwmB<0xff;pwmB++)
{
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
//010
for(pwmG=0x00;pwmG<0xff;pwmG++)
{
pwmB=pwmB--;
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
//011
for(pwmB=0x00;pwmB<0xff;pwmB++)
{
// pwmR=pwmR--;
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
//100
for(pwmR=0x00;pwmR<0xff;pwmR++)
{
pwmG=pwmG--;
pwmB=pwmB--;
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
//101
for(pwmB=0x00;pwmB>0xff;pwmB++)
{
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
//110
for(pwmG=0x00;pwmG>0xff;pwmG++)
{
pwmB=pwmB--;
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
//111
for(pwmB=0x00;pwmB>0xff;pwmB++)
{
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
//000
for(;pwmB<0xff;pwmB--)
{
pwmR=pwmR--;
pwmG=pwmG--;
run_pattern();
if(mode!=2)return;
delay_cnt(10);
}
delay_cnt(200);
}
/******mode3********/
void mode3(void)
{
for(pwmR=0x00;pwmR<0xff;pwmR++)
{
run_pattern();
if(mode!=3)return;
delay_cnt(10);
}
for(pwmG=0x00;pwmG<0xff;pwmG++)
{
pwmR=pwmR--;
run_pattern();
if(mode!=3)return;
delay_cnt(10);
}
for(pwmB=0x00;pwmB<0xff;pwmB++)
{
pwmR=0x00;
pwmG=pwmG--;
run_pattern();
if(mode!=3)return;
delay_cnt(10);
}
for(pwmB=0xff;pwmB>0x00;pwmB--)
{
pwmR=0x00;
pwmG=0x00;
run_pattern();
if(mode!=3)return;
delay_cnt(10);
}
}
/******mode4********/
void mode4(void)
{
/*-------------------------------------------------- R+B- --------------------------------------------*/
//note=!note;
pwmR=0x0c; run_pattern(); delay_cnt(35);pwmB=0xfe; run_pattern(); delay_cnt(35);
pwmR=0x10; run_pattern(); delay_cnt(35);pwmB=0xef; run_pattern(); delay_cnt(35);
pwmR=0x15; run_pattern(); delay_cnt(35);pwmB=0xe1; run_pattern(); delay_cnt(35);
pwmR=0x1a; run_pattern(); delay_cnt(35);pwmB=0xd3; run_pattern(); delay_cnt(35);
pwmR=0x20; run_pattern(); delay_cnt(35);pwmB=0xc6; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmR=0x26; run_pattern(); delay_cnt(35);pwmB=0xb9; run_pattern(); delay_cnt(35);
pwmR=0x2d; run_pattern(); delay_cnt(35);pwmB=0xac; run_pattern(); delay_cnt(35);
pwmR=0x34; run_pattern(); delay_cnt(35);pwmB=0xa0; run_pattern(); delay_cnt(35);
pwmR=0x3c; run_pattern(); delay_cnt(35);pwmB=0x94; run_pattern(); delay_cnt(35);
pwmR=0x44; run_pattern(); delay_cnt(35);pwmB=0x88; run_pattern(); delay_cnt(35);
pwmR=0x4c; run_pattern(); delay_cnt(35);pwmB=0x7d; run_pattern(); delay_cnt(35);
pwmR=0x55; run_pattern(); delay_cnt(35);pwmB=0x73; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmR=0x5f; run_pattern(); delay_cnt(35);pwmB=0x69; run_pattern(); delay_cnt(35);
pwmR=0x69; run_pattern(); delay_cnt(35);pwmB=0x5f; run_pattern(); delay_cnt(35);
pwmR=0x73; run_pattern(); delay_cnt(35);pwmB=0x55; run_pattern(); delay_cnt(35);
pwmR=0x7d; run_pattern(); delay_cnt(35);pwmB=0x4c; run_pattern(); delay_cnt(35);
pwmR=0x88; run_pattern(); delay_cnt(35);pwmB=0x44; run_pattern(); delay_cnt(35);
pwmR=0x94; run_pattern(); delay_cnt(35);pwmB=0x3c; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmR=0xa0; run_pattern(); delay_cnt(35);pwmB=0x34; run_pattern(); delay_cnt(35);
pwmR=0xac; run_pattern(); delay_cnt(35);pwmB=0x2d; run_pattern(); delay_cnt(35);
pwmR=0xb9; run_pattern(); delay_cnt(35);pwmB=0x26; run_pattern(); delay_cnt(35);
pwmR=0xc6; run_pattern(); delay_cnt(35);pwmB=0x20; run_pattern(); delay_cnt(35);
pwmR=0xd3; run_pattern(); delay_cnt(35);pwmB=0x1a; run_pattern(); delay_cnt(35);
pwmR=0xe1; run_pattern(); delay_cnt(35);pwmB=0x15; run_pattern(); delay_cnt(35);
pwmR=0xef; run_pattern(); delay_cnt(35);pwmB=0x10; run_pattern(); delay_cnt(35);
pwmR=0xfe; run_pattern(); delay_cnt(35);pwmB=0x0c; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
/*-------------------------------------------------- R-G+ --------------------------------------------*/
pwmR=0xef; run_pattern(); delay_cnt(35);pwmG=0x0c; run_pattern(); delay_cnt(35);
pwmR=0xe1; run_pattern(); delay_cnt(35);pwmG=0x10; run_pattern(); delay_cnt(35);
pwmR=0xd3; run_pattern(); delay_cnt(35);pwmG=0x15; run_pattern(); delay_cnt(35);
pwmR=0xc6; run_pattern(); delay_cnt(35);pwmG=0x1a; run_pattern(); delay_cnt(35);
pwmR=0xb9; run_pattern(); delay_cnt(35);pwmG=0x20; run_pattern(); delay_cnt(35);
pwmR=0xac; run_pattern(); delay_cnt(35);pwmG=0x26; run_pattern(); delay_cnt(35);
pwmR=0xa0; run_pattern(); delay_cnt(35);pwmG=0x2d; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmR=0x94; run_pattern(); delay_cnt(35);pwmG=0x34; run_pattern(); delay_cnt(35);
pwmR=0x88; run_pattern(); delay_cnt(35);pwmG=0x3c; run_pattern(); delay_cnt(35);
pwmR=0x7d; run_pattern(); delay_cnt(35);pwmG=0x44; run_pattern(); delay_cnt(35);
pwmR=0x73; run_pattern(); delay_cnt(35);pwmG=0x4c; run_pattern(); delay_cnt(35);
pwmR=0x69; run_pattern(); delay_cnt(35);pwmG=0x55; run_pattern(); delay_cnt(35);
pwmR=0x5f; run_pattern(); delay_cnt(35);pwmG=0x5f; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmR=0x55; run_pattern(); delay_cnt(35);pwmG=0x69; run_pattern(); delay_cnt(35);
pwmR=0x4c; run_pattern(); delay_cnt(35);pwmG=0x73; run_pattern(); delay_cnt(35);
pwmR=0x44; run_pattern(); delay_cnt(35);pwmG=0x7d; run_pattern(); delay_cnt(35);
pwmR=0x3c; run_pattern(); delay_cnt(35);pwmG=0x88; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmR=0x34; run_pattern(); delay_cnt(35);pwmG=0x94; run_pattern(); delay_cnt(35);
pwmR=0x2d; run_pattern(); delay_cnt(35);pwmG=0xa0; run_pattern(); delay_cnt(35);
pwmR=0x26; run_pattern(); delay_cnt(35);pwmG=0xac; run_pattern(); delay_cnt(35);
pwmR=0x20; run_pattern(); delay_cnt(35);pwmG=0xb9; run_pattern(); delay_cnt(35);
pwmR=0x1a; run_pattern(); delay_cnt(35);pwmG=0xc6; run_pattern(); delay_cnt(35);
pwmR=0x15; run_pattern(); delay_cnt(35);pwmG=0xd3; run_pattern(); delay_cnt(35);
pwmR=0x10; run_pattern(); delay_cnt(35);pwmG=0xe1; run_pattern(); delay_cnt(35);
pwmR=0x0c; run_pattern(); delay_cnt(35);pwmG=0xef; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
/*------------------------------------------------------ B+G- --------------------------------------------*/
pwmG=0xfe; run_pattern(); delay_cnt(35);pwmB=0x0c; run_pattern(); delay_cnt(35);
pwmG=0xef; run_pattern(); delay_cnt(35);pwmB=0x10; run_pattern(); delay_cnt(35);
pwmG=0xe1; run_pattern(); delay_cnt(35);pwmB=0x15; run_pattern(); delay_cnt(35);
pwmG=0xd3; run_pattern(); delay_cnt(35);pwmB=0x1a; run_pattern(); delay_cnt(35);
pwmG=0xc6; run_pattern(); delay_cnt(35);pwmB=0x20; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmG=0xb9; run_pattern(); delay_cnt(35);pwmB=0x26; run_pattern(); delay_cnt(35);
pwmG=0xac; run_pattern(); delay_cnt(35);pwmB=0x2d; run_pattern(); delay_cnt(35);
pwmG=0xa0; run_pattern(); delay_cnt(35);pwmB=0x34; run_pattern(); delay_cnt(35);
pwmG=0x94; run_pattern(); delay_cnt(35);pwmB=0x3c; run_pattern(); delay_cnt(35);
pwmG=0x88; run_pattern(); delay_cnt(35);pwmB=0x44; run_pattern(); delay_cnt(35);
pwmG=0x7d; run_pattern(); delay_cnt(35);pwmB=0x4c; run_pattern(); delay_cnt(35);
pwmG=0x73; run_pattern(); delay_cnt(35);pwmB=0x55; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmG=0x69; run_pattern(); delay_cnt(35);pwmB=0x5f; run_pattern(); delay_cnt(35);
pwmG=0x5f; run_pattern(); delay_cnt(35);pwmB=0x69; run_pattern(); delay_cnt(35);
pwmG=0x55; run_pattern(); delay_cnt(35);pwmB=0x73; run_pattern(); delay_cnt(35);
pwmG=0x4c; run_pattern(); delay_cnt(35);pwmB=0x7d; run_pattern(); delay_cnt(35);
pwmG=0x44; run_pattern(); delay_cnt(35);pwmB=0x88; run_pattern(); delay_cnt(35);
pwmG=0x3c; run_pattern(); delay_cnt(35);pwmB=0x94; run_pattern(); delay_cnt(35);
pwmG=0x34; run_pattern(); delay_cnt(35);pwmB=0xa0; run_pattern(); delay_cnt(35);
pwmG=0x2d; run_pattern(); delay_cnt(35);pwmB=0xac; run_pattern(); delay_cnt(35);
if(s!=ck)
return;
pwmG=0x26; run_pattern(); delay_cnt(35);pwmB=0xb9; run_pattern(); delay_cnt(35);
pwmG=0x20; run_pattern(); delay_cnt(35);pwmB=0xc6; run_pattern(); delay_cnt(35);
pwmG=0x1a; run_pattern(); delay_cnt(35);pwmB=0xd3; run_pattern(); delay_cnt(35);
pwmG=0x15; run_pattern(); delay_cnt(35);pwmB=0xe1; run_pattern(); delay_cnt(35);
pwmG=0x10; run_pattern(); delay_cnt(35);pwmB=0xef; run_pattern(); delay_cnt(35);
pwmG=0x0c; run_pattern(); delay_cnt(35);pwmB=0xfe; run_pattern(); delay_cnt(35);
}
/********mode5*********/
void mode5(void)
{
run_pattern();
// delay_cnt(100);
}
//*****************************************主程序************************************************//
main(void)
{
//中断初始化
INTCON=0b00010000; // 关总中断
OPTION=0b00000000;
ADIF=0;
// ADIE=1;
PEIE=1;//
GIE=0;
T0IE=0;
RBIE=0;
//INT
INTEDG=1;
INTF=0;
INTE=1;
AS1=1;
AS2=1;
//A/D初始化
// ADCON1=0X01; // Vref=RA3,其它口均为模拟量输入.
// ADCON0=0X01; // AD时钟源ADCS1:ADCS0=00=Fosc/2;CHS2:CHS0=000=RA0/AN1,选RA0为当前A/D通道;ADON=1,AD ON.
//IO口初始化
TRISC=0X00;
PORTC=0X00;
TRISB=0Xf1;
TRISA=0X00;
PORTA=0X00;
// current_num=1;
// num=0;
ADCON0=0X02;
delay_cnt(200);
delay_cnt(200);
CLK=1;
s=1;
delay_cnt(200);
CLK=0;
// CNT=1;
mode=1;//
pwmR=0x00;
pwmG=0x00;
pwmB=0x00;
plus=1;
/*******RB INT******/
GIE=1;//
//主循环
/*
mode1:0000 X000,XXXX XXXX,XXXX XXXX,XXXX XXXX.
1):music+ring
2):
Configuration Byte:
D7~D6:00 Mode1 enable(music+ring)
01 Mode2 enable(music only)
10 Mode3 enable(ring only)
D5: 0 Mode4 disable
1 Mode4 enable(OUT0~OUT2 control by data & OUT3~OUT7 control by mode1~3)
D4: 0 Normal operation
1 Software shutdown mode
D3: X
D2~D0:000 Gain=0db
001 Gain=0db
010 Gain=0db
101 Gain=0db
110 Gain=0db
PWN Control byte:
D7~D0:256 steps of PWM control
*/
while(1)
{
switch(mode)
{
case 1:
config=0x60; //music+12db+RGB
// pwmG=0Xff;pwmR=0xff;pwmB=0xff;
ck=1;
mode4();
// while(mode==1)
// {
// }
break;
case 2:
config=0xA0; //ring+12db+RGB
// pwmG=0Xff;pwmR=0xff;pwmB=0xff;
ck=2;
mode4();
// while(mode==2)
// {
// }
break;
case 3:
config=0x20; //Ring+music+12db+RGB
// pwmG=0Xff;pwmR=0xff;pwmB=0xff;
ck=3;
mode4();
// while(mode==3)
// {
// }
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -