用51单片机实现通过串口控制单片机,电脑输入1,led闪烁一下,时长一秒,并返回:-1; 输入2,闪烁两下,时长两秒,返回:-2
时间: 2024-05-08 16:17:21 浏览: 63
51单片机控制led的闪烁
以下是51单片机的代码实现:
```c
#include <reg51.h>
sbit LED = P1^0; // LED连接在P1.0口
void delay(unsigned int t)
{
unsigned int i, j;
for(i = 0; i < t; i++)
for(j = 0; j < 125; j++);
}
void main()
{
SCON = 0x50; // 串口工作方式1,允许接收
TMOD = 0x20; // 定时器1工作方式2,8位自动重装载
TH1 = 0xFD; // 波特率9600,时钟频率12MHz
TL1 = 0xFD;
TR1 = 1; // 启动定时器1
ES = 1; // 使能串口中断
EA = 1; // 使能总中断
while(1);
}
void UART_ISR() interrupt 4
{
static unsigned char count = 0;
unsigned char c = SBUF;
if(c == '1')
{
LED = 1;
delay(1000);
LED = 0;
SBUF = -1;
}
else if(c == '2')
{
LED = 1;
delay(2000);
LED = 0;
SBUF = -2;
}
}
```
串口中断函数 `UART_ISR` 中,通过判断输入的字符是否为 `'1'` 或 `'2'`,来控制 LED 的闪烁。同时,在闪烁完成后,将 `-1` 或 `-2` 发送回电脑。
需要注意的是,串口波特率需要和电脑端的串口波特率相同,才能正确接收和发送数据。本例中设置的波特率为 9600。
阅读全文