×
嵌入式 > 技术百科 > 详情

单片机跑马灯强化版

发布时间:2020-06-06 发布时间:
|
程序如下:
#include
#include
#define uint unsigned int
#define uchar unsigned char//宏定义
void delay(uint a);//声明延时函数
uchar c,d;
sbit P00=P0^0;
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;//位操作
bit key_flag=0;//位定义
void main()
{
  uint e,h;
P00=0;
delay(100);
P00=1;
delay(500);
P00=0;
TMOD=1;//设定定时器工作方式为1
TH1=(65536-20000)/256; //定时器高八位装入初值  
TL1=(65536-20000)%256;//定时器低八位装入初值  
ET0=1;//启动定时器中断
 EA=1;//开启总中断
 TR0=1;//开启定时器
while(1)
{
 if(key_flag==1)
 {
   c=0xfe;d=0xfe;
   for(e=8;e>0;e--)
   {if(key_flag==1)
   {for(h=8;h>0;h--) 
    {P1=c; 
     delay(100);
     c=_crol_(c,1);//左移一位
}   
P2=d;
d=_crol_(d,1);//LED跑马灯主程序
    P30=0;P31=0;//位操作
delay(100);
P30=1;P31=1;//位操作
}
else P2=0xdb;//P1口电平 
}
   }
 else
 P1=0x7e;//P2口电平
 }
}
void delay(uint a)//延时函数
{
uint f,g;
for(;a>0;a--)
for(f=200;f>0;f--);
for(g=200;g>0;g--);
}
void timer_int0() interrupt 1//声明中断函数
{
 if(P32==0) 
  {delay(60);//键盘防抖延迟 
if(P32==0) 
key_flag=1^key_flag;//按位异或

TH1=(65536-20000)/256;//定时器高八位重新装入初值   
TL1=(65536-20000)%256;//定时器低八位重新装入初值  
}//此为按键检测,每隔20ms检测一次
 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分拣机器人的工作原理是什么