单片机IO口控制实验,要求每一次按键,蜂鸣器响一次(0.2-1S),同时要求LED1~LED8循环点亮,初始状态或按下KEY1键(松开后保持),只点亮一只LED灯,每隔1秒右循环显示,移到LED8后回到LED1,请写出C语言代码
时间: 2024-06-13 19:08:39 浏览: 132
以下是单片机IO口控制实验的C语言代码:
```c
#include <REGX52.H>
#include "Delay.h"
sbit beep = P2^5;
sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit LED4 = P2^3;
sbit LED5 = P2^4;
sbit LED6 = P2^5;
sbit LED7 = P2^6;
sbit LED8 = P2^7;
sbit KEY1 = P3^0;
void main() {
unsigned char i = 0;
while(1) {
if(KEY1 == 0) {
DelayMs(20);
if(KEY1 == 0) {
beep = 1;
DelayMs(200);
beep = 0;
while(KEY1 == 0);
i++;
if(i > 7) {
i = 0;
}
}
}
switch(i) {
case 0:
LED1 = 1;
LED2 = 0;
LED3 = 0;
LED4 = 0;
LED5 = 0; LED6 = 0;
LED7 = 0;
LED8 = 0;
break;
case 1:
LED1 = 0;
LED2 = 1;
LED3 = 0;
LED4 = 0;
LED5 = 0;
LED6 = 0;
LED7 = 0;
LED8 = 0;
break;
case 2:
LED1 = 0;
LED2 = 0;
LED3 = 1;
LED4 = 0;
LED5 = 0;
LED6 = 0;
LED7 = 0;
LED8 = 0;
break;
case 3:
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 1;
LED5 = 0;
LED6 = 0;
LED7 = 0;
LED8 = 0;
break;
case 4:
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
LED5 = 1;
LED6 = 0;
LED7 = 0;
LED8 = 0;
break;
case 5:
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
LED5 = 0;
LED6 = 1;
LED7 = 0;
LED8 = 0;
break;
case 6:
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
LED5 = 0;
LED6 = 0;
LED7 = 1;
LED8 = 0;
break;
case 7:
LED1 = 0;
LED2 = 0;
LED3 = 0;
LED4 = 0;
LED5 = 0;
LED6 = 0;
LED7 = 0;
LED8 = 1;
break;
}
DelayMs(1000);
}
}
```
阅读全文