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

📄 jrmaincpu.asm

📁 用增强型单片机51RD2做的控制器
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                LJMP    Main
Main9:          CJNE    A,#14H,Main10
                LCALL   InToSysSetup            ; 进入系统设置
                LJMP    Main
Main10:         CJNE    A,#15H,Main11
              ;  LCALL   YhSySm                  ; 用户使用说明页面显示控制程序
                LJMP    Main
Main11:         CJNE    A,#16H,Main12
                NOP
Main12:         LJMP    Main




;
;   ******  检测地面电源系统预备信号  ******
;
JcXtYbXh:       JB      ShowDtSjF,JcXtYbXh1
                RET
JcXtYbXh1:      CLR     ShowDtSjF
                LCALL   ReadNearDat             ; 读 CPU2 数据
                MOV     A,KglStatus             ; 开关量状态寄存器
                JNB     ACC.3,JcXtYbXh2         ; KglStatus.0 = 0 预备开 ,  KglStatus.0 = 1 预备关

                CLR     AutoRunF
;                SETB     AutoRunF
                RET
JcXtYbXh2:      SETB    AutoRunF
                LCALL   ClrReportBuf            ; 清运行报告缓冲区(32Byte)
                RET


AutoUserPass:   JB     AutoRunF,AutoUserPass1
                RET
AutoUserPass1:  NOP



;
;       ******  读近程 CPU2 数据  ******
;
ReadNearDat:    MOV     CallAddr,#01H
                MOV     FuncCode,#SendCpu2Func08; 读开关量状态
                LCALL   SendToSpdCpu
                RET

;
;       ******  工作状态初始化  ******
;
WorkStateInit:  MOV     RunMode,#0
                RET

;
;       ******  接收键盘数据  ******
;
ScanKey:
                JB      CommandBF,ScanKey1      ; 近程键标志
                JB      CommandAF,ScanKey2      ; 近程速度CPU
                JB      FarKeyF,ScanKey3        ; 远程键标志
                RET
ScanKey1:       LCALL   KeyBp
                SETB    KeyF
                CLR     CommandBF
                RET
ScanKey2:
                LCALL   KeyBp
                SETB    KeyF
                CLR     CommandAF
                RET
ScanKey3:       LCALL   KeyBp
                SETB    KeyF
                CLR     FarKeyF
                LCALL   ReturnKeyNum             ; 返回键值
                RET
;
;   ******  有键按下蜂鸣器“滴”一声  ********
;
KeyBp:          CLR     FmqCtrl
                LCALL   DL100MS
                SETB    FmqCtrl
                LCALL   Openlight
                RET

;
;       ******  返回键值  ********
;
ReturnKeyNum:   CLR     PSW.3                   ; RX : PAGE 2
                SETB    PSW.4
                MOV     R1,#SendBuf
                MOV     A,KeyNumber
                MOVX    @R1,A
                INC     R1
                MOV     A,InterFace             ; 界面记录
                MOVX    @R1,A
                INC     R1

                MOV     CallAddr,#FarPcAdr      ; 远程控制PC地址
                MOV     FuncCode,#SendCpu1Func16; 接收键盘确认码
                LCALL   DataToFarPC             ; 发送一条记录到远程(PC)终端
                CLR     PSW.3                   ; RX : PAGE 2
                CLR     PSW.4
                RET
;
;       ******  面板 LED 驱动  ******
;
LedDrive:       MOV     R7,#08H
                NOP
LedDrive1:      RLC     A
                MOV     SerialDat,C
                NOP
                CLR     SerialClk
                NOP
                NOP
                SETB    SerialClk
                NOP
                NOP
                DJNZ    R7,LedDrive1
                RRC     A
                SETB    SerialDat
                RET

Watchdog:       ret
;
;       ******  清通信接收缓冲区(32Byte)  ******
;
ClrRecvBuf:     MOV     R1,#RecvBuf
                MOV     R2,#32
ClrRecvBuf1:    MOV     A,#00H
                MOVX    @R1,A
                INC     R1
                DJNZ    R2,ClrRecvBuf1
                RET

;
;       ******  清运行报告缓冲区(32Byte)  ******
;
ClrReportBuf:   MOV     R1,#ReportBuf
                MOV     R2,#32
ClrReportBuf1:  MOV     A,#00H
                MOVX    @R1,A
                INC     R1
                DJNZ    R2,ClrReportBuf1
                RET

;
;   ******  返回远程显示板密码正确信息  ******
;
SendFarXsbMaZq: CLR     PSW.3                   ; RX : PAGE 2
                SETB    PSW.4
                MOV     CallAddr,#FarShowAdr    ; 远程显示板地址
                MOV     FuncCode,#SendCpu1Func32; 显示板密码正确确认信息
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                CLR     PSW.3                   ; RX : PAGE 0
                CLR     PSW.4
                RET

;
;   ******  返回远程显示板密码错误信息  ******
;
SendFarXsbMaCw: CLR     PSW.3                   ; RX : PAGE 2
                SETB    PSW.4
                MOV     CallAddr,#FarShowAdr    ; 远程显示板地址
                MOV     FuncCode,#SendCpu1Func33; 显示板密码错误确认信息
                LCALL   DataToFarCpu            ; 发送一条记录到远程CPU
                CLR     PSW.3                   ; RX : PAGE 0
                CLR     PSW.4
                RET


;
;       ******  写多字节 SEEPROM  ******
;
WR_BLK:         PUSH    PSW
                SETB    PSW.3                   ; RX : PAGE 3
                SETB    PSW.4
                CLR     SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK        ; StarT
                MOV     A,#WCT0
                LCALL   WRITE
                MOV     A,DPH           ; SROM HIGHT BYTE
                LCALL   WRITE
                MOV     A,DPL           ; SROM LOW BYTE
                LCALL   WRITE
                MOV     R1,BADR
                MOV     R2,BNUM
LWB:            MOV     A,@R1
                LCALL   WRITE
                INC     R1
                DJNZ    R2,LWB
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT        ; STOP
                LCALL   DL10MS
                POP     PSW
                RET
;
;       ******  读多字节 SEEPROM  ******
;
RD_BLK:         PUSH    PSW
                SETB    PSW.3           ; RX : PAGE 2
                SETB    PSW.4
                CLR     SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK        ; StarT
                NOP
                MOV     A,#WCT0
                LCALL   WRITE
                MOV     A,DPH           ; SROM HIGHT BYTE
                LCALL   WRITE
                MOV     A,DPL           ; SROM LOW BYTE
                LCALL   WRITE
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK        ; StarT AGAIN
                MOV     A,#RCT0
                LCALL   WRITE
                MOV     R1,BADR
                MOV     R2,BNUM
LRB:            LCALL   READ
                MOV     @R1,A
                INC     R1
                DJNZ    R2,LRB1
                SETB    SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK            ; NO ACKNOWLEDGE
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_DAT            ; STOP
                POP     PSW
                RET
LRB1:           CLR     SROM_DAT
                NOP
                NOP
                NOP
                NOP
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK            ; ACKNOWLEDGE
                NOP
                NOP
                NOP
                NOP
                SJMP    LRB
WRITE:          MOV     R7,#08H
LPW:            RLC     A
                MOV     SROM_DAT,C
                SETB    SROM_CLK
                NOP
                NOP
                NOP
                NOP
                CLR     SROM_CLK
                NOP
                NOP

⌨️ 快捷键说明

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