mấy bác check giúp em chương trình Dem SP với
tình hình là em hì hụi viết cả buổi chiều, kiểm tra từng bước, nhưng cuối cùng nó không chạy được ( build succeeded) , em post hình chạy proteus và code các bác xem cho em với, thanks các bác nhiều nhiều ^^
- ngắt timer hoạt động tốt, nhưng ngắt RB0 thì không
- em thay 2 led thu phát = nút bấm, có phải nếu mắc thu phát thì con thu mắc ở chân RB0
- trong lúc ngắt timer có đếm k ?
(pm : em chả thấy khung nhập code ở đâu hết, mod edit giùm em )
----------------------------------
list p=16f877a ; list directive to define processor
#include <p16f877a.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _RC_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF
ORG 0X00
GOTO MAIN
ORG 0X04
GOTO NGAT
MAIN
;KHOI TAO CAC BIEN
CBLOCK 0X20
HC
HDV
W_SAVE
FSR_SV
STAT_SV
PCH_SV
ENDC
; CAI DAT PORT VA TIMER
BANKSEL TRISD
CLRF TRISD ; PORTD LA OUTPUT
MOVLW b'00000001'
MOVWF TRISB ; RB0 LA INPUT
BANKSEL PORTB
CLRF PORTB
CLRF PORTD
BSF INTCON, GIE ; CAT DAT NGAT TOAN CUC
BSF INTCON, TMR0IE ; CAI DAT NGAT TIMER0
BSF INTCON, INTE ; CAI DAT NGAT RB0
BANKSEL OPTION_REG ;
BCF OPTION_REG, T0CS ; CHON CHE DO TIMER
BCF OPTION_REG, 6 ; NGAT THEO SUON XUONG
BSF OPTION_REG, 2 ;
BSF OPTION_REG, 1 ; CHON BO CHIA 1:256
BSF OPTION_REG, 0 ;
BANKSEL PORTD ;
MOVLW d'180' ; TIMER0 = 180 , 20ms
MOVWF TMR0 ;
CLRF HC
CLRF HDV
; CHUONG TRINH CHINH
MOVLW HC ; HIEN THI HANG CHUC
CALL TABLE
MOVWF PORTD
MOVLW HDV ; HIEN THI HANG DON VI
CALL TABLE
MOVWF PORTD
; CHUONG TRINH NGAT
NGAT
; PHAN KHOI DAU NGAT
MOVWF W_SAVE ;W_SAVE(bank unknown!) = W
SWAPF STATUS, W
CLRF STATUS ; force bank 0 for remainder of handler
MOVWF STAT_SV ; STAT_SV = swap_nibbles( STATUS )
; STATUS = 0
MOVF PCLATH, W
MOVWF PCH_SV ; PCH_SV = PCLATH
CLRF PCLATH ; PCLATH = 0
MOVF FSR, W
MOVWF FSR_SV ; FSR_SV = FSR
; 10 cycles from interrupt to here!
;NOI DUNG CHUONG TRINH NGAT
BTFSC INTCON, TMR0IF
GOTO NGAT_TIMER
GOTO NGAT_RB0
;NGAT TIMER0 SAU 20MS
NGAT_TIMER
BCF INTCON, GIE
BCF INTCON, TMR0IF
BTFSS PORTB, 1
GOTO TATLED2
GOTO TATLED1
TATLED1
BCF PORTB, 1
BSF PORTB, 2
MOVLW d'180'
MOVWF TMR0
GOTO THOATNGAT
TATLED2
BCF PORTB, 2
BSF PORTB, 1
MOVLW d'180'
MOVWF TMR0
GOTO THOATNGAT
; NGAT RB0
NGAT_RB0
BCF INTCON, GIE
BCF INTCON, INTF
INCF HDV,1
MOVLW HDV
XORLW d'10'
BTFSS STATUS, C
GOTO THOATNGAT
CLRF HDV
INCF HC,1
MOVLW HC
XORLW d'10'
BTFSS STATUS, C
GOTO THOATNGAT
CLRF HC
GOTO THOATNGAT
;KET THUC CHUONG TRINH NGAT
THOATNGAT
MOVF FSR_SV, W
MOVWF FSR ; FSR = FSR_SV
MOVF PCH_SV, W
MOVWF PCLATH ; PCLATH = PCH_SV
SWAPF STAT_SV, W
MOVWF STATUS ; STATUS = swap_nibbles( STAT_SV )
SWAPF W_SAVE, F
SWAPF W_SAVE, W ; W = swap(swap( W_SAVE ))(no change Z bit)
BSF INTCON, GIE ; SET LAI NGAT TOAN CUC
RETFIE
TABLE
ADDWF PCL,1 ; sang maõ LED 7 ñoaïn
RETLW 0xC0
RETLW 0xF9
RETLW 0xA4
RETLW 0xB0
RETLW 0x99
RETLW 0x92
RETLW 0x82
RETLW 0xF8
RETLW 0x80
RETLW 0x90
goto $
END ; directive 'end of program'
-----------------------------
thay đổi nội dung bởi: romantics892005, 15-03-2011 lúc 09:41 PM.
Lý do: bổ sung file mô phỏng
|