|
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 |
10-07-2009, 05:45 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Jul 2008
Bài gửi: 3
: |
Xin hỏi về ngắt timer của pic16f877a
Mấy ngày nay em trầy trật hoài với cái ngắt timer trong pic. Em không biết là mình cho chạy timer bằng cách nào? (timer0) (trong C có hàm set_timer0()). Trong chương trình phục vụ ngắt mình có dừng timer lại như trong 8051 không?
Đoạn code này em đánh dựa trên hướng dẫn của mấy bài trên diễn đàn. Lúc đầu led sáng số 0, rồi tăng dần khi timer tràn. Trong code em chưa tính thời gian tràn( cho nó nhảy trước rồi tính toán sau), và sau mấy ngày kiếm cách set_timer0() bằng ASM chương trình này chắp vá lung tung rồi. Em mong các tiền bối cảm phiền chỉ dùm em LÀM SAO CHO TIMER0 chạy? ;xuat ra port D ;a la MSB noi voi PD.7 Code:
TITLE "TIMER0" PROCESSOR P16F877A INCLUDE <P16F877A.INC> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &_WRT_OFF & _LVP_OFF & _CPD_OFF ORG 0x020 V_DONVI EQU 0x20 VDEM EQU 0x25 PCLATH_save EQU 0x26 W_save EQU 0x27 STATUS_save EQU 0x28 FSR_save EQU 0x29 ORG 0x0000 GOTO MAIN ORG 0x0004 GOTO ISR_TMR0 ORG 0x0005 MAIN ;dat cau hinh xuat nhap ;---------------------------------------------- BCF STATUS,RP1 BSF STATUS,RP0 ; chon BANK1 MOVLW 0x00 MOVWF TRISD MOVLW b'11111100' MOVWF TRISB ; ;---------------------------------------------- BCF STATUS,RP0 ; chon BANK0 movlw 0xff movfw VDEM movlw 0x00 movwf V_DONVI call HIENTHI CLRF TMR0 CLRF INTCON BSF STATUS,RP0 MOVWF OPTION_REG BCF STATUS,RP0 BSF INTCON,TMR0IE BSF INTCON,GIE goto $ ;END MAIN ;-------------------------------------------------- ;chuong trinh phuc vu ngat cua timer 0 ;-------------------------------------------------- ISR_TMR0 ;doan chuong trinh bat buoc khi di vao 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 EXIT1 BCF INTCON,TMR0IF ;--------------------------------------------------- decfsz VDEM,f goto EXIT1 movlw 0xff movfw VDEM banksel V_DONVI incf V_DONVI,f call HIENTHI EXIT1 ;------------------------------------------ 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 con hien thi ;--------------------------------------------------- HIENTHI banksel V_DONVI movwf V_DONVI movfw V_DONVI call TABLE banksel PORTD movwf PORTD RETURN ;--------------------------------------------------- ;Xay dung bang ;--------------------------------------------------- ORG 0x80 TABLE addwf PCL,F retlw 0x03 ;so 0 retlw 0x9f ;so 1 retlw 0x25 ;so 2 retlw 0x0d ;so 3 retlw 0x99 ;so 4 retlw 0x49 ;so 5 retlw 0x41 ;so 6 retlw 0x1f ;so 7 retlw 0x01 ;so 8 retlw 0x09 ;so 9 END thay đổi nội dung bởi: namqn, 10-07-2009 lúc 06:07 PM. Lý do: định dạng code |
|
|