📄 main.asm
字号:
;************************************************************
;文档类型: 原代码
;项目编号:
;文档编号:
;修订版本: v1.0
;生成日期: 2005.6.6
;文档作者: li
;审 核:
;************************************************************
;相关文档: 主程序,规约
;文档编号 说明
;************************************************************
;修订说明:LCD,红外,电表常数为1600,复费率带继电器
;修订版本
;修订说明:
;修订版本:
;************************************************************
$INCLUDE (IO.INC)
$INCLUDE (PL3200.INC)
$INCLUDE (CONST.INC)
$INCLUDE (24ADDR.INC)
$INCLUDE (RAML128.INC)
$INCLUDE (RAMH128.INC)
$INCLUDE (RAM.INC)
EXTRN CODE ( INIT_SYS )
EXTRN CODE ( INIT_SYS_REF )
EXTRN CODE ( T_PULSE)
EXTRN CODE ( DO_WITH_PLS)
EXTRN CODE ( HW_DO_WITH)
EXTRN CODE ( HW_RCV)
EXTRN CODE ( DO_WITH_RELY)
EXTRN CODE ( RESET_SYS)
EXTRN CODE ( RD_MTR_RELY)
EXTRN CODE ( MINUTE_CHK)
EXTRN CODE ( DO_WITH_PWR)
EXTRN CODE ( FL_DATE_CHK)
EXTRN CODE ( DO_WITH_LCD_DIS)
EXTRN CODE ( LCD_DIS_TEST)
EXTRN CODE (DIS3105_LCD)
;EXTRN CODE (DO_SJ)
EXTRN CODE (V_I_PROG)
EXTRN CODE (MINUTE_DS)
EXTRN CODE (CLR_WRBUF)
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
ORG 0000H
NOP
;MOV WDI,#0A1H
;CPL P1.0
SJMP INIT_MAIN
;ORG 0003H ;INT0
;RETI
ORG 000BH ;T0中断,判断脉冲
CALL T_PULSE
RETI
JMP RESET_SYS
ORG 0013H ;INT1
JMP RESET_SYS
ORG 001BH ;T1 COM0的波特率发生器
JMP RESET_SYS
ORG 0023H ;COM0;红外
CALL HW_RCV
RETI
JMP RESET_SYS
ORG 002BH ;T2 COM1的波特率发生器
RETI
JMP RESET_SYS
ORG 0033H ;COM1;RS485
RETI
JMP RESET_SYS
ORG 003BH ;INT2
RETI
JMP RESET_SYS
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ORG 0050h
INIT_MAIN:
MOV P3,#11110011B
MOV SP,#SP_ADDR
MOV WDI,#0A1H
CALL LCD_DIS_TEST
MOV R7,#0 ;确保上电
WAITA: NOP
NOP
MOV R6,#0
WAITB: NOP
NOP
MOV WDI,#0A1H
MOV A,STATUS
JB ACC.0,INIT_MAIN
DJNZ R6,WAITB
NOP
NOP
DJNZ R7,WAITA
;判定热复位
MOV A,STATUS
JBC ACC.4,CLR_RAM ;PU
;热复位
MOV R0,#00h
MOV R2,#0CFH
CLR_RAM1:
MOV WDI,#0A1H
MOV @R0,#0
INC R0
DJNZ R2,CLR_RAM1
JMP HOT_RST
CLR_RAM: NOP
MOV R0,#0 ;清内部RAM区 256byte
MOV A,#0
CLR_256B:
MOV WDI,#0A1H
NOP
NOP
MOV @R0,A
INC R0
CJNE R0,#00h,CLR_256B
SETB POWER_BIT ;冷上电标志
;上电处理
HOT_RST: NOP
NOP
NOP
CALL INIT_SYS
MOV STATUS,#11000000B
MOV R0,#TMR_DISP0 ;控制自检时间长度0.5s
MOV @R0,#200
CALL RD_MTR_RELY
SETB DO_RELY
MOV R0,#TMR_RLY ;2004.6.16 100ms后操作继电器
MOV @R0,#200
CALL FL_DATE_CHK ;主循环前不读取脉冲,产脉冲后处理
MOV R0,#TMR_SECOND
MOV @R0,#200
; JNB POWER_BIT,MAIN
; CALL DO_SJ ;上电停电处理
; CLR POWER_BIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:
NOP
NOP
CALL CLR_WRBUF
SETB SOFT_DOG
CALL INIT_SYS_REF
CALL DO_WITH_PWR ;掉电保存处理
CALL MINUTE_CHK
CALL MINUTE_DS ;定时一分钟子程序
MOV R0,#HAVE_PLS
MOV A,@R0
CJNE A,#'P',REG0
CALL DO_WITH_PLS
REG0:
; MOV R0,#HAVE_W_PLS
; MOV A,@R0
; CJNE A,#'W',REG0_1
; CALL DO_WITH_W_PLS
REG0_1:
CALL V_I_PROG ; 电压电流采样子程序
REG1: ;RS485通讯处理
MOV A,HW_RS ;2004.6.13
CJNE A,#'H',REG3
ANL IE,#10101111B ;2004.6.29 禁止串口接收中断
CALL HW_DO_WITH
ORL IE,#01010000B ;允许串口接收中断
MOV HW_RS,#0 ;2004.6.13
JMP MAIN
REG3:
;继电器,显示处理
CALL DO_WITH_RELY
JNB DIS_5MS_BIT,MAIN ;2004.6.27
CLR DIS_5MS_BIT
CALL DO_WITH_LCD_DIS
CALL DIS3105_LCD
NOP
NOP
NOP
LJMP MAIN
;***********************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -