#include "reg52.h" #define SMG P0 sbit key1 = P3^1; sbit key2 = P3^0; sbit key3 = P3^2; typedef unsigned int u16; typedef unsigned char u8; void delay(void) { u16 i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); } int main() { while(1) { if(key1 == 0) { delay(20); while(key1 == 0); delay(20); SMG=~(0x06); } else if(key2 == 0) { delay(20); while(key3 == 0) delay(20); SMG=~(0x5b); } else if(key3 == 0) { delay(20); while(key3 == 0); delay(20); SMG=~(0X4F); } } return 0; }修改为正确代码
时间: 2024-02-14 12:10:44 浏览: 24
这段代码的问题在于第二个按键的判断条件错误,应该判断key2是否为0,而不是key3。以下是修改后的代码:
```c
#include "reg52.h"
#define SMG P0
sbit key1 = P3^1;
sbit key2 = P3^0;
sbit key3 = P3^2;
typedef unsigned int u16;
typedef unsigned char u8;
void delay(void) {
u16 i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
int main() {
while(1) {
if(key1 == 0) {
delay(20);
while(key1 == 0);
delay(20);
SMG=~(0x06);
}
else if(key2 == 0) {
delay(20);
while(key2 == 0);
delay(20);
SMG=~(0x5b);
}
else if(key3 == 0) {
delay(20);
while(key3 == 0);
delay(20);
SMG=~(0X4F);
}
}
return 0;
}
```
修改后的代码中,第二个按键的判断条件已经修正为key2。