以下是单片机实现串口点灯的程序,使用的是51单片机:

#include <reg52.h>

void UART_init(); void UART_send(char c);

void main() { UART_init(); // 初始化串口 while (1) { if (RI) { // 如果接收到数据 RI = 0; // 清除接收标志位 char c = SBUF; // 读取接收到的数据 if (c == '1') { P1 = 0x01; // 点亮P1.0 UART_send('1'); // 发送确认信号 } else if (c == '0') { P1 = 0x00; // 熄灭P1.0 UART_send('0'); // 发送确认信号 } } } }

void UART_init() { TMOD |= 0x20; // 定时器1工作在模式2,自动重载方式 TH1 = 0xFD; // 波特率为9600,定时器初值为0xFD TL1 = 0xFD; // 波特率为9600,定时器初值为0xFD TR1 = 1; // 启动定时器1 SCON = 0x50; // 串口工作在模式1,允许接收 ES = 1; // 允许串口中断 EA = 1; // 允许总中断 }

void UART_send(char c) { SBUF = c; // 发送数据 while (!TI); // 等待发送完成 TI = 0; // 清除发送标志位 }

void UART_isr() interrupt 4 using 1 { if (RI) { RI = 0; // 清除接收标志位 } if (TI) { TI = 0; // 清除发送标志位 } }

程序说明:

  1. 初始化串口,设置波特率为9600,启动定时器1和串口中断。

  2. 进入主循环,等待接收数据。

  3. 如果接收到数据,读取数据并判断是否为'1'或'0'。

  4. 如果为'1',点亮P1.0,并发送确认信号'1'。

  5. 如果为'0',熄灭P1.0,并发送确认信号'0'。

  6. 发送数据时,等待发送完成。

  7. 中断服务程序中,清除接收和发送标志位

单片机实现串口点灯的程序

原文地址: https://www.cveoy.top/t/topic/fbch 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录