1.实验题目:
用定时器0实现流水灯,要求每个led轮流显示1s。
2.KEIL代码
#include<reg51.h>
void main()
{
TMOD &=0X0F;
TMOD |=0x01;
TH0 = (65536 - 50000)/256;//高四位初值
TL0 = (65536 - 50000)%256;//低四位初值,每隔50ms溢出
EA = 1; //开总中断
ET0 = 1; //T1开时定时器溢出
TR0 = 1; //开启定时器
P1=0xff;
while(1);
}
void Time0(void) interrupt 1 //定时中断
{
static unsigned int i = 0;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
i++;
if(i >= 20) //溢出20次为一秒
{
i = 0;//恢复i的初值
P1<<=1;
}}
3.Protues仿真图
LED灯显示到第二个时
LED灯显示到第六个时