单片机和上位机交互通讯的简单源程序.docxVIP

  • 12
  • 0
  • 约1.15千字
  • 约 3页
  • 2020-08-30 发布于江苏
  • 举报

单片机和上位机交互通讯的简单源程序.docx

一个用于单片机和上位机通讯的简单程序, 程序中采用 2400 波特率, 11.0592M 晶振,8 位, 无校验。 程序采用了简单的握手协议也就说当 PC机通讯软件发小写字母 j 的时候, 单片机再回应字符串 jLQGk 给上位机。 你可采用串口调试助手配合完成你的实验, 也可 以采用 proteus 软件中的虚拟终端进行仿真调试, 后者很方便。 晶振 12M时波特率因子 为 F3H,11.0592M 时定时因子为 F4H,均可正常通讯。 ORG 0000H SJMP MAIN ; 转主程序 ORG 0023H AJMP SINTER ; 串行中断 ORG 0030H MAIN: NOP NOP RESET: MOV SP,#60H MOV SCON,#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 ACC PUSH PSW CLR PSW.4 SETB PSW.3 JNB RI,$ CLR RI RVDATA: 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,#30H SENDLOOP:MOV A,@R0 CALL SBYTE ;[2] 发送数据块 3 字节 INC R0 DJNZ R1,SENDLOOP MOV A,#k ;[3] 发结束标志 k CALL SBYTE LEND: NOP NOP POP PSW POP ACC SETB ES NOP NOP RETI ;------------------------------------ SBYTE: NOP NOP MOV SBUF,A JNB TI,$ CLR TI RET ;---------------------------------- END (下图中勾选的选项表示, 键盘输入的内容也显示在终端屏幕上, 否则键盘输入不显示, 仅仅显示单片机终端发来的内容,其他选项不细述,快去试试吧,很好玩的, lqg )

文档评论(0)

1亿VIP精品文档

相关文档