关于单片机(c语言)串行通信的printf的用法和SCON中TI的问题
答案:3 悬赏:10 手机版
解决时间 2021-11-22 03:58
- 提问者网友:欺烟
- 2021-11-22 00:45
关于单片机(c语言)串行通信的printf的用法和SCON中TI的问题
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-11-22 02:00
问题一:printf语句在向串口发送字符之前,有一汇编语句判断 TI 是否为 1 (TI 为是表明一个字符发送完毕),若为 0 则等待,语句如下:
C:0x040C 3099FD JNB TI(0x98.1),C:040C
其目的是等待前一字符发送完毕,才发下一字符。所以初始化串口时必须加一句:TI = 1,否则,程序就在上一个汇编语句上死循环。
问题二:要用printf必须先初始化串行口!
C:0x040C 3099FD JNB TI(0x98.1),C:040C
其目的是等待前一字符发送完毕,才发下一字符。所以初始化串口时必须加一句:TI = 1,否则,程序就在上一个汇编语句上死循环。
问题二:要用printf必须先初始化串行口!
全部回答
- 1楼网友:长青诗
- 2021-11-22 03:00
问题一:
SCON=0x50; //串行口初始化
TMOD|=0x20;
TH1=0xf3;
TR1=1
设置好波特率后,TI置1,向mcu申请要发送数据:等哈只要碰到_getkey ,putchar 函数,麻烦把格式化输出的参数帮我送到buffer 。如果是0的话,他会傻傻的等待,直到她[1]的出现。因为在putchar函数中有着关键的一句:
while (!TI);
TI = 0;
return (SBUF = c);
问题二:
打印信息用到串口,需要串口初始化。
SCON=0x50; //串行口初始化
TMOD|=0x20;
TH1=0xf3;
TR1=1
设置好波特率后,TI置1,向mcu申请要发送数据:等哈只要碰到_getkey ,putchar 函数,麻烦把格式化输出的参数帮我送到buffer 。如果是0的话,他会傻傻的等待,直到她[1]的出现。因为在putchar函数中有着关键的一句:
while (!TI);
TI = 0;
return (SBUF = c);
问题二:
打印信息用到串口,需要串口初始化。
- 2楼网友:杯酒困英雄
- 2021-11-22 02:26
的时候会有8.51%的误差,会传输错误,你一定要用12M的话采用2400波特率,只有0.21%(好像忘了)。可以凑合,一定是这样的,相信我,我很有体会!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯