小白,先备份一下~~~
C8051F320串口调试,实现功能:
电脑发送数据,单片机接收,并返回,可根据led等检测状态。
遇到问题:
1.主函数中flag需在末尾清0,否则if后面的语句会发送两遍
2.发送字符必须先关串口中断,不然后续数据会无法发送等各种奇怪问题
3.时钟源配置,定时器,端口输入输出配置,再三检查,接收出现乱码很可能是波特率配置等问题
4.****重要*****串口发送接收数据方向一定需要清楚,接收缓存和发送缓存公用一个地址,更具数据方向来判断发送/接收
SBUF0 = xxx; //数据xxx存到发送缓存,并发送(一字节一字节的发送),并行数据–到--串行数据
xxx = SBUF0; //接收缓存器读取数据(一字节一字节的读取),并赋值到xxx,串行数据–到--并行数据
5.还未解决问题:内部振荡器配置11.0592MHz(后续需解决)
读取寄存器值11.0590已经写进去,但未启用(接收数据乱码),目前认为可能是时钟恢复电路使能。目前仍然用的12的频率。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
#include <c8051f320.h>
void delay_ms(int x);
void port_init();
void int_osc_110592();
void time1_2();
void uart_transmit(unsigned char xxx);
void send_str(unsigned char* p);
unsigned char flag;
unsigned char table[]="I get ";
int r,i;
unsigned char rrr[20];
sbit led1=P2<