使用keiL中的printf和scanf进行串口的调试 下载本文

内容发布更新时间 : 2024/5/14 0:33:18星期一 下面是文章的全部内容请认真阅读。

使用keiL中的printf和scanf进行串口的调试

1、printf( )和scanf(在包含在stdio.h中

库函数printf( )的发送原理:首先在初始化时要把TI置1,如果不这样做,你的程序是会一直在JNB TI,$这条指令上跑,:

printf( ) 库函数发送流程图

2、使用

C51输入输出函数都是通过串行口工作的,因此,要使用这类函数必须对单片机的串行口进行设置和初始化,如串口模式的选择和波特率的设定等等。 在需要使用printf函数时需要对串口进行初始化:

SCON= 0x52; /*0101,0010:方式1,REN=1允许接收,8-bit UART,TI= 1; RI=0 */ PCON=0; /*SMOD=0*/

TMOD |= 0x20; /*TMOD:定时器T1,工作模式2, 8位自动重载方式,在这里用\是为不影响T0的工作*/

TH1= 0xf3; /*当波特率为2400时,定时器初值*/ TL1= 0xf3;

TR1= 1; /*定时器T1开始运行*/

TI= 1; /*在SCON中已经设置,允许发送数据*/

3、proteus中仿真电路 RXDTXD库函数scanf( )的接收原理:

U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617RTSCTS18XTAL2P116273849DCDDSRRXDRTSTXDCTSDTRRI9RST293031PSENALEEAERRORCOMPIM12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C31RXDTXDRTSCTS

1

(1) (2) (3) (4)

数码管,用于观察是否从串口读得数据

上面虚拟终端观察单片机接受的外部信号是否有 下面虚拟终端观察单片机发送的信号

P1是虚拟串口COMPIM,必须与虚拟串口软件联用

软件

虚拟仪器设置

2

运行

(1)产生HEX

(2)装载HEX

(3)打开虚拟串口

3