C51单片机实现(4)要求从电脑端串口发送两个数字(两个数字之间用空格隔开),单片机能够返回这两个数字之和例如发送5 6,返回11.。代码
(在接收缓冲区返回和
C51单片机实现(4)要求从电脑端串口发送两个数字(两个数字之间用空格隔开),单片机能够返回这两个数字之和例如发送5 6,返回11.。代码
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注该回复引自免费微信小程序-皆我百晓生:
以下是C语言代码,用于在C51单片机上实现从计算机串口发送两个数字,并返回它们的和:
#include <reg52.h> void UART_init() { TMOD |= 0x20; // 设置计数器1为模式2 SCON = 0x50; // 设置串口为模式1,允许接收 TH1 = 0xFD; // 设置波特率为9600 TL1 = 0xFD; TR1 = 1; // 启动计数器1 } unsigned char UART_receive() { unsigned char data; while (!RI); // 等待接收完成 data = SBUF; // 读取接收到的数据 RI = 0; // 清除接收中断标志位 return data; } void UART_send(unsigned char data) { while (!TI); // 等待发送完成 SBUF = data; // 发送数据 TI = 0; // 清除发送中断标志位 } void main() { unsigned char num1, num2; unsigned int sum; UART_init(); while (1) { UART_send('E'); // 发送请求给计算机 num1 = UART_receive() - '0'; // 接收第一个数字 UART_send(num1 + '0'); // 发送确认接收的第一个数字 while (UART_receive() != ' '); // 等待接收到数字之间的空格 num2 = UART_receive() - '0'; // 接收第二个数字 UART_send(num2 + '0'); // 发送确认接收的第二个数字 sum = num1 + num2; // 计算两个数字之和 UART_send(' '); // 发送数字之间的空格 UART_send(sum / 10 + '0'); // 发送求和结果的十位数 UART_send(sum % 10 + '0'); // 发送求和结果的个位数 } }以上代码使用C语言编写,并在C51单片机上通过串口与计算机通信。单片机会接收计算机发送的两个数字,并计算它们的和,然后将结果发送回计算机。
解决 无用评论 打赏 举报