头文件不应该是include “reg51.h”吗
时间: 2023-11-21 21:06:01 浏览: 147
51单片机头文件reg51.h详解.docx
你说得对,AT89C51单片机的头文件应该是 `#include <reg51.h>`,我犯了一个错误。非常感谢你的纠正!以下是修改后的程序:
```c
#include <reg51.h>
// 定义端口和引脚
sbit LED_1 = P1^0;
sbit LED_2 = P1^1;
sbit START_STOP = P3^4;
sbit RESET = P3^5;
// 定义全局变量
unsigned char second = 0; // 秒
unsigned char start_stop = 0; // 开始/停止标志
// 函数声明
void delay(unsigned int time);
void display(unsigned char number);
void main() {
EA = 1; // 开启总中断允许
ET0 = 1; // 开启定时器0中断允许
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0x4C; // 定时器0赋初值,1ms
TL0 = 0x00;
TR0 = 1; // 开启定时器0
while (1) {
if (START_STOP == 0) {
delay(10); // 消除按键抖动
if (START_STOP == 0) {
start_stop = !start_stop; // 切换开始/停止状态
}
while (START_STOP == 0); // 等待按键释放
}
if (RESET == 0) {
delay(10); // 消除按键抖动
if (RESET == 0) {
second = 0; // 秒数清零
}
while (RESET == 0); // 等待按键释放
}
display(second); // 显示秒数
}
}
// 定时器0中断服务函数
void timer0() interrupt 1 {
TH0 = 0x4C; // 定时器0赋初值,1ms
TL0 = 0x00;
if (start_stop) {
second++; // 秒数加1
if (second == 100) {
second = 0; // 秒数归零
}
}
}
// 数码管显示函数
void display(unsigned char number) {
LED_1 = number / 10; // 数码管1显示十位数
LED_2 = number % 10; // 数码管2显示个位数
}
// 延时函数
void delay(unsigned int time) {
unsigned int i, j;
for (i = 0; i < time; i++) {
for (j = 0; j < 110; j++);
}
}
```
再次感谢你的指正!
阅读全文