PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Giúp em sửa lỗi này với (http://www.picvietnam.com/forum/showthread.php?t=5973)

kid1412hv 19-03-2010 11:45 PM

Giúp em sửa lỗi này với
 
Em mới học Pic, em không biết cách viết ngắt.

Nhờ các bác viết giúp em ngắt bằng timer sau mỗi giây một được không ạ?

Em viết bài đếm tăng dần led 7 thanh dùng ngắt mà khi chạy mô phỏng không đúng. Mong anh em xem dùm và chỉ giáo cho em biết với.
Code:

                processor                16f877a
                include                        <p16f877a.inc>
                __CONFIG        _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
;-------------------
;Khai bao bien
;--------------------
count1                EQU        0x20
counta                equ        0x21
countb                equ        0x22                ;cac thanh ghi dung cho chuong trinh delay_1ms

hang_don_vi        equ        0x23
hang_chuc        equ        0x24                ;cac thanh ghi chua cac gt hang chuc va hang dv

count                equ        0x25
display_reg        equ        0x26
xx                        equ        0x27
xx1                        equ        0x28                ;cac thanh ghi phu

W_save                equ        0x29
PCLATH_save        equ        0x30
STATUS_save        equ        0x31
FSR_save        equ        0x32                ;cac thanh ghi danh cho ct ngat

sodem                equ        0x33
               
                        org        0x0004
                        goto        isr

;---------------
;chuong trinh ngat
;-----------------------
isr
;---------------------
;doan chuong trinh bat buoc khi bat dau ct 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
;----------------------------
;kiem tra co ngat
;---------------------------------
                        btfss        PIR1,TMR1IF                ;kiem tra co ngat cua timer1
                        goto        exit_int       
                        bcf                T1CON,TMR1ON        ;tam thoi tat timer1 de khoi tao lai
;--------------------------------
;cac thao tac chinh cua chuong trinh ngat;
;-------------------------------------------
                        clrf        TMR1L                        ;khoi tao lai cac gt trong thanh ghi TMRL
                        clrf        TMR1H                        ;va TMRH
                        movlw        0x61                        ;dua vao cac thanh ghi dem cua timer1
                        movwf        TMR1H
                        movlw        0xA8
                        movwf        TMR1L

                        bsf                T1CON,TMR1ON        ;bat timer1
                        bcf                PIR1,TMR1IF                ;xoa co ngat

                        incf        count
                        movlw        d'5'
                        xorwf        count,0
                        btfss        STATUS,Z
                        goto        exit_int                ;neu chua bang 5 thoat
                        clrf        count                        ;bang roai thi reset lai count

                        incf        hang_don_vi,1        ;tang hang don vi len 1
                        movlw        0x0A
                        xorwf        hang_don_vi,0        ;so sanh voi 10
                        btfss        STATUS,Z
                        goto        exit_int                ;neu khong bang 10 thi thoat ngat
                        clrf        hang_don_vi                ;neu bang thi xoa hang don vi
                        incf        hang_chuc,1                ;tang hang chuc len 1
                        movlw        0x0A
                        xorwf        hang_chuc,0
                        btfss        STATUS,Z                ;so sanh hang chuc voi 10
                        goto        exit_int                ;khong bang 10 thi thoat ngat
                       
                        clrf        hang_chuc                ;neu bang thi xoa hang chuc
               
                       
;------------------------
;doan chuong trinh de 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

                        org                0x0000
                        goto        start
;-------------------------------
;chuong trinh chinh
;------------------------------
start
;--------------------------------
;khoi tao cac Port dieu khien
;------------------------------------
                        bcf                STATUS,RP1
                        bsf                STATUS,RP0                ;chon bank1
                        movlw        0x00                       
                        movwf        TRISD                        ;gan portD la output
                        movlw        b'11000000'
                        movwf        TRISB
                        bcf                STATUS,RP0
                        clrf        PORTD
                        movlw        b'00111111'                ;tat tat ca cac Led
                        movwf        PORTB
;-----------------------------
;khoi tao timer1
;-----------------------------
                        clrf        T1CON
                        clrf        INTCON
                        clrf        TMR1H
                        clrf        TMR1L
                        bsf                STATUS,RP0                ;chon bank1
                        clrf        PIE1
                        bsf                PIE1,TMR1IE                ;cho phep ngat timer1
                        bcf                STATUS,RP0                ;chon bank0
                        clrf        PIR1                        ;xoa tat ca cac co ngat
                        movlw        0x30
                        movwf        T1CON
                        movlw        0x61
                        movwf        TMR1H
                        movlw        0xA8
                        movwf        TMR1L
               
                        bsf                T1CON,TMR1ON        ;bat timer1
                        bsf                INTCON,TMR1IE        ;cho phep ngat Timer1
                        bsf                INTCON,PEIE                ;cho phep ngat ngoai vi
                        bsf                INTCON,GIE                ;cho phep toan bo cac ngat
                       
;-------------------------------------
;khoi tao cac bien
;-------------------------------------
                        clrf        hang_don_vi       
                        clrf        hang_chuc
               
;------------------------------
;vong lap chinh
;-------------------------------
main
                        call        hien_thi
                        goto        main
hien_thi
                        movf        hang_chuc
                        call        table
                        movwf        PORTD
                        movlw        b'11111101'
                        movwf        PORTB
                        call        delay_1ms
                        movf        hang_don_vi
                        call        table
                        movwf        PORTD
                        movlw        b'11111110'
                        movwf        PORTB
                        call        delay_1ms
                        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_1ms
                        movlw        d'1'
                        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

http://i200.photobucket.com/albums/a.../led7thanh.jpg


Múi giờ GMT. Hiện tại là 06:52 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam