;PROGRAM:4-9.ASM (4-9.PJT)2009.1029 ??0-99的??方式 加减按键
;FUNCTION:DISPLAY 0-9 FOR 7 SEG USING CTM CONTROLBy Steven
#INCLUDEHT66F3185.INC
;========================================================================================
MY_DATA.SECTION'DATA';==DATA SECTION==
DEL1 DB ? ;DELAY LOOP COUNT 1
DEL2 DB ? ;DELAY LOOP COUNT 2
DEL3 DB ? ;DELAY LOOP COUNT 3
COUNTDB?
COUNT1DB?
TBLP2 DB ?
TBLP1 DB ?
;========================================================================================
;*************weizhiling**************
SEG_PORTEQU PC
SEG_PORTCEQU PCC
PB_SW0EQUPB.0;DEFINE PUSH BOTTON PORT
PB_SW0CEQUPBC.0;DEFINE PUSH BOTTON PORT CON REG.
PB_SW0PUEQUPBPU.0
PB_SW1EQUPB.1;DEFINE PUSH BOTTON PORT
PB_SW1CEQUPBC.1;DEFINE PUSH BOTTON PORT CON REG.
PB_SW1PUEQUPBPU.1
;*********************************************************************************
MY_CODE.SECTIONAT 0 'CODE';==PROGRAM SECTION==
ORG00H;HT-66FX0 RESET VECTOR
JMP INIT
ORG004H;HT66FX0 EXT. INTERRUPT VECTOR
JMPINT0
ORG024H
JMP INT1
INIT:
CLR PCC;SEG_PORTC;CONFIG SEG_PORT AS OUTPUT MODEPCC output PAC
CLR PAC4
CLR PAC5
SET PB0
SET PB1
; SETPBPU.0;ENABLE PA3 PULL-UP;;;;;;;;
;SETPBC.0;CONFIG PA.3(INT0B) AS INPUT
;SETPBPU.1;ENABLE PA3 PULL-UP;;;;;;;;
;SETPBC.1;CONFIG PA.3(INT0B) AS IN
MOVA,10101000B
MOVWDTC,A
CLRFSS
MOVA,00001010B;SELECT INT0 FALLING EDGE TRIGGER
MOVINTEG,A
SETINT0E;ENABLE EXTERNAL INTERRUPT 0
CLRINT0F;ENABLE EXTERNAL INTERRUPT 0
SETINT1E;ENABLE EXTERNAL INTERRUPT 0
CLRINT1F
;ENABLE EXTERNAL INTERRUPT 0
SETEMI;ENABLE GLOBAL INTERRUPT
MAIN:
MOVA, TAB_7_SEG
MOVTBLP1,A;INITIAL POINTER START ADDRESS
;SET DTA COUNT OF TAB_7_SEG
MOVA, TAB_7_SEG
MOVTBLP2,A;INITIAL POINTER START ADDRESS
MOVA,10
MOVCOUNT,A
MOVA,10
MOVCOUNT1,A;SET DTA COUNT OF TAB_7_SEG
LOOP:
SET PA.4
MOV A,TBLP1
MOV TBLP,A
TABRDLSEG_PORT;READ TABLE AND SEND TO SEG_PORT 段?值?PC
MOV A,3
CALLDELAY;DELAY DEL1*4ms
CLR PA.4
SET PA.5
MOV A,TBLP2
MOV TBLP,A
TABRDLSEG_PORT;READ TABLE AND SEND TO SEG_PORT 段?值?PC
MOV A,3
CALLDELAY;DELAY DEL1*4ms
CLR PA.5
;COUNT DOWN BY
JMPLOOP;JUMP IF NOT TABLE END
;========================================================================================
;Delay about DEL1*4mS @fH=4MHz
;========================================================================================
DELAYPROC
MOVDEL1,A;SET DEL1 COUNTER
DEL_1: MOVA,10
MOVDEL2,A;SET DEL2 COUNTER
DEL_2:MOVA,110
MOVDEL3,A;SET DEL3 COUNTER
DEL_3:SDZDEL3 ;DEL3 DOWN COUNT
JMPDEL_3
SDZDEL2 ;DEL2 DOWN COUNT
JMPDEL_2
SDZDEL1;DEL1 DOWN COUNT
JMPDEL_1
RET
DELAYENDP
;**************zhongduanhanshu***************
INT0:
;CLRSTMAF
CLRINT0F
INCTBLP1;UPDATE TABLE POINTER
SDZCOUNT;COUNT DOWN BY 1
RETI
MOVA,10
MOVCOUNT,A
MOV A,0
MOV TBLP1,A
INCTBLP2;UPDATE TABLE POINTER
SDZCOUNT1;COUNT DOWN BY 1
RETI
MOVA,10
MOVCOUNT1,A
MOV A,0
MOV TBLP2,A
RETI
INT1:
;CLRSTMAF
CLRINT1F
INCTBLP1;UPDATE TABLE POINTER
SDZCOUNT;COUNT DOWN BY 1
RETI
MOVA,10
MOVCOUNT,A
MOV A,0
MOV TBLP1,A
INCTBLP2;UPDATE TABLE POINTER
SDZCOUNT1;COUNT DOWN BY 1
RETI
MOVA,10
MOVCOUNT1,A
MOV A,0
MOV TBLP2,A
RETI
ORGLASTPAGE;LASTPAGE
TAB_7_SEG:
DC 0a0h
DC 0f9h
DC0c4h
DC0d0h
DC099h;7 SEG CODE FOR COMMOM CATHOD LED
DC092h
DC082h
DC0f8h
DC080h
DC098h;CONNECT BIT 0-7 FOR SEGMENT A-H
END