|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
01-07-2011, 05:49 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Nov 2009
Bài gửi: 5
: |
lỗi ngắt timer0
chào mọi người hiện giờ mình đang bắt đầu học pic nhưng bị lỗi mong các đàn anh giúp đỡ.
em viết một chương trình đếm đơn giản từ 0->99. mà tại sao khi em gọi trong hàm delay nếu cho "d'50'" thì mạch chạy đúng nhưng khi cho những giá trị khác thì lại sai. mong các đàn anh giúp đỡ Đây là code của em LIST P=16F877A #INCLUDE P16F877A.INC ; khai bao bien COUNT1 EQU 0x20 COUNTA EQU 0x21 COUNTB EQU 0x22 HANGCHUC EQU 0x23 HANGDONVI EQU 0x24 W_SAVE EQU 0x25 PCLATH_save EQU 0x26 STATUS_save EQU 0x27 FSR_SAVE EQU 0x28 ORG 0x004 GOTO ISR ISR ;CHUONG TRINH NGAT MOVWF W_SAVE SWAPF STATUS,W CLRF STATUS MOVWF STATUS_save MOVF PCLATH,W MOVWF PCLATH_save CLRF PCLATH MOVF FSR,W MOVWF FSR_SAVE BTFSS INTCON,TMR0IF GOTO exit_int BCF INTCON,TMR0IF ;------------------------------------------------ ; CÁC THAO TÁC CHÍNH TRONG NGAT INCF HANGDONVI,1 MOVLW 0x0A XORWF HANGDONVI,0 BTFSS STATUS,Z GOTO exit_int CLRF HANGDONVI INCF HANGCHUC,1 MOVLW 0x0A XORWF HANGCHUC,0 BTFSS STATUS,Z GOTO exit_int CLRF HANGCHUC GOTO exit_int ;---------------------------- ;ket thuc ngat exit_int MOVF FSR_SAVE,W MOVWF FSR MOVF PCLATH_save,W MOVWF PCLATH SWAPF STATUS_save,W MOVWF STATUS SWAPF W_SAVE,1 SWAPF W_SAVE,0 RETFIE ;----------------------------; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;----------------------------; ;chuong trinh chinh ORG 0x00 GOTO MAIN ORG 0x050 MAIN ;khoi taoj port BCF STATUS,RP1 BSF STATUS,RP0 MOVLW 0x00 MOVWF TRISD MOVLW b'11111100' MOVWF TRISB BCF STATUS,RP0 CLRF PORTD MOVLW b'00000011' MOVWF PORTB ; KHOI TAO TIME0 CLRF TMR0 CLRF INTCON BSF STATUS,RP0 MOVLW b'10000001' MOVWF OPTION_REG BCF STATUS,RP0 BSF INTCON,TMR0IE BSF INTCON,PEIE BSF INTCON,GIE ;khoi tao bien CLRF HANGCHUC CLRF HANGDONVI START CALL HIENTHI GOTO START HIENTHI MOVF HANGCHUC,0 CALL TABLE MOVWF PORTD MOVLW b'11111101' MOVWF PORTB CALL DELAY CLRF PORTB MOVF HANGDONVI,0 CALL TABLE MOVWF PORTD MOVLW b'11111110' MOVWF PORTB CALL DELAY CLRF PORTB RETURN TABLE ADDWF PCL,1 RETLW 0xC0 RETLW 0xF9 RETLW 0xA4 RETLW 0xB0 RETLW 0x99 RETLW 0x92 RETLW 0x82 RETLW 0xF8 RETLW 0x80 RETLW 0x90 DELAY MOVLW d'60' MOVWF COUNT1 d2 MOVLW 0xC7 MOVWF COUNTA MOVLW 0x01 MOVWF COUNTB delay_1 DECFSZ COUNTA,1 GOTO $+2 DECFSZ COUNTB,1 GOTO delay_1 DECFSZ COUNT1,1 GOTO d2 RETURN END ; c |
|
|