KeilC51使用printf输出到串口打印的实现

来源:互联网 发布:穆赫兰道 知乎 编辑:程序博客网 时间:2024/05/24 03:31
1.在keil中printf默认是向串口中发送数据的,在完成串口0的初始化之后便可以使用。Keil\C51\LIB目录下有个putchar.c文件,printf函数会调用该文件中的putchar函数,putchar里面的使用的寄存器都是标准51的sfr(如TI,SBUF),它们的地址是固定的,由此可知printf函数只针对串口0。
2.printf函数是调用putchar函数输入的,而putchar应该是先判断TI是否为1,不为1则等待为1。如果为1则清0,然后送出一 个字符。因此你如果直接使用printf函数,你的程序就会在putchar函数中等待TI为1。这时你的程序就相当于直接死掉了。你可以通过改写 putchar函数实现自己的目的的。
3.<stdio.h>中定义printf函数,调用底层的putchar()来实现.底层发送数据到串口时,先查TI=1是否成立,死等直到TI=1时将新数据写入SBUF,函数返回,所以要先将TI置1,启动第一次传输操作.可查看反汇编相关代码理解其工作机理!
4.如果只是用printf输出字符串的话还是自己编个函数吧,因为printf要处理各类数据的输出,占用代码空间很大,我试了一下,程序里就一条printf语句,code就1K了,而且printf执行起来也慢。


0 0
原创粉丝点击