📄 new_dc18v.asm
字号:
INCLUDE HT48R06A-1.INC
DATA .SECTION 'DATA'
TRH_FLAG EQU [60H].0
TRL_FLAG EQU [60H].1
TRX_FLAG EQU [60H].2
NO_INT_FLAG EQU [60H].3
CHUANSHU_COUNT EQU [61H]
;COPY_TR EQU [62H] ;--------临时单元
TIMEH EQU [63H] ;--------临时单元
TIMEL EQU [64H] ;--------临时单元
SECOND EQU [65H] ;--------临时单元
MIUNE EQU [66H] ;--------临时单元
;PD_COUNT EQU [67H] ;--------临时单元
W_TIME EQU [68H] ;--------临时单元
CAIJI_COUNT EQU [69H] ;--------临时单元
COUNTH EQU [6AH] ;--------临时单元
COUNTL EQU [6BH] ;--------临时单元
DELAYH EQU [6CH] ;--------临时单元
DELAYL EQU [6DH] ;--------临时单元
RETURN EQU [6EH] ;--------解码临时单元
;SUMH EQU [6FH] ;--------解码临时单元
TRH_COUNT_H EQU [70H]
TRH_COUNT_L EQU [71H]
TRX_COUNT_H EQU [72H]
TRX_COUNT_L EQU [73H]
TRL_COUNT_H EQU [74H]
TRL_COUNT_L EQU [75H]
TEMP_TIMEL EQU [78H]
TEMP_TIMEH EQU [79H]
TEMP_SECOND EQU [7AH]
;TR2 EQU [7BH]
INT_COUNT1 EQU [7CH]
INT_COUNT EQU [7DH]
PUSHA EQU [7EH] ;--------保存ACC单元
PUSHST EQU [7FH] ;--------保存STATUS单元
PACFG EQU 0FH; 00001111B
PBCFG EQU 0
PCCFG EQU 03H
CONTR EQU PA.3
CONTRC EQU PAC.3
TRH EQU PA.2
TRL EQU PA.1
TRX EQU PA.0
VBAT EQU PC.0
NO_INT EQU PC.1
GRNLED EQU PA.4
REDLED EQU PA.5
POWER_OUT EQU PB.2
SDA EQU PA.6
SCL EQU PA.7
;//////////////////////////////////////////
CODE .SECTION AT 0 'CODE'
;*************************************************
; VECTOR START
;*************************************************
ORG 00H
JMP START
ORG 04H
JMP INT_EXT
ORG 08H
JMP INT_TIME
;################################################
;*********** 定时中断入口 ************************
;################################################
CODE1 .SECTION AT 10H 'CODE'
INT_TIME:
CLR WDT2
MOV PUSHA,A
MOV A,STATUS
MOV PUSHST,A
SZ TRH_FLAG
JMP TRLKK
INC TRH_COUNT_L
SZ Z
INC TRH_COUNT_H
TRLKK:
SZ TRL_FLAG
JMP TRXKK
INC TRL_COUNT_L
SZ Z
INC TRL_COUNT_H
TRXKK:
SZ TRX_FLAG
JMP TREND
INC TRX_COUNT_L
SZ Z
INC TRX_COUNT_H
TREND:
MOV A,01H
ADDM A,TIMEL
MOV A,0
ADCM A,TIMEH
CLR C
MOV A,3H
MOV RETURN,A
MOV A,TIMEL
SUB A,0E8H
MOV A,TIMEH
SBC A,RETURN
SNZ C
JMP INT_TIME_A
INC SECOND
CLR TIMEH
CLR TIMEL
MOV A,SECOND
SUB A,60
SZ ACC
JMP INT_TIME_A
INC MIUNE
CLR SECOND
CLR TIMEH
CLR TIMEL
INT_TIME_A:
MOV A,01H
ADDM A,TEMP_TIMEL
MOV A,0
ADCM A,TEMP_TIMEH
CLR C
MOV A,3H
MOV RETURN,A
MOV A,TEMP_TIMEL
SUB A,0E8H
MOV A,TEMP_TIMEH
SBC A,RETURN
SNZ C
JMP INT_TIME_B
INC TEMP_SECOND
CLR TEMP_TIMEH
CLR TEMP_TIMEL
INT_TIME_B:
INC W_TIME
MOV A,INT_COUNT
SUB A,200
SNZ C
INC INT_COUNT
MOV A,PUSHST
MOV STATUS,A
MOV A,PUSHA
RETI
INT_EXT:
MOV PUSHA,A
MOV A,STATUS
MOV PUSHST,A
SZ W_TIME
JMP INT_EXT_A
JMP INT_EXT_B
INT_EXT_A:
INC INT_COUNT1
INT_EXT_B:
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 PAC, A
MOV PA, A
CLR PBC
CLR PB
SET POWER_OUT
MOV A, 03H ;初始化,PA,PB,PC,PG端口
MOV PCC, A
MOV PC, A
SET SDA;===================================================
;****************************************************
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,6
MOV INTC,A
MOV A,6
MOV TMR,A
MOV A,83H;81H
MOV TMRC,A
SET TMRC.4
MOV A,07
MOV WDTS,A
CLR PB
CLR PC
SET INTC.0
SET POWER_OUT
CLR REDLED
CLR GRNLED
AD_ST:
CLR WDT1
CALL TAD
CALL CHUANSHU
CALL PAN_INT
SUB A,0AAH
SZ ACC
JMP BEGINST ;AD_ST_A
JMP START
AD_ST_A:
;CALL TAD
;CLR WDT1
;CLR C
;MOV A,TRX_COUNT_L
;SUB A,TRL_COUNT_L
;MOV A,TRX_COUNT_H
;SBC A,TRL_COUNT_H
;SZ C
;JMP BEGINST
;SET REDLED
;SET GRNLED
;JMP AD_ST
BEGINST:
CALL PAN_INT
SUB A,0AAH
SZ ACC
JMP BEGINST_A
JMP START
BEGINST_A:
CLR MIUNE
SZ VBAT
JMP BEGIN
CLR WDT1
SET POWER_OUT
SET REDLED
SET GRNLED
JMP BEGINST
BEGIN:
CLR WDT1
MOV A,MIUNE
SUB A,100
SZ C
JMP BEGIN_D
CALL PAN_INT
SUB A,0AAH
SZ ACC
JMP BEGIN_A
JMP START
BEGIN_A:
CLR POWER_OUT
CLR GRNLED
SET REDLED
CALL TAD
CALL CHUANSHU
MOV A,TRX_COUNT_L
SUB A,TRL_COUNT_L
MOV A,TRX_COUNT_H
SBC A,TRL_COUNT_H
SZ C
JMP BEGIN_C
CALL PAN_INT
SUB A,0AAH
SZ ACC
JMP BEGIN_B
JMP START
BEGIN_B:
CLR WDT1
SET REDLED
SET GRNLED
SET POWER_OUT
CALL PAN_INT
SUB A,0AAH
SZ ACC
JMP BEGIN_B_A
JMP START
BEGIN_B_A:
CALL TAD
MOV A,TRX_COUNT_L
SUB A,TRL_COUNT_L
MOV A,TRX_COUNT_H
SBC A,TRL_COUNT_H
SZ C
JMP BEGIN
JMP BEGIN_B
BEGIN_C:
CLR C
MOV A,TRX_COUNT_L
SUB A,TRH_COUNT_L
MOV A,TRX_COUNT_H
SBC A,TRH_COUNT_H
SZ C
JMP BEGIN_D
JMP BEGIN
BEGIN_D:
CLR WDT1
SET GRNLED
CLR REDLED
CALL TAD
CALL CHUANSHU
SET POWER_OUT
CALL PAN_INT
SUB A,0AAH
SZ ACC
JMP BEGIN_D
JMP START
TAD:
CLR WDT1
CLR TRH_FLAG
CLR TRL_FLAG
CLR TRX_FLAG
CLR TRH_COUNT_H
CLR TRH_COUNT_L
CLR TRL_COUNT_H
CLR TRL_COUNT_L
CLR TRX_COUNT_H
CLR TRX_COUNT_L
CLR TEMP_SECOND
CLR CONTR
CLR CONTRC
CLR CONTR
MOV A,80H
MOV COUNTH,A
TAD0:
MOV A,0FFH
MOV COUNTL,A
TAD1:
NOP
SDZ COUNTL
JMP TAD1
SDZ COUNTH
JMP TAD0
CLR TEMP_SECOND
CLR TEMP_TIMEH
CLR TEMP_TIMEL
SET CONTR
SET CONTRC
SET CONTR
TAD2:
MOV A,TEMP_SECOND
SUB A,1
SZ C
JMP ADRETURN
SZ TRH
SET TRH_FLAG
SZ TRL
SET TRL_FLAG
SZ TRX
SET TRX_FLAG
JMP TAD2
ADRETURN:
CLR CONTR
CLR CONTRC
CLR CONTR
RET
PAN_INT:
CLR WDT1
CLR INT_COUNT
CLR INT_COUNT1
CLR W_TIME
CLR CAIJI_COUNT
PAN_INT_A:
MOV A,INT_COUNT
SUB A,200
SZ C
JMP PAN_INT_C
SZ NO_INT
JMP PAN_INT_B
SET NO_INT_FLAG
JMP PAN_INT_A
PAN_INT_B:
SNZ NO_INT_FLAG
JMP PAN_INT_A
INC CAIJI_COUNT
CLR NO_INT_FLAG
JMP PAN_INT_A
PAN_INT_C:
CLR NO_INT_FLAG
MOV A,INT_COUNT1
SUB A,10
SNZ C
JMP PAN_INT_D
RET A,0AAH
PAN_INT_D:
MOV A,CAIJI_COUNT
SUB A,10
SNZ C
RET A,55H
RET A,0AAH
;==========================================================
;**********************************************************
CHUANSHU:
CLR INTC.0
MOV A,48
MOV CHUANSHU_COUNT,A
CHUANSHU_ST:
RLC TRH_COUNT_H
RLC TRH_COUNT_L
RLC TRX_COUNT_H
RLC TRX_COUNT_L
RLC TRL_COUNT_H
RLC TRL_COUNT_L
SZ C
JMP CHUANSHU_A
CLR SDA
JMP CHUANSHU_B
CHUANSHU_A:
SET SDA
CHUANSHU_B:
MOV A,10
MOV DELAYH,A
CHUANSHU_C:
MOV A,0FFH
MOV DELAYL,A
CHUANSHU_D:
NOP
SDZ DELAYL
JMP CHUANSHU_D
SDZ DELAYH
JMP CHUANSHU_C
CLR SCL
MOV A,5
MOV DELAYH,A
CHUANSHU_E:
MOV A,0FFH
MOV DELAYL,A
CHUANSHU_F:
NOP
SDZ DELAYL
JMP CHUANSHU_F
SDZ DELAYH
JMP CHUANSHU_E
SET SCL
SDZ CHUANSHU_COUNT
JMP CHUANSHU_ST
RLC TRH_COUNT_H
RLC TRH_COUNT_L
RLC TRX_COUNT_H
RLC TRX_COUNT_L
RLC TRL_COUNT_H
RLC TRL_COUNT_L
SET SDA
SET SCL
SET INTC.0
RET
;**********************************************************
;==========================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -