📄 djd.asm
字号:
INCLUDE HT48R06A-1.INC
DATA .SECTION 'DATA'
TIME_H EQU [40H] ;--------临时单元
TIME_L EQU [41H] ;--------临时单元
SECOND EQU [42H] ;--------开,关门及其它标志单元
SECOND1 EQU [43H] ;--------遥控器空间存储指针
MIUNE EQU [44H] ;--------消键抖延时单元
OPEN_COUNT EQU [45H]
WORK_TIME EQU [46H] ;--------临时单元
WORK_SECOND EQU [47H] ;--------临时单元
COUNTH EQU [48H] ;--------临时单元
COUNTL EQU [49H] ;--------临时单元
DLCOUNT EQU [4AH] ;--------临时单元
FFDT3 EQU [4BH] ;--------临时单元
FFDT4 EQU [4CH] ;--------临时单元
FFDT5 EQU [4DH] ;--------临时单元
FFDT6 EQU [4EH] ;--------临时单元
FFDT7 EQU [4FH] ;--------临时单元
TMP1 EQU [50H] ;--------读写EEPROM低位
TMP2 EQU [51H] ;--------读写EEPROM高位
TMP3 EQU [52H] ;--------解码临时单元
TMP4 EQU [53H] ;--------解码临时单元
MAICHONG_H EQU [54H] ;--------解码临时单元
MAICHONG_L EQU [55H] ;--------解码临时单元
BJCOUNT_H EQU [56H] ;--------解码临时单元
BJCOUNT_L EQU [57H] ;--------解码临时单元
CSR0 EQU [58H] ;--------解码临时单元
CSR1 EQU [59H] ;--------解码临时单元
CSR2 EQU [5AH] ;--------解码临时单元
CSR3 EQU [5BH] ;--------解码临时单元
CNT2 EQU [5CH] ;--------解码临时单元
COUNT_WAIT EQU [5DH] ;--------解码临时单元
RAM_HI EQU [5EH] ;--------解码临时单元
RAM_LW EQU [5FH] ;--------解码临时单元
ETMP1 EQU [60H] ;--------解码临时单元
CNT5 EQU [61H]
CNT6 EQU [62H]
ADDRTEMP EQU [63H] ;--------EEPROM地址的辅助单元
BUF EQU [64H]
TXNUM EQU [65H] ;--------临时单元
FLAGS EQU [66H] ;--------标志单元
CNT0 EQU [67H] ;--------临时单元
OUTBYT EQU [68H] ;--------临时单元
ADDRESS EQU [69H] ;--------读写EEPROM地址单元
LEARNFG EQU [6AH]
CNT1 EQU [6BH]
error_count EQU [6CH]
BUF1 EQU [6DH]
BUF2 EQU [6EH]
BUF3 EQU [6FH]
KEY_NUMBER EQU [70H]
LEARNL EQU [71H]
LEARNH EQU [72H]
LEARNADDR EQU [73H]
YKQFLAG EQU [74H]
;KEY_NUMBER_A EQU [75H]
PUSHA EQU [76H] ;--------保存ACC单元
PUSHST EQU [77H] ;--------保存STATUS单元
TIMH EQU [78H]
TIML EQU [79H]
SETTIMH EQU [7AH]
SETTIML EQU [7BH]
AADD EQU [7CH]
PACFG EQU 10011111B
PBCFG EQU 00000011B
PCCFG EQU 00000001B
;//////////////////////////////////////////
NC1 EQU PA.0; *--I
NC2 EQU PA.1; *--I
NC3 EQU PA.2; *--I
KZ_INPUT EQU PA.3; *--I
OPEN_SIN EQU PA.4; *--I
CLOSE_OUT EQU PA.5; *--O
OPEN_OUT EQU PA.6; *--O
CLOSE_SIN EQU PA.7; *--I
VOLTAG_WATCHER EQU PB.0; *--I
POWER_IN EQU PB.1
POWER_INT EQU PC.0
CODE .SECTION AT 0 'CODE'
;*************************************************
; VECTOR START
;*************************************************
ORG 00H
JMP START
ORG 08H
JMP INT_TIME
;################################################
;*********** 定时中断入口 ************************
;################################################
CODE1 .SECTION AT 10H 'CODE'
INT_TIME:
CLR WDT2
MOV PUSHA,A
MOV A,STATUS
MOV PUSHST,A
MOV A,1
ADDM A,TIME_L
MOV A,0
ADCM A,TIME_H
MOV A,TIME_L
SUB A,0A0H
SZ ACC
JMP INT_TIME_A
MOV A,TIME_H
SUB A,0FH
SZ ACC
JMP INT_TIME_A
CLR TIME_H
CLR TIME_L
INC SECOND
INT_TIME_A:
MOV A,PUSHST
MOV STATUS,A
MOV A,PUSHA
RETI
;****************************************************
; MAIN PROCESS
; BUF1 AS HIGH BYTE FOR EEPROM WRITE
;****************************************************
START:
CLR INTC.0 ;禁止所有中断
MOV A, PACFG
MOV PA, A
MOV A, PACFG ;初始化,PA,PB,PC,PG端口
MOV PAC, A
MOV PA, A
MOV A, PBCFG
MOV PB, A
MOV A, PBCFG
MOV PBC, A
MOV PB, A
MOV A, PCCFG
MOV PCC, A
MOV PC, A
;****************************************************
MOV A, 40H ;CLEAR RAM区
MOV MP0, A
SETRAM:;----------------------------断点1
MOV A, 0
MOV R0, A
INC MP0
MOV A, MP0
SUB A, 0FFH
SZ ACC
JMP SETRAM
MOV A,5
MOV INTC,A
MOV A,6
MOV TMR,A
MOV A,81H
MOV TMRC,A
SET TMRC.4
MOV A,07
MOV WDTS,A
;********系统主程序入口**********************************
BEGIN:
CLR OPEN_OUT
CLR CLOSE_OUT
CLR OPEN_COUNT
BEGIN_A:
CALL DELAY
SNZ OPEN_SIN
JMP WORK
SET OPEN_OUT
CLR SECOND
BEGIN_B:
CLR WDT1
SNZ OPEN_SIN
JMP WORK
MOV A,SECOND
SUB A,2
SNZ C
JMP BEGIN_B
CLR OPEN_OUT
CLR CLOSE_OUT
INC OPEN_COUNT
WORK:
SNZ OPEN_SIN
JMP WORK_A
MOV A,OPEN_COUNT
SUB A,3
SNZ C
JMP BEGIN_A
JMP ERROR
WORK_A:
CLR OPEN_OUT
CLR CLOSE_OUT
CLR WDT1
CLR AADD
SNZ VOLTAG_WATCHER
JMP WORK_A
SZ KZ_INPUT
JMP WORK_A
MOV A,0FFH
MOV COUNT_WAIT,A
WORK_B:
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
SDZ COUNT_WAIT
JMP WORK_B
SZ KZ_INPUT
JMP WORK_A
SET CLOSE_OUT
CALL DELAY_A
WORK_C:
SNZ POWER_IN
JMP POWER_STOP
SNZ KZ_INPUT
JMP WORK_E
MOV A,0FFH
MOV COUNT_WAIT,A
WORK_D:
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
SDZ COUNT_WAIT
JMP WORK_D
SZ KZ_INPUT
JMP WORK_STOP
WORK_E: CLR AADD
SZ CLOSE_SIN
JMP WORK_C
MOV A,0FFH
MOV COUNT_WAIT,A
WORK_M:
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
SDZ COUNT_WAIT
JMP WORK_M
SZ CLOSE_SIN
JMP WORK_C
MOV A,0FFH
MOV COUNT_WAIT,A
WORK_N:
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
TABRDC TMP1
SDZ COUNT_WAIT
JMP WORK_N
SZ CLOSE_SIN
JMP WORK_C
SET AADD
WORK_STOP:
CLR OPEN_OUT
CLR CLOSE_OUT
CLR WDT1
;CALL DELAY
WORK_END:
SNZ KZ_INPUT
JMP WORK_STOP
;CALL DELAY
SNZ KZ_INPUT
JMP WORK_STOP
CLR SECOND
SET OPEN_OUT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -