1 Timer
2 16 位元上數計數器 Up Counter 以 TMRC 暫存器設定 TMRC (TM1 TM0 – TON TE PSC2 PSC1 PSC0) 三種工作模式 (TM1 TM0 控制 ) 溢位時 TF(INT0.5) 位元設為 1
3 TMRC 暫存器 TM1 TM0 - TON TE PSC2 PSC1 PSC0 Bit Bit 未使用 0 1 計數模式 1 0 計時模式 1 1 脈衝寬度量測模式
4 Bit 5 未使用 Bit 4 TON 計數 / 計時控制位元 1 開始計數 0 停止計數 Bit 3 TE 計數 / 計時準位控制位元 1 計數時脈由 LOW -> HIGH 時加一 0 計數時脈由 HIGH -> LOW 時加一
5 Bit 2 0 (PSC2-PSC0) TMR 計數倍率位元 000F int =f sys 001F int =f sys /2 010F int =f sys /4 011F int =f sys /8 100F int =f sys /16 101F int =f sys /32 110F int =f sys /64 111F int =f sys /128
6 ;PROGRAM : 4-9.ASM (4-9.PRJ) ;FUNCTION: DISPLAY 0~9 FOR 7 SEG USING TMR CONTROL #INCLUDEHT46R23.INC.CHIPHT46R23 ; MY_DATA.SECTION'DATA' ;== DATA SECTION == DEL1DB? COUNTDB? ; SEG_PORTEQUPA;DEFINE 7-SEG PORT SEG_PORTCEQUPAC;DEFINE 7-SEG PORT ; CONTROL REG.
7 MY_CODE.SECTIONAT 0'CODE' ;== PROGRAM SECTION == ORG 00H ;HT-46RXX RESET VECTOR CLR SEG_PORTC;CONFIG SEG_PORT AS OUTPUT ;MODE MOVA, B;CONFIG TMR 0 IN MODE 2(TIMER ;MODE) MOVTMRC,A ;fINT=fSYS/4 (4MHz/4) MOVA,LOW ( ) MOVTMRL,A;SET TMR INITIAL VALUE ;LO-BYTE MOVA,HIGH ( ) MOVTMRH,A;SET TMR INITIAL VALUE ; HI-BYTE
8 MAIN: MOVA,TAB_7_SEG MOVTBLP,A ;INITIAL POINTER START ADDRESS MOVA,10 MOVCOUNT,A;SET DATA COUNT OF TAB_7_SEG LOOP: TABRDLSEG_PORT ;READ TABLE AND SEND TO SEG_PORT CALL DELAY;DELAY TBLH*10mS INCTBLP;UPDATE TABLE POINTER SDZCOUNT;COUNT DOWN BY 1 JMPLOOP;JUMP IF NOT TABLE END JMPMAIN;RESTART
9 ;******************************************************************** ; Delay about DEL1*(TMR)*1uS IF PSC=010 ;******************************************************************** DELAY PROC MOVA,20 MOVDEL1,A;SET OUTER COUNTER SETTON;START 50mS TIMER COUNTING DEL_1:SNZTF;TIMER OVERFLOW? JMPDEL_1;NO, WAIT! CLRTF;YES, 50mS IS OVER. SDZDEL1;IS 1 SEC OVER? JMPDEL_1;NO. CLRTON;YES, STOP TMR. RET
10 DELAYENDP ORGLASTPAGE TAB_7_SEG: DC B ;7 SEG CODE FOR COMMOM CATHOD LED DC B;CONNECT BIT 0~7 FOR SEGMENT A~H DC B;LOW-BYTE FOR 7 SEG DISPLAY CODE DC B DC B DC B DC B DC B DC B DC B END
11 延遲時間 =f int -1 x DEL1 (20) x 計數至溢位次數 F sys =4 MHz f int =F sys /4 延遲時間 =1us x 20 x =1 sec