4 9 TimerCounter HT 66 F 50 Revised

  • Slides: 21
Download presentation
4 -9 Timer/Counter 控制七段速度 HT 66 F 50 Revised 2014/11/12 1

4 -9 Timer/Counter 控制七段速度 HT 66 F 50 Revised 2014/11/12 1

5

5

9

9

TMn. C 0 控制暫存器(表 2 -5 -12) Tn. PAU Tn. CK 2 Tn. CK

TMn. C 0 控制暫存器(表 2 -5 -12) Tn. PAU Tn. CK 2 Tn. CK 1 Tn. CK 0 Tn. ON Tn. RP 2 Tn. RP 1 Tn. RP 0 Bit 7 6 5 4 3 2 1 0 Bit [7] ; Tn. PAU = 1, 暫停計數 = 0, 繼續計數 Bit [6 5 4] ; Tn. CK 2 Tn. CK 1 Tn. CK 0 = 000 , f. INT= fsys/4 =100, f. INT= f. INT = 001 , f. INT= fsys =101 , 保留 = 010 , f. INT= fsys/16 =110 , f. INT=TCKn = 011 , f. INT= fsys/64 =111 , f. INT= TCKn’ Bit [3] ; Tn. ON =1 , 開始計數 =0, 停止計數 11

TMn. C 0 控制暫存器 Tn. PAU Tn. CK 2 Tn. CK 1 Tn. CK

TMn. C 0 控制暫存器 Tn. PAU Tn. CK 2 Tn. CK 1 Tn. CK 0 Tn. ON Tn. RP 2 Tn. RP 1 Tn. RP 0 Bit 7 6 5 4 3 2 1 0 Bit [2 1 0 ] ; Tn. RP 2 Tn. RP 1 Tn. RP 0 = 000 , 週期= 1024 x f. INT -1 = 001 , 週期= 128 x f. INT -1 = 010 , 週期= 256 x f. INT -1 = 011 , 週期= 384 x f. INT -1 =100, 週期= 512 x f. INT -1 -1 =101 , 週期= 640 x f. INT -1 =110 , 週期= 768 x f. INT -1 =111 , 週期= 896 x f. INT 12

MFIO暫存器 Bit 7 Bit 0 T 2 AF T 2 PF T 0 AF

MFIO暫存器 Bit 7 Bit 0 T 2 AF T 2 PF T 0 AF T 0 PF E 2 AE T 2 PE T 0 AE T 0 PE 17

4 -9. ASM ; PROGRAM : 4 -9. ASM ; FUNCTION: DISPLAY 0~9 FOR

4 -9. ASM ; PROGRAM : 4 -9. ASM ; FUNCTION: DISPLAY 0~9 FOR 7 SEG USING TMR CONTROL #INCLUDE HT 66 F 50. INC ; ----------------------------------MY_DATA. SECTION 'DATA' ; == DATA SECTION == DEL 1 DB ? COUNT DB ? ; ----------------------------------SEG_PORT EQU PD ; DEFINE 7 -SEG PORT SEG_PORTC EQU PDC ; DEFINE 7 -SEG PORT ; CONTROL REG. 18

MY_CODE. SECTION AT 0 ORG 00 H CLR SEG_PORTC MOV A, 00100000 B MOV

MY_CODE. SECTION AT 0 ORG 00 H CLR SEG_PORTC MOV A, 00100000 B MOV TM 0 C 0, A MOV A, 11000001 B TM 0 C 1, A MOV MOV A, LOW 1000 TM 0 AL, A A, HIGH 1000 TM 0 AH, A 'CODE' ; == PROGRAM SECTION == ; HT-46 RXX RESET VECTOR ; CONFIG SEG_PORT AS OUTPUT ; STOP CTM, T 0 CK[2: 0]=010 ; f. INT=f. SYS/16 (4 MHz/16) ; TOON=0: Timer 不計數 ; Config. CTM in Timer/counter mode ; TM 0 D in cleared by TM 0 CCRA match ; TM 0 CCRA=1, 計數至 TM 0 D=TM 0 A ; 清除計數器 ; 4 ms (1000/f. INT) ; SET TM 0 CCRA value low byte ; [TM 0 A] is 10 bit ; SET TM 0 CCRA value high byte 19

MAIN: MOV MOV A, OFFSET TAB_7_SEG TBLP, A ; INITIAL POINTER START ADDRESS A,

MAIN: MOV MOV A, OFFSET TAB_7_SEG TBLP, A ; INITIAL POINTER START ADDRESS A, 10 COUNT, A ; SET DATA COUNT OF TAB_7_SEG LOOP: TABRDL CALL INC SDZ JMP SEG_PORT ; READ TABLE AND SEND TO SEG_PORT DELAY ; DELAY TBLH*10 m. S TBLP ; UPDATE TABLE POINTER COUNT ; COUNT DOWN BY 1 LOOP ; JUMP IF NOT TABLE END MAIN ; RESTART 20

; ********************************** ; Delay 1 sec [1/ f. INT x DEL 1(250) x TM

; ********************************** ; Delay 1 sec [1/ f. INT x DEL 1(250) x TM 0 A ; ********************************** DELAY PROC SET TOON; START COUNTING DEL_1: MOV A, 250; 250*4 ms MOV DEL 1, A; DEL_2 SNZ T 0 AF; Compare Match TM 0 CCRA [bit 5 of MFIO] JMP DEL_2; NO, wait CLR T 0 AF; Yes, 4 ms is over SDZ DEL 1; Is 1 sec over JMP DEL_2; No CLR TOON; yes, stop STPU RET; DELAY ENDP ORG LASTPAGE; TAB_7_SEG: DC 03 Fh, 006 h, 05 Bh, 04 Fh, 066 h; 7 SEG CODE for COMMON CODE DC 06 Dh, 07 Dh, 007 h, 07 Fh, 067 h; END 21