Timer T0 trong chế độ chia tỏch

Một phần của tài liệu bai giang VXL potx (Trang 149 - 150)

Tương tự như cỏc vớ dụ trước, chương trỡnh dành phần lớn thời gian của mỡnh trong vũng một gọi là LOOP1. Từ 16-bit Timer T0 được chia thành hai 8-bit timers, cũng cú hai nguồn ngắt.

Ngắt đầu tiờn được tạo ra sau khi Reset timer T0. Thủ tục TIM0_ISR, thực hiện bit logic khụng (0) xoay quanh cổng P1. Nhỡn từ bờn ngoài, cú vẻ như là di chuyển LED.

Một ngắt được tạo ra khi thiết lập lại Timer T1. Thủ tục TIM1_ISR thực hiện một bit HƯỚNG dựng để đảo chiều của bit trước. Kể từ khi bit này xỏc định hướng bit sỏng LED, LED sẽ quay theo hướng của bit HƯỚNG. Nếu bạn bấm một nỳt nhấn T1 tại một số điểm, một logic số khụng (0) trờn đầu vào P3.2 sẽ vụ hiệu húa Timer T1.

;************************************************************************ ;* PROGRAM NAME : Split.ASM

;* DESCRIPTION: Timer TL0 rotates bit on port P1, while TL1 determines ;* the rotation direction. Both timers operate in mode

;* 3. Logic zero (0) on output P3.2 disables rotation on port P1.

;************************************************************************ ;BASIC DIRECTIVES $MOD53 $TITLE(SPLIT.ASM) $PAGEWIDTH(132) $DEBUG $OBJECT $NOPAGING ;DECLARATION OF VARIABLES BSEG AT 0 ;DECLARATION OF BIT-VARIABLES SEMAPHORE: DBIT 8

DIRECTION BIT SEMAPHORE ;STACK

DSEG AT 03FH STACK_START: DS 040H ;RESET VECTORS

CSEG AT 0

JMP XRESET ; Reset vector ORG 00BH

JMP TIM0_ISR ; Timer T0 reset vector ORG 01BH

JMP TIM1_ISR ; Timer T1 reset vector ORG 100H

XRESET: MOV SP,#STACK_START ; Define Stack pointer MOV TMOD,#00001011B ; Define MOD3

MOV A,#0FFH MOV P1,#0FFH MOV R0,#30D

SETB TR0 ; TL0 is turned on SETB TR1 ; TL1 is turned on

Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 150

MOV IE,#08AH ; Interrupt enabled CLR C

CLR DIRECTION ; Rotate to the right LOOP1: SJMP LOOP1 ; Remain here

TIM0_ISR:

DJNZ R0,LAB3 ; Slow down rotation by 256 times JB DIRECTION,LAB1

RRC A ; Rotate contents of Accumulator ;to the right through

; Carry flag SJMP LAB2

LAB1: RLC A ; Rotate contents of Accumulator ;to the left through

; Carry flag

LAB2: MOV P1,A ; Contents of Accumulator is ;moved to port P1

LAB3: RETI ; Return from interrupt TIM1_ISR:

DJNZ R1,LAB4 ; Slow down direction

;of rotation by 256 times DJNZ R2,LAB4 ; When time expires,

;change rotation direction CPL SMER

MOV R2,#30D LAB4: RETI

END ; End of program

Một phần của tài liệu bai giang VXL potx (Trang 149 - 150)

Tải bản đầy đủ (PDF)

(169 trang)