📄 sn3188_20080714.c
字号:
//*********************************************************************************//
//************************* 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 + -