《单片机和上位机交互通讯的简单源程序.doc》由会员分享,可在线阅读,更多相关《单片机和上位机交互通讯的简单源程序.doc(3页珍藏版)》请在三一文库上搜索。
1、一个用于单片机和上位机通讯的简单程序,程序中采用2400波特率,11.0592M晶振,8位,无校验。程序采用了简单的握手协议也就说当PC机通讯软件发小写字母j的时候,单片机再回应字符串jLQGk给上位机。你可采用串口调试助手配合完成你的实验,也可以采用proteus软件中的虚拟终端进行仿真调试,后者很方便。晶振12M时波特率因子为F3H,11.0592M时定时因子为F4H,均可正常通讯。 ORG 0000H SJMP MAIN ;转主程序 ORG 0023H AJMP SINTER ;串行中断 ORG 0030HMAIN: NOP NOPRESET: MOV SP,#60H MOV SCON,
2、#50H ;8位UART,串行通道工作方式1,REN=1,允许接收 MOV PCON,#0 ;波特率不加倍,RB8=TB8=RI=TI=0 MOV TMOD,#21H ;T1方式2(波特率发生器) MOV TH1,#0F3H MOV TL1,#0F3H ;波特率=2400(+0.16%) SETB ET0 ;T0开中断 SETB TR0 ;T0运行 CLR ET1 ;禁止定时器溢出中断 SETB TR1 ;启动定时器T1 SETB PS ;串行通讯中断优先级为高 SETB ES ;开串行通讯中断 SETB EA ;开总中断 SJMP $;-SINTER: NOP NOP CLR ES PUSH
3、 ACC PUSH PSW CLR PSW.4 SETB PSW.3 JNB RI,$ CLR RIRVDATA: MOV A,SBUF CJNE A,#j,LEND ;0握手字节j,否则退出 MOV A, #j ;1发送准备信号j CALL SBYTE MOV 30H,#L MOV 31H,#Q MOV 32H,#G MOV R1,#3 MOV R0,#30HSENDLOOP:MOV A,R0 CALL SBYTE ;2发送数据块3字节 INC R0 DJNZ R1,SENDLOOP MOV A,#k ;3发结束标志k CALL SBYTELEND: NOP NOP POP PSW POP ACC SETB ES NOP NOP RETI;-SBYTE: NOP NOP MOV SBUF,A JNB TI,$ CLR TI RET;- END(下图中勾选的选项表示,键盘输入的内容也显示在终端屏幕上,否则键盘输入不显示,仅仅显示单片机终端发来的内容,其他选项不细述,快去试试吧,很好玩的,lqg)