使用AT89C51设计一个接在p2口的8个led从左到右循环依次点亮

如题所述

第1个回答  2017-01-06
这是一个很简单的控制单片机端口的程序,估计老师要求用定时器的吧

提问的时候没说具体要求,所以只好给出一个利用定时器来完成的流水灯程序

定时时间为一秒,即1000毫秒,可根据实际需要进行修改

星号是各个函数间的分隔符号,不喜欢可以删除,程序如下:
/***************************************************************************/
#include <REG52.h> //通用89C52头文件
char LD[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED流水灯编码
int n,t;
/***************************************************************************/
void main(void)//主函数
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256;
TMOD=0x01; EA=1; ET0=1; TR0=1;//定时器初始化

while(1)
{
P2=LD[t];//状态输出
}
}
/***************************************************************************/
void int1() interrupt 1 //定时器中断
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;
if(n>1000){n=0;t++;}//如果达到一秒
if(t>7){t=0;}//如果达到24小时,小时清零
}
/***************************************************************************/本回答被网友采纳