cc2530有关问题: 程序刚上电时,实验板呈现流水灯状态,时间间隔为500ms,按下按键后(手不挪开),流水灯暂停,手挪开后,从刚才暂停的位置继续执行。请用程序实现。四个灯的IO口定义为P1.0,P1.1,P1.3和P1.4。提示:利用while(!P1_2);的暂停作用。
时间: 2023-05-22 15:04:25 浏览: 84
以下是利用C语言编写的程序实现:
```
#include <cc2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define LED3 P1_3
#define LED4 P1_4
void delay(unsigned int t);
void main(void) {
P1SEL &= ~(BIT0 + BIT1 + BIT3 + BIT4); // P1.0, P1.1, P1.3, P1.4设为GPIO
P1DIR |= (BIT0 + BIT1 + BIT3 + BIT4); // P1.0, P1.1, P1.3, P1.4设为输出
LED1 = LED2 = LED3 = LED4 = 1; // 所有灯熄灭
while(1) {
LED1 = 0; // 点亮LED1
delay(500);
LED1 = 1;
LED2 = 0; // 点亮LED2
delay(500);
LED2 = 1;
LED3 = 0; // 点亮LED3
delay(500);
LED3 = 1;
LED4 = 0; // 点亮LED4
delay(500);
LED4 = 1;
// 等待按键按下
while(!P1_2);
// 等待按键释放
while(P1_2);
}
}
// 延时函数
void delay(unsigned int t) {
unsigned int i, j;
for(i = 0; i < t; i++) {
for(j = 0; j < 500; j++);
}
}
```
程序启动后,四个LED灯会依次点亮,每个灯都持续500ms。按下按键后,程序会暂停在当前灯的位置,直到按键释放后再继续执行,实现了题目要求的流水灯暂停的效果。
阅读全文