求一个AT89C52单片机流水灯程序,8个灯从左到右亮1个,亮2个亮3个,以此类推,用定时器

求一个AT89C52单片机流水灯程序,8个灯从左到右亮1个,亮2个亮3个,以此类推,用定时器,第1张

假设灯接P0口,低电平点亮

主程序

void main()

{

unsigned char a=0, i=0

TMOD=0X01

TH0=(65536-50000)/256/定时50ms

TL0=(65536-50000)%256

EA=1ET0=1

TR0=1

P0=0XFF

while(1)

}

中断程序

void timer0 (void) interrupt 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

a++

if(a==20)//1秒时间到

{a=0i++P0=0XEF>>(i-1)}

if{i==8)i=0

}

方法:将定时器中断时间设置为一秒一次。声明一个全局的变量temp 在初始化的时候赋初值,在中断服务函数中,添加 temp=_cror_(temp,1)在主程序while(1){ P0 = temp}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7737583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存