⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m31pc.asm

📁 c语言和汇编语言混合编程实例详解.rar
💻 ASM
字号:
;/*********************************************************************
;*这是在51系列单片机上运行的程序,文件名为m31pc.asm
;*功能:51系列单片机作为分站与上位机(PC机或工控机)通讯,
;*      带RS232接口 ,T1作波特率发生器, 波特率为1200,
;*      通讯靠串行中断服务程序实现,与上位机通讯的主要流程为:
;*      中断接受上位机发来的地址信息,看是否是给本站发来的,
;*      若是, 接受后续的15个字节,然后发送43个字节。若不是,
;*      则不予理睬。 配套上位机程序为xsa2.c。 
;**********************************************************************/

     ORG 0000H
STAT:AJMP MAIN       ;复位入口
     ORG 000BH
     AJMP TIME
     ORG 0023H
     AJMP SIO1
TIME:MOV TL0,#0F0H   ;定时器中断
     MOV TH0,#0D8H
     PUSH ACC
     PUSH PSW
     MOV PSW,#0
     MOV R1,#16H
     MOV A,@R1
     ADD A,#01H
     DA A
     MOV @R1,A
     POP PSW
     POP ACC
     RETI
MAIN:MOV SP,#28H     ;主程序
     MOV PSW,#0
     MOV 4FH,#20H
     MOV 4EH,#10H
     MOV 4DH,#20H
     MOV 4CH,#60H
     MOV TMOD,#25H
     MOV TL0,#0F0H
     MOV TH0,#0D8H
     SETB PS
     SETB ET0
     SETB EA
     SETB TR0
     MOV PCON,#00H
     MOV TH1,#0F3H    ;6mhz, smod=0,600== e6;1200==0xf3
     MOV TL1,#0F3H
     SETB TR1
     MOV SCON,#0F0H
     SETB ES
     LCALL SDATA
HERE:SETB RS0
     CLR RS1
     NOP
     NOP
     NOP
     LJMP HERE
SIO1:PUSH ACC       ;串行口中断
     PUSH PSW
     PUSH DPH
     PUSH DPL
     JNB RI,TX
     JNB SM2,NO0
     MOV A,SBUF
     CJNE A,#01H,NOADS
     CLR SM2
NOADS:CLR RI
     POP DPL
     POP DPH
     POP PSW
     POP ACC
     RETI
NO0: MOV A,SBUF
     MOV DPH,4FH
     MOV DPL,4EH
     MOVX @DPTR,A
     INC DPTR
     MOV 4FH,DPH
     MOV 4EH,DPL
     SJMP TX3
TX:  JNB TI,TX2
TX1: MOV DPH,4DH
     MOV DPL,4CH
     MOVX A,@DPTR
     MOV SBUF,A
     INC DPTR
     MOV 4DH,DPH
     MOV 4CH,DPL
     MOV A,#8AH        ;42
     CJNE A,DPL,TX2
     NOP
     MOV 4DH,#20H
     MOV 4CH,#60H
     MOV SCON,#0F0H
LOO1:JNB TI,LOO1
TX2: CLR RI
     CLR TI
     POP DPL
     POP DPH
     POP PSW
     POP ACC
     RETI
TX3: MOV A,#1FH       ;15
     CJNE A,DPL,TX2
     MOV 4FH,#20H
     MOV 4EH,#10H
     MOV SCON,#0E8H
     MOV SBUF,#0FFH
     CLR TB8
     CLR SM2
     SJMP TX2
SDATA:MOV DPTR,#2060H ;发送数据区初始化
      MOV R0,#42
      MOV A,#01
SD:   MOVX @DPTR,A
      INC DPTR
      INC A
      DJNZ R0,SD
      RET
      END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -