怎么用51编写一段串口发送程序,发送字符串“zhao jun”,字符串以方式3发送出去,fosc为12MHz,波特率9.6kbps啊
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
51单片机串口通信方式3如何使用
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
【以下回答由 GPT 生成】
答案:
这段代码是用于在51单片机上编写串口发送程序,使用方式3发送字符串“zhao jun”,其中单片机的时钟频率为12MHz,波特率为9.6kbps。
代码解释如下:
06-09行:声明并定义一个名为usart_init的函数,用于初始化串口通信。该函数没有输入参数,也没有返回值。 - TMOD = 0x20; 设置定时器模式为8位自动重装载模式。 - TH1 = 0xED; 设置定时器1的高8位为0xED,用于控制波特率。 - TL1 = 0xED; 设置定时器1的低8位为0xED,用于控制波特率。
14行:打开定时器1。 - TR1 = 1; 将TR1置为1,启动定时器1。
16行:配置串口通信参数。 - SCON = 0xF0; 配置串口控制寄存器,设置串口为模式3,允许接收数据。
18行:打开串口中断。 - ES = 1; 将ES置为1,允许串口中断。
20行:打开总中断。 - EA = 1; 将EA置为1,允许总中断。
22-31行:主函数。 - void main():主函数的声明,表示程序的入口。 - usart_init(); 调用usart_init函数,初始化串口通信。 - while(1); 程序进入死循环,保持运行状态。
33-44行:串口中断处理函数。 - void usart() interrupt 4:声明一个中断处理函数,该函数会在串口中断发生时自动执行。 - unsigned char receiveData; 声明一个无符号字符型变量receiveData,用于存储接收到的数据。 - receiveData = SBUF; 将接收到的数据存储到receiveData中。 - RI = 0; 清除接收中断标志位。 - SBUF = receiveData; 将receiveData的值发送出去。 - while (!TI); 等待发送完成。 - TI = 0; 清除发送中断标志位。
总结: 以上代码是用于在51单片机上编写串口发送程序,使用方式3发送字符串“zhao jun”,其中单片机的时钟频率为12MHz,波特率为9.6kbps。通过初始化串口通信、配置串口控制寄存器和定时器,以及设置中断处理函数,实现了串口发送功能。
【相关推荐】
- 这篇博客: 单片机(AT89C51)定时/计数器实验案例中的 实验一(已知8051单片机的fosc=12MHz用T1定时,试编程由P1.0引脚分别输出周期为2ms的方波) 部分也许能够解决你的问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
- ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
- ¥30 不会,学习,有偿解答
- ¥15 SQL查询语句报错(检查)
- ¥15 此表中公式应该怎么写
- ¥15 求HI-TECH PICC 9.50 PL3安装包
- ¥15 下载ctorch报错,求解
- ¥15 如何入门学习c语言,单片机
- ¥15 idea 编辑语言的选择
- ¥15 Windows下部署Asmjit