单片机与PC通信-(proteus与虚拟串口驱动软件以及串口调试助手地仿真) 下载本文

实用标准

6、 (1)将“程序”在Keil软件中编译生成“HEX”文件,加载到仿真图中的AT89C52中,启动仿真

图1.9

文案大全

实用标准

(2)按下图1.7中串口调试助手的“连接”按钮,在串口调试助手的”发送窗口”,依次输入1、2、3、4和5,发送后可以看到单片机返回的字符串一次显示在接收窗口。

如下图所示

文案大全

实用标准

实验程序

#include #include #include #include #include #include

#define byte unsigned char #define uchar unsigned char #define word unsigned int #define uint unsigned int #define ulong unsigned long #define BYTE unsigned char #define WORD unsigned int

#define TRUE 1 #define FALSE 0

void time(unsigned int ucMs); void initUart(void);

void sendString(uchar *ucString);

void main(void) {

time(1); initUart(); IE=0x90;

while(TRUE){} }

void initUart(void) {

SCON =0x50; //选择串口工作方式,打开接收允许

文案大全

实用标准

RCAP2H=(65536-(3456/96))>>8; RCAP2L=(65536-(3456/96))%6; T2CON=0x34;

//启动定时器T1 }

void serial0_int(void) interrupt 4 {

uchar rChar;

uchar code str1[]=\ uchar code str2[]=\ uchar code str3[]=\

uchar code str4[]=\

uchar code strdefault[]=\

EA=0; RI=0;

rChar=SBUF; P2=rChar;

switch(rChar) {

case '1':

SBUF='1';while(TI==0) {} TI=0; SBUF=':';while(TI==0) {} TI=0; sendString(str1); break;

case '2':

SBUF='2';while(TI==0) {} TI=0; SBUF=':';while(TI==0) {} TI=0; sendString(str2); break; case '3':

SBUF='3';while(TI==0) {} TI=0; SBUF=':';while(TI==0) {} TI=0; sendString(str3); break; case '4':

文案大全

实用标准

SBUF='4';while(TI==0) {} TI=0; SBUF=':';while(TI==0) {} TI=0; sendString(str4); break; default:

SBUF='d';while(TI==0) {} TI=0; SBUF=':';while(TI==0) {} TI=0; sendString(strdefault); break; } EA=1; }

void sendString(uchar *ucString) {

uchar i,stringLength=strlen(ucString); REN=0;

for(i=0;i

SBUF=ucString[i];while(TI==0); TI=0; }

SBUF=0x0d;while(TI==0) ; TI=0; SBUF=0x0a;while(TI==0) ; TI=0; SBUF=0x0a;while(TI==0) ; TI=0; REN=1; }

void delay_5us(void) {

_nop_() ; _nop_() ; }

void delay_50us(void)

{ unsigned char i; for(i=0;i<4;i++); {

delay_5us(); } }

void delay_100us(void)

文案大全