21.07.2013 Views

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Trường ĐH. Bách <strong>Khoa</strong> TP.HCM <strong>Khoa</strong> KH & KTMT<br />

;=====================;<br />

; Initializing timer 0: 16BIT<br />

;=====================;<br />

INIT_TIMER0<br />

;enable priority interrupts.<br />

BSF RCON,IPEN<br />

;set Timer0 as a HIGH priority interrupt source<br />

BSF INTCON2,TMR0IP<br />

;Clear the Timer0 interrupt flag.<br />

BCF INTCON,TMR0IF<br />

;enable Timer0 interrupts<br />

BSF INTCON,TMR0IE<br />

;set the global interrupt enable bits<br />

BSF INTCON,GIEH<br />

BSF INTCON,GIEL<br />

;initialize timer0: 10ms<br />

CLRF T0CON<br />

MOVLW 0x3c<br />

MOVWF TMR0H<br />

MOVLW 0xaf<br />

MOVWF TMR0L<br />

;turn on timer0<br />

BSF T0CON,TMR0ON<br />

RETURN<br />

Bước 6: Viết chương trình con chạy trong timer, sau 1s tăng giá trị hiện thị<br />

ra ngoài led đơn.<br />

Vì cứ 100ms thì có ngắt một lần, do đó để sau 1s ta tăng lên một giá trị thì<br />

cần 10 lần ngắt như vậy, nên ban đầu ta phải khởi tạo cho biến delay = 10. Và đây<br />

là hàm chính thực hiện chức năng của bài tập 1.<br />

TIMER0_ROUTINE<br />

BCF INTCON,TMR0IF<br />

DECFSZ delay,1<br />

GOTO TIMER0_ROUTINE_1<br />

INCF PORTB<br />

MOVLW .10<br />

MOVWF delay<br />

TIMER0_ROUTINE_1<br />

BCF T0CON,TMR0ON<br />

Bộ môn <strong>Kỹ</strong> Thuật <strong>Máy</strong> Tính 44 Thực hành Vi xử lý

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!