改错#include<reg51.h> #define uchar unsigned char #define uint unsigned intbit key = P1^0; // ????K1?IO? uchar code table[] = { // ?????0-9???? 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; uchar count = 0; // ??????,????0 void delay(uint xms) // ???? { uint i, j; for (i = xms; i > 0; i--) for (j = 110; j > 0; j--); } void display(uchar num) // ??????? { P2 = table[num]; // ???????????? } void main() { TMOD = 0x01; // ???T0?????1,??????1 IE = 0x85; // ????????????1???? IT0 = 1; // ????1?????????? EX0 = 1; // ??????1?? display(count); // ????????0 while (1); } void key1() interrupt 0 // ????1???? { delay(10); // ????? if (key == 0) { // ?????????? count++; // ????1 if (count == 10) count = 0; // ????? display(count); // ??????? } }
时间: 2023-08-25 09:06:53 浏览: 129
duojikongzhi.rar_Unsigned_c++include <reg51>
此代码已经进行了一些修改:
1. 将unsigned intbit改为unsigned int,原代码中没有bit这个类型;
2. 将注释中的中文符号改为英文符号,以免在编译时出现错误;
3. 修改了中断服务函数的函数名,原代码中为key1,应该改为INT0_ISR或其他符合命名规范的名称;
4. 在中断服务函数中增加了去抖动的处理,避免按键造成的多次计数。
需要注意的是,修改后的代码中,外部中断1的触发方式为下降沿触发,需要在硬件上连接按键K1时注意。另外,中断服务函数中的延时时间可以根据实际情况进行调整。
阅读全文