Vớ dụ này mụ tả việc sử dụng cỏc Timer T2 cấu hỡnh để hoạt động ở chế độ tự động cập nhật. Trong trường hợp này, đốn LED được kết nối với cổng P3 trong khi cỏc nỳt nhấn được sử dụng để bắt buộc thiết lập lại bộ đếm thời gian (T2EX) được kết nối với chõn P1.1.
Chương trỡnh thực hiện tương tự như cỏc vớ dụ trước. Khi kết thỳc giờ đếm, một ngắt được kớch hoạt và chương trỡnh con TIM2_ISR được thi hành, do đú quay một logic khụng (0) trong accumulator và di chuyển nội dung của accumulator với chõn P3. Cuối cựng, cờ đú gõy ra một ngắt, được xúa và trả về chương trỡnh cho vũng lặp LOOP1 nơi nú vẫn cũn cho đến khi một yờu cầu ngắt mới xảy rạ..
Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 151 Nếu bấm T2EX, bộ đếm thời gian tạm thời đặt lạị Nỳt bấm này reset lại timer, trong khi nỳt nhấn RESET resets cỏc vi điều khiển.
;************************************************************************ ;* PROGRAM NAME : Timer2.ASM
;* DESCRIPTION: Program rotates log. "0" on port P3. Timer2 determines ;* the speed of rotation and operates in auto-reload mode
;************************************************************************ ;BASIC DIRECTIVES $MOD53 $TITLE(TIMER2.ASM) $PAGEWIDTH(132) $DEBUG $OBJECT $NOPAGING ;DEFINITION OF VARIABLES T2MOD DATA 0C9H ;STACK DSEG AT 03FH STACK_START: DS 040H ;RESET VECTORS CSEG AT 0
JMP XRESET ; Reset vector
ORG 02BH ; Timer T2 Reset vector JMP TIM2_ISR
ORG 100H
XRESET: MOV SP,#STACK_START ; Define Stack pointer MOV A,#0FFH
MOV P3,#0FFH
MOV RCAP2L,#0FH ; Prepare 16-bit auto-reload mode MOV RCAP2L,#01H
Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 152
SETB EXEN2 ; Pin P1.1 reset is enabled SETB TR2 ; Enable Timer T2
MOV IE,#0A0H ; Interrupt is enabled CLR C
LOOP1: SJMP LOOP1 ; Remain here
TIM2_ISR: RRC A ; Rotate contents of Accumulator ;to the right through
; Carry flag
MOV P3,A ; Move the contents of ;Accumulator A to PORT3 CLR TF2 ; Clear timer T2 flag TF2 CLR EXF2 ; Clear timer T2 flag EXF2 RETI ; Return from interrupt END ; End of program