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

📄 主机.asm

📁 该程序与先前上传的从机程序相配套
💻 ASM
字号:
;*************************************************************
;   1.完成从PC机接收报文信息然后转发给从机
;   2.完成接收从机送来的报文信息然后转发给PC机
;*************************************************************
        DATA2051  EQU     P1
         CFS      BIT     P3.2       ;CFS作为从机向主机发数据的通知线
         HFS      BIT     P3.3       ;HFS作为主机向从机发数据的通知线
        MANG      BIT     P3.4       ;MANG作为主、从机忙标志线
        REQUEST   EQU     "?"        ;发送请求信号
        TONG      EQU     "="        ;通道建立信号
        ENDSIGN   EQU     02H        ;控制命令结束符
        REQCOME   BIT     20H.0      ;请求到达标志
          ISYES   BIT     20H.1      ;同意/拒绝标志

;*************************************************************
        ORG   0000H
        AJMP  START
        ORG   0003H
        AJMP  BINGKOU
        ORG   0023H
        AJMP  PCTOMCU
        ORG   100H
;*************************************************************
START: MOV    SP,#60H
                                     ;初始化
       MOV    TMOD,#20H              ;设置定时器1为方式2(做波特率发生器,晶振11.0592M)
       MOV    TH1,#0F4H              ;T1初始值设置(BAUD RATE=2400 BIT/S)
       MOV    TL1,#0F4H
       SETB   EA                     ;CPU允许中断
       SETB   ES                     ;允许串口中断
       SETB   EX0                    ;允许外部0中断
       SETB   IT0                    ;外部中断0为边沿触发
       SETB   PX0                    ;外部中断0为高优先级
       MOV    SCON,#50H              ;设置串口为方式1(8个数据位)
       SETB   TR1                    ;启动定时器1
       MOV    P1,#0FFH
       SETB   CFS                    ;预设主机闲
       SETB   HFS                    ;预设从机闲
       SETB   MANG                   ;预设未准备好或未完成
       CLR    REQCOME                ;预设未收到请求
       CLR    ISYES                  ;预设拒绝状态
;****************************************************
HERE:  JNB    REQCOME,$              ;等待请求信号
HERE0: JNB    MANG,$
       CLR    MANG
       SETB   ISYES                  ;允许接收数据
HERE1: MOV    SBUF,#TONG             ;回"="给PC机
       JNB    TI,$
       CLR    TI
       CLR    REQCOME
       AJMP   HERE

;******************************************************
;    串口接收PC机报文数据中断服务程序

PCTOMCU: PUSH   PSW
         PUSH   A
         JNB    RI,NEXT                ;TI=1,为发送中断
         CLR    RI                     ;清接收中断标志
         MOV    A,SBUF                 ;读出串口接收的数据
         JB     ISYES,DOREC
         CJNE   A,#REQUEST,NEXT        ;判断是否有请求?到来
         SETB   REQCOME                ;收到?标志=1
         AJMP   NEXT

DOREC:   MOV    P1,A                   ;转发数据
         CLR    HFS                    ;延时等待并口接收
         MOV    R7,#15
         DJNZ   R7,$
         SETB   HFS
         ;MOV    P1,#0FFH
         CJNE   A,#ENDSIGN,NEXT        ;判断报文发送是否完毕
         MOV    P1,#0FFH
         SETB   MANG
         CLR    ISYES
NEXT:    POP    A
         POP    PSW                    ;中断返回
         RETI
;*******************************************************
;    并口接收从机发来报文数据中断服务程序
BINGKOU: PUSH   PSW
         PUSH   A
         MOV    A,P1
         NOP
PINREC:  CJNE   A,#ENDSIGN,PINREC1     ;判断控制命令结束符到达否
         MOV    SBUF,#ENDSIGN
         MOV    P1,#0FFH
         JNB    TI,$
         CLR    TI

NEXTB:   POP    A
         POP    PSW
         RETI                          ;中断返回

PINREC1: MOV    SBUF,A                 ;发送报文
         JNB    TI,$
         CLR    TI
         AJMP   NEXTB
         END

⌨️ 快捷键说明

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