|
Tài trợ cho PIC Vietnam |
MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ... |
|
Ðiều Chỉnh | Xếp Bài |
12-07-2009, 11:29 AM | #2 |
Đệ tử 6 túi
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Di Linh
Bài gửi: 131
: |
Khi bạn nạp 1 giá tri vào thanh ghi OPTION_REG thì timer0 bắt đầu chạy, bạn không thể kiếm soát việc Start, Stop của nó được. Nói chính xác là timer0 chạy song song với chương trình.
Đây là bài đơn giản tôi viết để test ngắt Timer0, hy vọng giúp ích cho bạn Code:
TITLE " nhap nhay rb0_dung timer0 " PROCESSOR P16F877A INCLUDE <P16F877A.inc> __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC &_LVP_OFF &_CPD_OFF &_BODEN_OFF ;============phan dat bien============================= COUNT EQU 0X23 ;===========Phan chuong trình chính====================== ORG 0x00 GOTO MAIN ORG 0X04 ; dia chi vector ngat, tat ca ngat chi co dia chi nay GOTO NGAT ORG 0x0005 MAIN MOVLW .56 ; nap 56 vao de timer0 dem dc 200 lan thi tran MOVWF TMR0 BANKSEL TRISB CLRF TRISB MOVLW B'10100000' ; cho phep ngat GLOBAL, ngat TIMER0 MOVWF INTCON MOVLW B'00000111' ; che do chia 256 , tuc la 256 ckm thi timer0 dem len 1 MOVWF OPTION_REG ; nap vao OPTION, timer0 bat dau chay BANKSEL PORTB CLRF PORTB MOVLW .20 ; viec tang giam thoi gian la do gia tri nap trong COUNT MOVWF COUNT GOTO $ ; cho ngat o day NGAT BTFSS INTCON,T0IF ; Kiem tra xe co phai ngat xay ra la ngat timer_0 hay khong GOTO THOAT_NGAT ; khong phai ngat timer_0 thi thoat BCF INTCON,7 ; ko cho phep ngat nao xay ra nua ; ko can thiet vi khi ngat xay ra, c.trinh tu dong ; xoa bit GIE ( ngat toan cuc). DECFSZ COUNT,1 ; giam COUNT de duoc 20 lan ngat GOTO THOAT_NGAT ; chua du thi thoat MOVLW .20 MOVWF COUNT ;########## doan c.trinh set / clear RB0.############ BTFSS PORTB,0 GOTO SET_RB0 CLR_RB0 BCF PORTB,0 GOTO THOAT_NGAT SET_RB0 BSF PORTB,0 ;######### ket thuc doan c.trinh set / clear RB0 ########### THOAT_NGAT MOVLW .56 ; nap lai gia tri ban dau cho timer 0 MOVWF TMR0 BCF INTCON,2 ; xoa co tran timer 0 (cung la co bao ngat) ; phai xoa co nay de co ngat tiep theo xay ra RETFIE ; lenh nay cung set bit GIE ( ngat toan cuc). END thay đổi nội dung bởi: phandinh, 12-07-2009 lúc 11:38 AM. Lý do: dinh dang lai code |
|
|