学习心得 串口通信
<p>#include <reg52.h> // 包含51单片机寄存器定义</p><p>// 定义串口通信相关寄存器<br />
sbit LED = P1^0; // 假设LED连接到P1.0</p>
<p>// 串口初始化函数<br />
void UART_Init() {<br />
SCON = 0x50; // 模式1,8位异步串行通信,允许接收<br />
TMOD |= 0x20; // 设置定时器1为模式2(8位自动重装)<br />
TH1 = 0xFD; // 波特率9600(12MHz晶振)<br />
TL1 = 0xFD;<br />
TR1 = 1; // 启动定时器1<br />
ES = 1; // 开启串口中断<br />
EA = 1; // 全局中断开启<br />
}</p>
<p>// 串口发送一个字符<br />
void UART_SendChar(char c) {<br />
SBUF = c; // 将字符写入发送缓冲区<br />
while(!TI); // 等待发送完成<br />
TI = 0; // 清除发送标志<br />
}</p>
<p>// 串口发送字符串<br />
void UART_SendString(char *str) {<br />
while(*str) {<br />
UART_SendChar(*str++);<br />
}<br />
}</p>
<p>// 串口接收中断服务程序<br />
void UART_ISR() interrupt 4 {<br />
if (RI) { // 接收中断标志<br />
char received = SBUF;// 读取接收缓冲区<br />
UART_SendChar(received);// 回传接收到的字符<br />
RI = 0; // 清除接收标志<br />
LED = ~LED; // 点亮/熄灭LED表示接收到数据<br />
}<br />
}</p>
<p>// 延时函数(用于测试)<br />
void Delay(unsigned int ms) {<br />
unsigned int i, j;<br />
for(i = 0; i < ms; i++)<br />
for(j = 0; j < 1275; j++);<br />
}</p>
<p>// 主函数<br />
void main() {<br />
UART_Init(); // 初始化串口<br />
UART_SendString("Hello, World!\r\n");// 发送初始信息</p>
<pre><code>while(1) {
Delay(100); // 模拟其他操作
}
</code></pre>
<p>}</p>
要 做到 USB不停电下载;
要 尝试 AiCube 图形化自动配置生成程序工具;
推荐优先看的:
printf_usb("Hello World !\r\n")及
USB不停电下载, 演示视频链接:
https://www.stcaimcu.com/thread-19077-1-1.html
下载 最新的 AiCube-ISP-V6.96N 或以上版本软件 !
深圳国芯人工智能有限公司-工具软件
下载 最新的 USB库函数,永远用最新的 USB库函数 !
深圳国芯人工智能有限公司-库函数
下载 最新的 用户手册 !
下载 最新的 上机实践指导书 !
下载 最新的 Ai8051U 用户手册
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf
下载 最新的 Ai8051U 实验指导书,
有 AiCube 图形化自动配置生成程序工具使用说明
https://www.stcaimcu.com/data/do ... %AF%BC%E4%B9%A6.pdf
推荐优先看的 printf_usb("Hello World !\r\n")及usb不停电下载, 演示视频链接
https://v.stcai.com/sv/1c5eec2-197fcd9b766/1c5eec2-197fcd9b766.mp4
https://v.stcai.com/sv/1fce8086-197cf2b9dd4/1fce8086-197cf2b9dd4.mp4
{:4_202:}
页:
[1]