![]() |
|
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 |
|
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Jan 2011
Bài gửi: 10
: |
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 |
![]() |
![]() |
![]() |
#2 |
Nhập môn đệ tử
Tham gia ngày: Jan 2011
Bài gửi: 10
: |
hiz, buồn nhỉ, 2 ngày mà chả có bác nào cho em tí ý kiến, nếu em post bài có chỗ nào các bác không rõ thì pm cho em để em điều chỉnh. Cái này so với các bác chắc " muỗi" nhưng với em là cả bài toán "bự" . Mong nhận đc ý kiến !!
|
![]() |
![]() |
![]() |
|
|