#include <reg51.h> sbit key = P3^3; sbit LED = P0^0; unsigned char key_down; void delay(unsigned int delay_time) { unsigned int j = 0; for(;delay_time > 0;delay_time--) { for(j = 0;j < 125 ; j++); } } void key_pressed(void) { if(key == 1); { delay(20); if(key == 1) key_down = 1; } if((key == 0)&&(key_down == 1)) { LED = !LED; key_down = 0; } } void main(void) { P0 = 0x00; while(1); key_pressed(); }哪里出问题了
时间: 2023-12-09 09:06:53 浏览: 43
这段代码有几个问题:
1. `while(1);` 这一行会导致程序永远停留在这里而无法执行其它代码,应该删除分号,改为 `while(1)`。
2. `if(key == 1);` 这一行的分号将会导致 if 语句失效,应该删除分号。
3. `if((key == 0)&&(key_down == 1))` 这一行的括号多余,应该改为 `if(key == 0 && key_down == 1)`
修改后的代码如下:
```
#include <reg51.h>
sbit key = P3^3;
sbit LED = P0^0;
unsigned char key_down;
void delay(unsigned int delay_time)
{
unsigned int j = 0;
for(;delay_time > 0;delay_time--)
{
for(j = 0;j < 125 ; j++);
}
}
void key_pressed(void)
{
if(key == 1)
{
delay(20);
if(key == 1)
key_down = 1;
}
if(key == 0 && key_down == 1)
{
LED = !LED;
key_down = 0;
}
}
void main(void)
{
P0 = 0x00;
while(1)
{
key_pressed();
}
}
```
请注意,这只是针对问题的解答,并不代表代码在其他方面没有问题。如果您需要更全面的代码评估,请提供更多细节。