#define uint unsigned int
#define uchar unsigned char
sbit LED0=P1^0// 设置1^0为led灯端口
void init()
void delay(uint t)
{
while(--t)
}
void huxi() //呼吸灯程友腊序
{
uint CYCLE=700,PWM=0//定义周期并赋值
while(1) //主循环
{
LED0=1
delay(60000) // 可以看到熄灭的过程
for(PWM=1PWM<CYCLEPWM++) //PWM_LOW表示低电平时间,这个循环中低电平时长从亮庆1累加到CYCLE(周期)的值,即600次
{
LED0=0 //点亮LED
delay(PWM)//延时长度,600次循环中从1加好键滑至599
LED0=1 //熄灭LED
delay(CYCLE-PWM)//延时长度,600次循环中从599减至1
}
LED0=0
for(PWM=CYCLE-1PWM>0PWM--) //与逐渐变亮相反的过程
{
LED0=0
delay(PWM)
LED0=1
delay(CYCLE-PWM)
}
}
}
void ctrl (uchar dat) //处理函数
{
switch(dat)
{
case '0':LED0=1break
case '1':LED0=0break
case '2':huxi()break
default: break
}
}
void main()
{
init()
while(1)
{
uchar Tmp //定义临时变量
if(RI)//判断是接收中断产生
{ RI=0 //标志位清零
Tmp=SBUF
ctrl(Tmp)//读入缓冲区的值
}
LED0=0
delay(10000)
LED0=1
delay(10000)
}
}
void init()
{
SCON = 0x50 /* SCON: 模式 1, 8-bit UART, 使能接收 */
TMOD = 0x20 /* TMOD: timer 1, mode 2, 8-bit reload*/
TH1=TL1= 0xFD /* TH1: 9600波特率 @ 11.0592MHz */
TR1 = 1 /* TR1: timer 1 run */
EA= 1 /*打开总中断*/
// ES= 1
// TI=0
// RI=0/*打开串口中断*/
while (1)
{ LED0=0
delay(10000)
LED0=1
delay(10000)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)