📄 vol_end.asm.txt
字号:
;######################################################
; ASM: Vol_L.asm
; CPU: TMP86P807M/N
; DATA: 2004/06/9
; XTAL: 8MHZ
; 电压表程序 ---[0--50V]
;#########################################################
$INCLUDE <T86c807a.H>
$INCLUDE <T86c807b.H>
;
CODE_1 SECTION CODE ABS=0xE000
;
START: NOP
NOP
DI
LD SP,0x013F
SETSYS: LD (SYSCR1),0 ;
LD (SYSCR2),0x80 ;
SETTBT: LD (TBTCR),0x00 ;DVO-BUZZ
SETWDT: LD (WDTCR1),0X0F ;Enable WDT
LD (WDTCR2),0xB1 ;Disable WDT
LD (WDTCR1),0x0F ;
LD (WDTCR2),0x4E ;Enable WDT
SETTC1: LD (TC1CR),0 ;
LD (TC1DRAL),0X60 ;1B
LD (TC1DRAH),0X00 ;B7
; LD (TC1DRB),0 ;
SET (EIRL).7 ;
LD (TC1CR),0X10 ;
SETTC4: LD (TC4CR),16 ;
LD (TTREG4),250 ;250X8=2ms
LD (TC4CR),24 ;START
SET (EIRH).3 ;Enable INT
LD (INTSEL),0 ;int
SETPOR: LD (P0),0XFF ;
LD (P2),0
LD (P3),0Y00000111 ;
LD (STOPCR),0
CALL WORK
RAMCLR: LD HL,0x40 ;40H→HL
LD A,H ;H=0→A
LD BC,0xFF ;0xFF→BC
SRAMCL: LD (HL),A ;A=0→(HL)
INC HL ;HL+1
DEC BC ;BC-1
J F,SRAMCL ;BC≠0→SRAMCL:
;
TEST (P2PRD).0
J F,TSTC
;******************************************************
MAIN: EI
CALL WORK
CALL ADDI
CALL DISP
J MAIN
;******************************************************
WORK: LD (WDTCR1),0x0D ;
LD (WDTCR2),0x4E ;Enable WDT
LD (P0OUTCR),0XFF
LD (P3CR),0Y01111111
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADDI: TEST (FLAG).1
J T,ADND
CALL ADZH
CLR (FLAG).1
LD A,(ADBU1)
LD (COM1),A
LD A,(ADBU2)
LD (COM2),A
LD A,(ADBU3)
LD (COM3),A
NOP
NOP
NOP
ADND: RET
;*******************************************
; 测试程序 *
;*******************************************
TSTC: CLR (P3).0
CLR (P3).1
CLR (P3).2
LD (P0),0Y10100000
CALL DEALY1
LD (P0),0Y10101111
CALL DEALY1
LD (P0),0Y01101000
CALL DEALY1
LD (P0),0Y00101010
CALL DEALY1
LD (P0),0Y00100111
CALL DEALY1
LD (P0),0Y00110010
CALL DEALY1
LD (P0),0Y00110000
CALL DEALY1
LD (P0),0Y10101011
CALL DEALY1
LD (P0),0Y00100000
CALL DEALY1
LD (P0),0Y00100010
CALL DEALY1
NOP
LOOP: LD (WDTCR1),0x0D ;
LD (WDTCR2),0x4E ;Enable WDT
LD (P0),0
J LOOP
DEALY1: EI
LD (WDTCR1),0x0D ;
LD (WDTCR2),0x4E ;Enable WDT
TEST (FLAG).1
J T,DEALY1
CLR (FLAG).1
RET
;*******************************************
; 显示程序 *
;*******************************************
ADZH: CALL RDADC
CALL ADBHU
SUB A,3
LD W,0
LD C,5
DIV WA,C
LD (ADBU1),W
LD W,0
LD C,10
DIV WA,C
LD (ADBU3),A
LD (ADBU2),W
LD W,0
LD A,0
LD W,(ADBU1)
LD A,2
MUL W,A
LD (ADBU1),A
RET
ADINPUT:
LD (ADCCR1),0X25 ;AIN4
LD (ADCCR2),0XD8 ;
SET (ADCCR1).7
ADSLOOP:
TEST (ADCDR2).5
J T,ADSLOOP
LD A,(ADCDR1)
RET
;;;;;;<>
RDADC: CALL ADINPUT
LD B,A
CALL ADINPUT
LD C,A
CALL ADINPUT
LD D,A
CALL ADINPUT
LD E,A
CMP BC,DE
J NE,RDADC
LD A,B
CMP A,79
J CC,RADC1
RET
RADC1: CMP A,114
J CC,RADC2
SUB A,1
RET
RADC2: CMP A,135
J CC,RADC3
SUB A,2
RET
RADC3: CMP A,151
J CC,RADC4
SUB A,3
RET
RADC4: SUB A,4
RET
ADBHU: CMP A,170
J CC,ADBHK
RET
ADBHK: SET (P3).3
RET
;*******************************************
; 显示程序 *
;*******************************************
DISP:
LD C,(COM1)
LD HL,LEDTAB
LD A,(HL+C)
LD (DOM1),A
;
LD C,(COM2)
LD HL,LEDTAB
LD A,(HL+C)
LD (DOM2),A
CLR (DOM2).5
;
LD C,(COM3)
LD HL,LEDTAB
LD A,(HL+C)
LD (DOM3),A
;
XIANSHI:
LD A,(DOM1)
LD (P0),A
CLR (P3).0
CALL DEALY
SET (P3).0
LD A,(DOM2)
LD (P0),A
CLR (P3).1
CALL DEALY
SET (P3).1
LD A,(DOM3)
LD (P0),A
CLR (P3).2
CALL DEALY
SET (P3).2
RET
DEALY: LD BC,0X500
LOPF: NOP
DEC BC
J NE,LOPF
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LEDTAB DB 160 ;0
DB 175 ;1
DB 104 ;2
DB 42 ;3
DB 39 ;4
DB 50 ;5
DB 48 ;6
DB 171 ;7
DB 32 ;8
DB 34 ;9
;==================================================
INTTC1: EI
INC (TBUF)
CMP (TBUF),60
J EQ,INTC1A
RETI
INTC1A: LD (TBUF),0
SET (FLAG).6
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTTC4: INC (THJK)
CMP (THJK),200
J EQ,INTC4
RETI
INTC4: LD (THJK),0
SET (FLAG).1
RETI
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
NORETI:
RETI
NORETN:
RETN
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CODE_INTVECT SECTION CODE ABS=0xFFE0
INTVECT:
DW NORETI ;FFE0H (INT5)
DW NORETI ;FFE2H (INT4)
DW NORETI ;FFE4H (INTSEI1)
DW NORETI ;FFE6H (INTADC)
DW INTTC4 ;FFE8H (INT3/INTTC4)
DW NORETI ;FFEAH (INTTC3/INTSEI0)
DW NORETI ;FFECH (INTTxD)
DW NORETI ;FFEEH (INTRxD)
DW INTTC1 ;FFF0H (INTTC1)
DW NORETI ;FFF2H (INTTBT)
DW NORETI ;FFF4H (INT1)
DW NORETI ;FFF6H (INT0)
DW NORETN ;FFF8H (INTWDT)
DW NORETN ;FFFAH (INTATRAP)
DW NORETN ;FFFCH (INTUNDEF/INTSWI)
DW START ;FFFEH (RESET)
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
RAMDATA SECTION DATA ABS=0X40
;;;;;;;;<P3>;;;;;;
SDA EQU 1
SCL EQU 2
;;;;;;;;;;;;;;;;;;
COM1 DSB 1
COM2 DSB 1
COM3 DSB 1
COM4 DSB 1
COM5 DSB 1
DOM1 DSB 1
DOM2 DSB 1
DOM3 DSB 1
DOM4 DSB 1
DOM5 DSB 1
TME1 DSB 1
TME2 DSB 1
TME3 DSB 1
TME4 DSB 1
TME5 DSB 1
FLAG DSB 1
TBUF DSB 1
TBBUF DSB 1
EEWORD DSB 1
EEDATA DSB 1
TBUG DSB 1
TBUH DSB 1
THJK DSB 1
ADBU1 DSB 1
ADBU2 DSB 1
ADBU3 DSB 1
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -