微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机跑马灯强化版

单片机跑马灯强化版

时间:12-01 来源:互联网 点击:
程序如下:
#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检测一次

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top