PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   mấy bác check giúp em chương trình Dem SP với (http://www.picvietnam.com/forum/showthread.php?t=8074)

romantics892005 15-03-2011 05:09 PM

mấy bác check giúp em chương trình Dem SP với
 
1 Attachment(s)
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'



-----------------------------

romantics892005 17-03-2011 08:02 PM

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 !!


Múi giờ GMT. Hiện tại là 04:35 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