tailimo 发表于 2025-2-11 18:08:43

8h8k64u串口使用printf问题

<p>程序:</p>
<p>#include &lt;stdio.h&gt;</p>
<p>#include &lt;STC8H.H&gt;</p>
<p>int MY_putchar(int c) {<br />
while (!TI);<br />
TI = 0;<br />
SBUF = c;<br />
return c;<br />
}</p>
<p>使用串口1:<br />
void Uart1_Init(void)        //2000000bps@40MHz<br />
{<br />
P3M0 = 0x00; P3M1 = 0x00;<br />
SCON = 0x50;                //8位数据,可变波特率<br />
AUXR |= 0x01;                //串口1选择定时器2为波特率发生器<br />
AUXR |= 0x04;                //定时器时钟1T模式<br />
T2L = 0xFB;                        //设置定时初始值<br />
T2H = 0xFF;                        //设置定时初始值<br />
AUXR |= 0x10;                //定时器2开始计时<br />
TI = 1;<br />
}</p>
<p>void main(void)</p>
<p>{</p>
<p>Uart1_Init();</p>
<p>while(1)</p>
<p>{</p>
<p>printf(&quot;AA&quot;r\n);</p>
<p>}</p>
<p>}</p>
<p>这程序串口printf可以正常输出AA字符,</p>
<p>注释掉:<br />
//int MY_putchar(int c) {<br />
//while (!TI);       // 等待发送完成<br />
//TI = 0;            // 清除发送标志<br />
//SBUF = c;          // 将字符写入串口缓冲区<br />
//return c;          // 返回字符<br />
//}</p>
<p>后串口printf不输出,为什么??</p>
<p>我其他地方没有任何改动,也没有定义putchar(定义会报错),而是定义的MY_putchar,,,为什么串口可以正常输出???</p>
<p>这是如何关联到我定义的MY_putchar的?</p>

tailimo 发表于 2025-2-11 22:07:50

wnagming 发表于 2025-2-11 20:38
MY_putchar是你随便写的?这不可能啊

MY_putchar原先是putchar但是使用会报错,我就改了一下,结果反而能用?
怎么可能关联到我写的函数上呢?
但确实可以用

DebugLab 发表于 2025-2-11 22:13:46


printf使用参考:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4598
页: [1]
查看完整版本: 8h8k64u串口使用printf问题