#include<reg51.h> sbit shiwei=P2^0; sbit gewei=P2^1; unsigned char time=0; unsigned char code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6,0x7d,0x07,0x7f,0x6f}; void delay(unsigned int z); void disp(unsigned char time); void main() TMOD=0x10; TH1=(65536-50000)/256; TH1=(65536-50000)号256; ET1=1; EA=1; TR1=1; while(1){ disp(time); void disp(unsigned char time) shiwei=0; P2=LED[19/10]; delay(1); shiwei=1; gewei=0; PO=LED[19810]; delay(1); gewei=1; }
时间: 2023-10-14 14:06:05 浏览: 80
这段代码有语法错误,无法编译通过。具体错误如下:
1. 第11行和第12行的TH1赋值语句重复了,应该修改为TL1。
2. 第14行定义disp函数时缺少了函数头的左括号,应该修改为"void disp(unsigned char time){}"。
3. 第16行disp函数中的数字19和19810无意义,应该将其修改为time。
4. 第19行的PO应该修改为P2。
正确的代码应该是这样的:
```c
#include<reg51.h>
sbit shiwei = P2^0;
sbit gewei = P2^1;
unsigned char time = 0;
unsigned char code LED[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6, 0x7d, 0x07, 0x7f, 0x6f};
void delay(unsigned int z);
void disp(unsigned char time);
void main() {
TMOD = 0x10;
TL1 = (65536 - 50000) / 256;
TH1 = (65536 - 50000) % 256;
ET1 = 1;
EA = 1;
TR1 = 1;
while(1) {
disp(time);
}
}
void disp(unsigned char time) {
shiwei = 0;
P2 = LED[time / 10];
delay(1);
shiwei = 1;
gewei = 0;
P2 = LED[time % 10];
delay(1);
gewei = 1;
}
void delay(unsigned int z) {
unsigned int x, y;
for(x = z; x > 0; x--)
for(y = 125; y > 0; y--);
}
```
这段代码的作用是在数码管上显示计时器的计数值,每秒钟加一。其中,disp函数用于在数码管上显示数字,delay函数用于提供延时。
阅读全文