cc2530单片机输入“#LED21”开始运行跑马灯,“#LED22”暂停跑马灯,“#LED23”关灯代码
时间: 2023-09-21 15:08:22 浏览: 70
好的,下面是一个简单的cc2530单片机程序,可以实现输入“#LED21”开始运行跑马灯,“#LED22”暂停跑马灯,“#LED23”关闭LED灯的功能。请注意,这只是一个示例代码,你需要根据你的具体需求进行修改和优化。
```c
#include <ioCC2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define LED3 P1_2
#define UART_TX P0_4
#define UART_RX P0_5
volatile unsigned char command = 0;
void initUART() {
U0CSR |= 0x80; // 选择UART模式
P0SEL |= 0x30; // P0.4和P0.5选择UART功能
U0GCR |= 11; // 波特率为115200
U0BAUD |= 216; // 波特率为115200
U0CSR |= 0x40; // 允许接收UART数据
IEN0 |= 0x84; // 允许UART中断和总中断
}
#pragma vector=URX0_VECTOR
__interrupt void UART_ISR() {
command = U0DBUF;
U0CSR &= ~0x40; // 清除接收中断标志
}
void delay() {
unsigned int i, j;
for (i = 0; i < 10000; i++) {
for (j = 0; j < 100; j++) {
asm("NOP");
}
}
}
void main() {
P1SEL &= ~0x07; // P1.0、P1.1、P1.2选择GPIO功能
P1DIR |= 0x07; // P1.0、P1.1、P1.2设置为输出
initUART();
while (1) {
if (command == '#') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'L') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'E') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'D') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == '2') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == '1') {
LED1 = 1;
LED2 = 0;
LED3 = 0;
while (1) {
LED1 = ~LED1;
delay();
if (command == '#') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'L') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'E') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'D') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == '2') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == '2') {
LED2 = 1;
LED1 = 0;
LED3 = 0;
break; // 跳出while (1)循环
}
}
}
}
}
}
}
}
}
}
}
} else if (command == '#') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'L') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'E') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == 'D') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == '2') {
command = 0;
while (command == 0); // 等待接收完整命令
if (command == '3') {
LED1 = 0;
LED2 = 0;
LED3 = 1;
}
}
}
}
}
}
}
}
}
```
在这个程序中,我们使用了一个命令变量来接收从串口接收到的命令。当我们收到“#”字符时,我们开始等待接收完整的命令。如果命令是“#LED21”,那么我们开始跑马灯;如果命令是“#LED22”,那么我们暂停跑马灯;如果命令是“#LED23”,那么我们关闭LED灯。
在跑马灯过程中,我们使用了一个delay函数来产生一定的延迟,从而实现跑马灯的效果。在每次循环中,我们检查是否收到了新的命令。如果收到了“#LED22”命令,那么我们停止跑马灯并等待新的命令;如果收到了“#LED23”命令,那么我们关闭LED灯并退出跑马灯循环。
希望这个程序能够帮助你实现你的需求!
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)