计数器实验内容:P1口接2只 LED 灯,定时器T1采用计数模式,方式 1中断,外接按钮开关作为计数输入,当按2次按钮开关,P1口第一只 LED 点亮,再按2次按钮开关,P1口第二只 LED 点亮,再按2次按钮,所有 LED 灯熄灭。的AT89C51的编程
时间: 2024-03-02 22:51:33 浏览: 12
好的,以下是AT89C51的计数器实验编程代码,供你参考:
```
#include<reg51.h>
sbit led1=P1^0; //定义P1.0口为LED1
sbit led2=P1^1; //定义P1.1口为LED2
sbit key=P3^2; //定义P3.2口为按键
int count=0; //定义计数器变量
void main()
{
TMOD=0x10; //设置T1为计数模式
TH1=0x00; //设置T1的初始值为0
TL1=0x00;
ET1=1; //使能T1中断
EA=1; //开总中断
TR1=1; //启动T1
while(1) //主循环
{
if(key==0) //判断按键是否按下
{
delay(100); //延时去抖动
if(key==0)
{
count++; //计数器加1
if(count==1) //当计数器为1时,点亮LED1
{
led1=1;
}
else if(count==2) //当计数器为2时,点亮LED2
{
led2=1;
}
else if(count==3) //当计数器为3时,熄灭所有LED
{
led1=0;
led2=0;
count=0;
}
}
while(key==0); //等待按键释放
}
}
}
void timer1() interrupt 3 //T1中断服务程序
{
TH1=0x00; //重新装载计数器初值
TL1=0x00;
}
void delay(int x) //延时函数
{
int i,j;
for(i=0;i<x;i++)
{
for(j=0;j<110;j++);
}
}
```