P1口8位LED以1S的周期闪烁(即亮0.5S,灭0.5S)要求用单片机的定时器计数器来工作?程序

希望上天派个神来救救我
2025-02-27 08:36:56
推荐回答(1个)
回答1:

#include
#define Frequency 12 //晶振几M的就改成几
#define Time 5000*(Frequency/12)
unsigned char counter=0;
void initT0()
{ TMOD=0x01;
TH0=-Time/256;
TL0=-Time%256;
ET0=1;
EA=1;
TR0=1;
}void intT0(void)interrupt 1
{
counter++;
TH0=-Time/256;
TL0=-Time%256;
if(counter==100)
{ P1=~P1;
counter=0; //定时器计5000次,counter 计100次,总计500000=500ms.
}
}
void main(void)
{
P1=0;
initT0();
while(1);
}//实测图。如下: