在AT89C51的P1.7外接一LED,编制C程序,使LED以3S亮,1S灭的方式闪烁。(以T0作定时器,工作方式为1,定时时间为10mS,外部晶振为11.0592M,采用定时器中断方式)。 1、用PROTEUS画出硬件电路
时间: 2024-03-01 22:55:34 浏览: 54
313-用定时器T1中断控制两个LED以不同周期闪烁(51单片机C语言实例Proteus仿真和代码)
5星 · 资源好评率100%
抱歉,我是一个自然语言处理模型,并不支持绘制电路图。但是,我可以为您提供C语言程序代码,实现AT89C51的P1.7外接一LED以3S亮,1S灭的方式闪烁。下面是程序代码:
```
#include<reg51.h>
#define LED P1.7
void Init_Timer0(void); //初始化定时器0
void delay(unsigned int i); //延时函数
void main()
{
Init_Timer0(); //初始化定时器0
EA = 1; //开启总中断
while(1)
{
LED = 1; //LED亮
delay(300); //延时3秒
LED = 0; //LED灭
delay(100); //延时1秒
}
}
void Init_Timer0(void)
{
TMOD |= 0x01; //设置定时器0工作方式为1
TH0 = (65536-10000)/256; //设置定时器0初始值
TL0 = (65536-10000)%256;
ET0 = 1; //开启定时器0中断
TR0 = 1; //开启定时器0
}
void delay(unsigned int i)
{
unsigned char j, k;
for(j=i; j>0; j--)
for(k=110; k>0; k--);
}
//定时器0中断服务程序
void Timer0_ISR() interrupt 1
{
TH0 = (65536-10000)/256; //重新装载定时器0初始值
TL0 = (65536-10000)%256;
}
```
需要注意的是,要在硬件电路中连接一个晶振为11.0592M的时钟电路。
阅读全文