📄 51init.c
字号:
#include <regX51.h>
#include "intrins.h"
unsigned int Ri=0;//pwm脉冲宽度 |R_PWM
unsigned int Rj=0;//pwm低电平宽度, |R_PWM
unsigned int Ro=0;//pwm |R_PWM
unsigned int Rp=0;//pwm |R_PWM
unsigned int Gi=0;//pwm脉冲宽度 |G_PWM
unsigned int Gj=0;//pwm低电平宽度, |G_PWM
unsigned int Go=0;//pwm |G_PWM
unsigned int Gp=0;//pwm |G_PWM
unsigned int Bi=0;//pwm脉冲宽度 |B_PWM
unsigned int Bj=0;//pwm低电平宽度, |B_PWM
unsigned int Bo=0;//pwm |B_PWM
unsigned int Bp=0;//pwm |B_PWM
unsigned int r=0;//t1 led闪烁时间
unsigned char senddata=0x00;
unsigned char CLN=0;
sfr Wd=0xa6;//定义89s51看门狗寄存器
sbit R_led=0xa0;
sbit G_led=0xa1;
sbit B_led=0xa2;
bit R_led_zt=1;
bit G_led_zt=1;
bit B_led_zt=1;
/********************************************************************
定时计数器0
*********************************************************************/
void int_0()interrupt 1
{
TL0=0x66;//1ms
TH0=0xfc;
//RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
if(Ri>Ro)///////////////j是亮的时间,i-j是灭的时间/////
{
if(!R_led_zt)R_led=0; else R_led=1;
Ri=0;Rj=0;
}else Ri++;//
if(Rj>Rp){R_led=1;}
else Rj++;///////////////////////////////////////////////
//RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
//GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
if(Gi>Go)///////////////j是亮的时间,i-j是灭的时间/////
{
if(!G_led_zt)G_led=0; else G_led=1;
Gi=0;Gj=0;
}else Gi++;//
if(Gj>Gp){G_led=1;}
else Gj++;///////////////////////////////////////////////
//GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
//BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
if(Bi>Bo)///////////////j是亮的时间,i-j是灭的时间/////
{
if(!B_led_zt)B_led=0; else B_led=1;
Bi=0;Bj=0;
}else Bi++;//
if(Bj>Bp){B_led=1;}
else Bj++;///////////////////////////////////////////////
//BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
if(r>1000)////led闪光的时间
{
//ledsszt=!ledsszt;
if(CLN<6)CLN++; else CLN=0;
Ro=1;Rp=10;//RRRRRRRRRRRRRRRRRRRRRRR
Go=1;Gp=1;//RRRRRRRRRRRRRRRRRRRRRRR
Bo=1;Bp=1;//RRRRRRRRRRRRRRRRRRRRRRR
R_led_zt=0;
G_led_zt=0;
B_led_zt=0;
//P3_5=1;
//P3_6=1;
//P3_7=1;
r=0;//
}else r++;//
}
/********************************************************************
定时计数器1
*********************************************************************/
//void int_1()interrupt 3
//{
// TL1=0xb0;
// TH1=0x3c;
//}
/*----------------------------
串口中断
------------------------------*/
void serial()interrupt 4 //串口中断子程序 接收到的数据存在datasbuf中
{
ES=0;
if(RI)
{
RI=0;
senddata=SBUF;
}
ES=1;
}
void mdelay(unsigned char delay)
{unsigned int i;
for(;delay>0;delay--)
{for(i=1;i<250;i++)
{;}
}
}
//void WatchDog()//打开,复位89s51看门狗
//{
//Wd=0x1e;
//Wd=0xe1;
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -