|
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 |
25-12-2010, 09:05 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Sep 2010
Bài gửi: 3
: |
chương trình ngắt cho led
em đang viết chương trình ngắt cho 8 led chạy sáng đuổi nhau,khi ta ngắt chân RP7 hoặc RP6 hoặc RP5,RP4 thì chương trình sẽ thực hiện ngắt,em mới học nên loay hoay viết không được,mong các anh giúp đỡ em!!!
;================================================= ======= ; Ten chuong trinh : Mach chay led sang duoi ; Nguoi thuc hien : ductan ; Ngay thuc hien : 22/12/2010 ; Phien ban : 1.0 ; Mo ta phan cung : Dung PIC16F628A - thach anh 4MHz ; : LED giao tiep voi PORTB ; : Cuc am cua LED noi voi GND ; : RB0 - RB7 la cac chan output ;---------------------------------------------------------------- ; Ngay hoan thanh : ; Ngay kiem tra : ; Nguoi kiem tra : ;---------------------------------------------------------------- ; Chu thich : ; : ; : ; : ; : ; : ;================================================= ======= processor 16f877a include <p16f877a.inc> __CONFIG _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_ON&_XT_OSC&_WRT _OFF&_LVP_OFF&_CPD_OFF count1 equ 0x20 counta equ 0x21 countb equ 0x22 count equ 0x23 W_SAVE EQU 0X24 PCLATH_SAVE EQU 0X25 STATUS_SAVE EQU 0X26 FSR_SAVE EQU 0X28 ORG 0X0004 GOTO ISR ISR 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 ;------------------------------------------- ;chuong trinh chinh ;------------------------------------------------- BTFSS INTCON,INTE GOTO exit_int BCF INTCON,INTE BSF INTCON,7 BSF INTCON,6 exit_int MOVF FSR_SAVE,W MOVWF FSR MOVF PCLATH_SAVE,W MOVWF PCLATH SWAPF STATUS_SAVE,W MOVWF STATUS SWAPF W_SAVE,F SWAPF W_SAVE,W RETFIE org 0x0000 goto start ORG 0X0050 start bcf STATUS,RP1 bcf STATUS,RP0 clrf PORTB bsf STATUS,RP0 movlw 0X00 movwf TRISB bcf STATUS,RP0 loop1 clrf count loop2 movf count,0 call table movwf PORTB call delay100ms incf count,0 xorlw d'8' btfsc STATUS,Z goto loop1 incf count,1 goto loop2 table ADDWF PCL,1 retlw b'10000000' retlw b'01000000' retlw b'00100000' retlw b'00010000' retlw b'00001000' retlw b'00000100' retlw b'00000010' retlw b'00000001' delay100ms movlw d'100' movwf count1 d1 movlw 0xc7 movwf counta movlw 0x01 movwf countb delay_0 decfsz counta,1 goto $+2 decfsz countb,1 goto delay_0 decfsz count1,1 goto d1 return end |
|
|