您的位置 首页 产品

单片机跑马灯强化版

程序如下:includereg52h>includeintrinsh>defineuintunsignedintdefineucharunsignedchar宏定义voiddelay(ui

程序如下:
#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检测一次

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/317351.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部