請問各位前輩有關16f687的問題
|
||||
---|---|---|---|---|
新會員
|
不好意思,因為我要利用RA3當作INPUT來判斷燈是否會亮
當RA3=LOW時燈就會亮,RA3=HIGH時燈就不會亮 可是我利用示波器來觀看結果,當RA3=HIGH時燈卻亮起來 那我也檢查過程式覺得沒有問題,所以來此問各位前輩哪裡有問題,以下是程式碼: ; =================================================================== ; Macros SelBank0 macro BCF STATUS,RP1 BCF STATUS,RP0 endm SelBank1 macro BCF STATUS,RP1 BSF STATUS,RP0 endm SelBank2 macro BSF STATUS,RP1 BCF STATUS,RP0 endm SelBank3 macro BSF STATUS,RP1 BSF STATUS,RP0 endm ;********************************************************************** ORG 0x000 ; processor reset vector GOTO MAIN ; go to beginning of program ORG 0X004 GOTO INTERRUPT ;----------------------------------------------- ; PORTA SETTING ;------------------------------------------------ SelBank0 BANKSEL PORTA MOVLW B'00011001' ;#B'00011001' MOVWF PORTA SelBank1 MOVLW B'00101111' ;#B'00101111' MOVWF TRISA SelBank2 ;Bank 2 CLRF ANSEL ;digital I/O CLRF WPUA ;disabled pull-up BANKSEL IOCA MOVLW B'00001001' ;#B'00000000' MOVWF IOCA ;--------------------------------------------- ; PORTC SETTING ;--------------------------------------------- SelBank0 MOVLW B'00010000' ;#B'00000000' MOVWF PORTC SelBank1 MOVLW B'11000000' ;#B'00001111' MOVWF TRISC MAIN DisableInterrupts CALL INITIAL EnableInterrupts CALL VARIABLE_INITIAL DELAY MOVLW .150 CALL Delay_Process DELAY1 MOVLW .0 XORWF Delay10msCountReg,W BTFSS STATUS,Z GOTO DELAY1 GOTO DELAY ;---------------------------------------------------------- INTERRUPT T0_ISR ; do Timer 0 stuff here CALL T0_ISR_Process SelBank0 MOVLW .216 MOVWF TMR0 BCF INTCON,T0IF; GOTO ISR_DONE ;------------------------------------------------------------ ; TO_ISR_PROCESS ;----------------------------------------------------------- T0_ISR_Process DECF Delay10msCountReg,F CALL CheckAudio_Process RETURN ;----------------------------------------------------------------- ; FINISH THE INTERRUPTION ;------------------------------------------------------------------ ISR_DONE ;finished with the ISR, return MOVF status_temp,w ; retrieve copy of STATUS register MOVWF STATUS ; restore pre-isr STATUS register contents SWAPF w_temp,f SWAPF w_temp,w ; restore pre-isr W register contents RETFIE ; return from interru ;-------------------------------------------------------------- CheckAudio_Process SelBank0 BTFSC PORTA,RA3 -->初始為HIGH GOTO CheckOffAudio_Process CLRF NoAudio10msCountReg CLRF NoAudio1sCountReg BSF PORTC,RC0--->燈卻亮起來 BSF AudioFlag1Reg,AudioDetectF1 ; GOTO POWERON RETURN END
發表於: 2008/8/13 14:58
|
|||
|