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

📄 jrmaincpu.asm.bak

📁 用增强型单片机51RD2做的控制器
💻 BAK
📖 第 1 页 / 共 3 页
字号:
HjjAddr         EQU     53H     ; 呼叫机的地址
FarModuleAdr    EQU     52H     ; 远程模块地址

DataH           equ     51H     ; 地址指针寄存器高位
DataL           equ     50H     ; 地址指针寄存器低位
SeleTab         EQU     4FH     ; 选择汉字库字模表
KeyNumber       EQU     4EH
CallAddr        EQU     4DH     ; 被呼的主机地址
RelayStatus3    EQU     4CH     ; 继电器状态字
RelayStatus2    EQU     4BH     ; 继电器状态字
RelayStatus1    EQU     4AH     ; 继电器状态字
;
;**************工艺参数变量******************************************
;

;
;**************物理量检测控制****************************************
;

JcSjH           EQU     49H     ; 检测时间高8位
JcSjL           EQU     48H     ; 检测时间低8位

JyDzH           EQU     47H     ; 绝缘电阻高8位
JyDzL           EQU     46H     ; 绝缘电阻低8位

JyXlH           EQU     45H     ; 绝缘泄流高8位
JyXlL           EQU     44H     ; 绝缘泄流低8位

SjDyH           EQU     43H     ; 施加电压高8位
SjDyL           EQU     42H     ; 施加电压低8位

ScXlH           EQU     41H     ; 输出泄流高8位
ScXlL           EQU     40H     ; 输出泄流低8位

ScDlH           EQU     3FH     ; 输出电流高8位
ScDlL           EQU     3EH     ; 输出电流低8位

ScDyH           EQU     3DH     ; 输出电压高8位
ScDyL           EQU     3CH     ; 输出电压低8位

;
;***************COM1,COM2,COM3***************************************
;
SendDatH        EQU     3BH     ; 发送数据地址高位
SendDatL        EQU     3AH     ; 发送数据地址低位
FuncCode        EQU     39H     ; 发送/接收功能码
TxdBuf          EQU     38H     ; 发送数据

BitCntB         EQU     37H     ; 接收/发送计数器B
RxdBufB         EQU     36H     ; 接收数据B

BitCntA         EQU     35H     ; 接收/发送计数器A
RxdBufA         EQU     34H     ; 接收数据A
;
;**************I/O Port State****************************************
;
KglStatus       EQU     33H     ; 开关量状态寄存器
LedStatus       EQU     32H     ; LED 状态寄存器
;
;*******************LCD**********************************************
;
LcdShowC        EQU     31H
LcdShowY        EQU     30H
LcdShowX        EQU     2FH
EditShowY       EQU     2EH
EditShowX       EQU     2DH
LcdCount2       EQU     2CH
LcdCount1       EQU     2BH
CCCODE          EQU     2AH
OY              EQU     29H
OXH             EQU     28H
OXL             EQU     27H
;********************************************************************
;
AP              EQU     30H
;
;******************FLAGS*********************************************
;
Cold2           EQU     26H
Cold1           EQU     25H
Flags5          EQU     24H
Flags4          EQU     23H
Flags3          EQU     22H
Flags2          EQU     21H     ;
Flags1          EQU     20H     ;
;
;*******************BIT**********************************************
;
MinSaveF        BIT     Flags4.3        ; 分存储标志,保持原存储地址不变
XlDlDwF         BIT     Flags4.2        ; 泄漏电流单位: XlDlDwF = 0 电流为 mA , XlDlDwF = 1 电流为 uA
JyDzDwF         BIT     Flags4.1        ; 绝缘电阻单位: JyDzDwF = 0 电阻为 K  , JyDzDwF = 1 电阻为 M
TestDataF       BIT     Flags4.0        ; 检测数据允许标志

AutoRunF        BIT     Flags3.7        ; 自动运行方式
SsTsXsF         BIT     Flags3.6        ; 闪烁提示显示
SecTimerF       BIT     Flags3.5
FarKeyF         BIT     Flags3.4        ; 远程键标志
WorkPassF       BIT     Flags3.3        ; LCD 显示刷新标志
UserPassF       BIT     Flags3.2        ;
DisplayF        BIT     Flags3.1        ; LCD 显示刷新标志
GlintF          BIT     Flags3.0        ; 闪烁标志

GdXtKjGjSjF     BIT     Flags2.7        ; 开机时间检测允许标志
ClockEditF      BIT     Flags2.6        ;
ShowDtSjF       BIT     Flags2.5        ; 显示动态数据标志
ShowF           BIT     Flags2.4        ;
BreakF          BIT     Flags2.3        ;
CommandBF       BIT     Flags2.2        ; 远程模块命令有效标志
CommandAF       BIT     Flags2.1        ; 远程模块命令有效标志
KeyF            BIT     Flags2.0        ;
;
ReciveF         BIT     Flags1.7        ;
LedDirF         BIT     Flags1.6        ;
RxdErrB         BIT     Flags1.5        ; 接收贞错误标志
RxdFlagB        BIT     Flags1.4        ; 正在处理发送标志
TxdFlagB        BIT     Flags1.3        ; 正在处理接收标志
RxdErrA         BIT     Flags1.2        ; 接收贞错误标志
RxdFlagA        BIT     Flags1.1        ; 正在处理发送标志
TxdFlagA        BIT     Flags1.0        ; 正在处理接收标志

;********************************************************************

XlDlAdrPoint    EQU    4F30H            ; 泄漏电流数据区地址指针
YxBgAdrPoint    EQU    4F20H            ; 运行报告数据区地址指针
UserPassAdr     EQU    4F10H            ; 用户密码首地址
SysPassAdr      EQU    4F00H            ; 系统密码首地址

XtCsDatArea     EQU    4F00H            ; 系统参数数据区

XlDlDatArea     EQU    4000H            ; 泄漏电流数据区

ReportDatArea   EQU    0000H            ; 记录报告数据区

StartDatArea    EQU    0000H            ; 存储数据开始区

;
;
;
;************  程序源代码区  ****************************************
;
                ORG     0000H

                SJMP    Start
                ORG     0003H           ;
                LJMP    Int0RecvCom     ; 中断接收数据串行口一
; 资源使用:PAGE=2 R0 , R2 , R6 , R7 , ACC , B
                ORG     000BH           ;
                LJMP    Clk             ; 系统时钟中断
; 资源使用:PAGE=3  R0 , ACC , B , DPTR
                ORG     0013H           ;
                LJMP    Int1RecvCom     ; 中断接收数据串行口二
; 资源使用:PAGE=2 R1 , R3 , R4 , R5 , ACC , B
                ORG     0023H
                LJMP    RecvFarCpuDat
; 资源使用:PAGE=3  R1 , R6 , R7 , ACC , B
                ORG     002BH
                RETI
;
;       ******  Program Start  *******
;
Start:          MOV     SP,#SpStart
                MOV     A,COLD1
                CJNE    A,#5AH,COLD
                MOV     A,COLD2
                CJNE    A,#5AH,COLD
                LCALL   SystemInit
                SJMP    Main
COLD:           NOP
                LCALL   SystemInit
;
;       ******  Main Program *******
;
MAIN:           CLR     PSW.3                   ; RX : PAGE 0
                CLR     PSW.4
                MOV     Cold1,#5AH
                MOV     Cold2,#5AH
                MOV     LedStatus,#00000001B
;                CLR     AutoRunF
;                MOV     InterFace,#12
;                MOV     AutoTimer,#5
;                LCALL   JcXtYbXh                ; 检测地面电源系统预备信号
                LCALL   WorkStateInit           ; 工作状态初始化
main0:          LCALL   Watchdog
                LCALL   Closelight              ; 十五分钟无键按下自动关闭LCD背光
                LCALL   MainInterFace
                LCALL   ShowDateTime

                LCALL   ReadNearDat

                LCALL   ScanKey
            ;  setb KeyF
                JNB     KeyF,Main               ; scan key
                CLR     KeyF
              ; mov KeyNumber,#0bH
                MOV     A,KeyNumber             ;
                CJNE    A,#0BH,Main1
                LCALL   face_test_sele          ; 进入测试选择界面
                SJMP    Main
Main1:          CJNE    A,#0CH,Main2
                SJMP    Main
Main2:          CJNE    A,#0EH,Main3
                SJMP    Main
Main3:          CJNE    A,#0FH,Main4
                SJMP    Main
Main4:          CJNE    A,#0DH,Main5
                SJMP    Main
Main5:          CJNE    A,#10H,Main6
                SJMP    Main
Main6:          CJNE    A,#11H,Main7
                NOP
                LJMP    Main
Main7:          CJNE    A,#12H,Main8
                LCALL   RepChkPrtCom            ; 运行报告查询、打印、上传
                LJMP    Main
Main8:          CJNE    A,#13H,Main9
                LCALL   ClockSetup              ; 时钟日期设置
                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.0,JcXtYbXh2         ; KglStatus.0 = 0 预备开 ,  KglStatus.0 = 1 预备关

                CLR     AutoRunF
;                SETB     AutoRunF
                RET
JcXtYbXh2:      SETB    AutoRunF
                LCALL   ClrReportBuf            ; 清运行报告缓冲区(32Byte)
                RET
;
;       ******  自动运行方式  ******
;
AutoRun:        JB     AutoRunF,AutoRun1
                RET
AutoRun1:       MOV     A,SecTimerA
                MOV     B,AutoTimer
                CLR     C
                SUBB    A,B
                JNC     AutoRun2
                RET
AutoRun2:       MOV     A,InterFace
                CJNE    A,#1,AutoRun3
                MOV     KeyNumber,#1            ; “1”键
                SETB    CommandBF
                MOV     SecTimerA,#00H
                RET
AutoRun3:       CJNE    A,#2,AutoRun4
                MOV     KeyNumber,#2            ; “2”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun4:       CJNE    A,#3,AutoRun5
                MOV     KeyNumber,#3            ; “3”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun5:       CJNE    A,#4,AutoRun6
                MOV     KeyNumber,#4            ; “4”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun6:       CJNE    A,#5,AutoRun7
                MOV     KeyNumber,#5            ; “5”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun7:       CJNE    A,#6,AutoRun8
                MOV     KeyNumber,#6            ; “6”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun8:       CJNE    A,#7,AutoRun9
                MOV     KeyNumber,#7            ; “7”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun9:       CJNE    A,#8,AutoRun10
                MOV     KeyNumber,#8            ; “8”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun10:      CJNE    A,#9,AutoRun11
                MOV     KeyNumber,#9            ; “9”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun11:      CJNE    A,#0,AutoRun12
                MOV     KeyNumber,#0            ; “0”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun12:      CJNE    A,#11,AutoRun13
                MOV     KeyNumber,#10           ; “取消”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun13:      CJNE    A,#12,AutoRun14
                MOV     KeyNumber,#11           ; “确认”键
                SETB    CommandBF
                MOV     SecTimerA,#00H

                RET
AutoRun14:      CJNE    A,#13,AutoRun15

                RET
AutoRun15:      CJNE    A,#14,AutoRun16

                RET
AutoRun16:      CJNE    A,#15,AutoRun17

                RET
AutoRun17:      CJNE    A,#16,AutoRun18

                RET
AutoRun18:      CJNE    A,#17,AutoRun19

                RET
AutoRun19:      CJNE    A,#18,AutoRun20

                RET
AutoRun20:      CJNE    A,#19,AutoRun21

                RET
AutoRun21:      CJNE    A,#20,AutoRun22

AutoRun22:      RET


AutoUserPass:   JB     AutoRunF,AutoUserPass1
                RET
AutoUserPass1:  NOP



;
;       ******  读近程 CPU2 数据  ******
;
ReadNearDat:    MOV     CallAddr,#01H
                MOV     FuncCode,#SendCpu2Func02; 读开关量状态
                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

⌨️ 快捷键说明

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