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

📄 sn3188_20080714.c

📁 SN3188的单片机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
//*********************************************************************************//
//************************* device pic16f73 ***************************************//
//*********************************************************************************//
//*********************************************************************************//
#include	<pic.h>

//unsigned char current_num,num,A1,A1_num,SDI,CNT;//current_num为当前显示的灯数,A1为刚A/D出来的累进.
unsigned char config,pwmR,pwmG,pwmB,mode,s,ck;
volatile bit plus;

#define 	KEY      	RB0			//For interrupt
#define 	AS1  		RC3			//Swich power supply
#define 	AS2		  	RC4			//
#define 	CLK			RC5			//
#define 	DATA	  	RC6			//
#define 	LATCH	  	RC7			//


//void delay_cnt(unsigned char cnt)

//************************************延时程序***************************************//

void delay_1ms(unsigned int k)
{
	unsigned int n,p;
	for(p=0;p<k;p++)
	for(n=0;n<50;n++)
		{
		NOP();
		}
}

void delay_ms(void)
{
unsigned char k;
for(k=0;k<2;k++)
	{
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
	}
}

delay_us(void)
{
unsigned char k;
for(k=0;k<2;k++)
	{
	asm("nop");
	asm("nop");

	}
}

delay_cnt(unsigned char cnt)
 {
unsigned char n,j;
for(n=0;n<cnt;n++)
	for(j=0;j<50;j++)
	{
	asm("nop");
	asm("nop");
	asm("nop");
	asm("nop");
	asm("nop");
	}
 }



void interrupt isr(void)
{
 	GIE=0;
	INTF=0;
	RC0=1;
	delay_1ms(300);
	RC0=0;

	while(RB0==0)
	{
	delay_1ms(50);
//	delay_ms();
	while(RB0==0)
	{}
	}

	switch(mode)
		{
		case 1:mode=2;s=2;break;
		case 2:mode=3;s=3;break;
		case 3:mode=1;s=1;break;
		};
	INTF=0;
	GIE=1;
}





void run_pattern(void)
{
/*
//start
	unsigned char i;
	CLK=0;
	DATA=0;
	delay_us();
//config
for(i=0;i<8;i++)
	{
	if(0X80&config)
	{DATA=1;}
	else DATA=0;
	config=config<<1;
	delay_us();
	CLK=1;
	delay_us();
	CLK=0;
	}
//pwm0
for(i=0;i<8;i++)
	{
	if(0X80&pwmR)
	{DATA=1;}
	else DATA=0;
	pwmR=pwmR<<1;
	delay_us();
	CLK=1;
	delay_us();
	CLK=0;
	}
//pwm1
for(i=0;i<8;i++)
	{
	if(0X80&pwmG)
	{DATA=1;}
	else DATA=0;
	pwmG=pwmG<<1;
	delay_us();
	CLK=1;
	delay_us();
	CLK=0;
	}
//pwm2
for(i=0;i<8;i++)
	{
	if(0X80&pwmB)
	{DATA=1;}
	else DATA=0;
	pwmB=pwmB<<1;
	delay_us();
	CLK=1;
	delay_us();
	CLK=0;
	}

//Stop
	CLK=0;
	DATA=0;
	LATCH=1;
	delay_us();
	delay_cnt(255);
	LATCH=0;
	delay_cnt(255);
	delay_cnt(255);
*/

//start
	unsigned char i;
	CLK=0;
	DATA=0;
	delay_us();


//1 bit config
	if(0x80&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//2 bit config
	CLK=0;
	if(0X40&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//3 bit config
	CLK=0;
	if(0X20&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//4 bit config
	CLK=0;
	if(0X10&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//5 bit config
	CLK=0;
	if(0X08&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//6 bit config
	CLK=0;
	if(0X04&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//7 bit config
	CLK=0;
	if(0X02&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//8 bit config
	CLK=0;
	if(0X01&config)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//1 bit pwm0
	CLK=0;
	if(0x80&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//2 bit pwm0
	CLK=0;
	if(0X40&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//3 bit pwm0
	CLK=0;
	if(0X20&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//4 bit pwm0
	CLK=0;
	if(0X10&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//5 bit pwm0
	CLK=0;
	if(0X08&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//6 bit pwm0
	CLK=0;
	if(0X04&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//7 bit pwm0
	CLK=0;
	if(0X02&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//8 bit pwm0
	CLK=0;
	if(0X01&pwmR)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();

//1 bit pwm1
	CLK=0;
	if(0x80&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//2 bit pwm1
	CLK=0;
	if(0X40&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//3 bit pwm1
	CLK=0;
	if(0X20&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//4 bit pwm1
	CLK=0;
	if(0X10&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//5 bit pwm1
	CLK=0;
	if(0X08&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//6 bit pwm1
	CLK=0;
	if(0X04&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//7 bit pwm1
	CLK=0;
	if(0X02&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//8 bit pwm1
	CLK=0;
	if(0X01&pwmG)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();

//1 bit pwm2
	CLK=0;
	if(0x80&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//2 bit pwm2
	CLK=0;
	if(0X40&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//3 bit pwm2
	CLK=0;
	if(0X20&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//4 bit pwm2
	CLK=0;
	if(0X10&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//5 bit pwm2
	CLK=0;
	if(0X08&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//6 bit pwm2
	CLK=0;
	if(0X04&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//7 bit pwm2
	CLK=0;
	if(0X02&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;
	delay_us();
//8 bit pwm2
	CLK=0;
	if(0X01&pwmB)
	{DATA=1;}
	else DATA=0;
	delay_us();
	CLK=1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -