采用定时器延时控制LED亮灭 用单片机内的定时器功能,使LED灯点亮后连续亮10秒再熄灭,熄灭3秒后再被点亮

不断循环。用52单片机,c语言编程
2024-12-04 09:45:27
推荐回答(1个)
回答1:

剪了一段程序你试试吧:
#include
#define uint unsigned int
#define uchar unsigned char

#define u_s 50000//12MHz晶振

sbit LED=P1^0; //LED出端

uchar count,second=0; //标志变量

/***************************************************
定时器0中断子函数
12T芯片,12MHz晶体,定时50MS
***************************************************/
void clock_T0(void) interrupt 1
{
TH0=(65536-u_s)/256;
TL0=(65536-u_s)%256;
if(count++==20) //1S
{
count=0; //次数归0
second++; //秒标志加1
if(second==3)
{
second=0; //60S后秒标志归0
LED=~LED;
}
}
}
main()
{

IE=0x8a; //开启总中断允许定时器0/1响应中断
TMOD=0x11; //设置定时器0/1的工作于Mode1模式计数满值65536
TH0=(65536-u_s)/256; //计数器高8位填值
TL0=(65536-u_s)%256; //计数器高8位填值
while(1)
{
TR0=1;
}
}