⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sn3188_20080714.c

📁 SN3188的单片机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	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 + -