babboy12345
New Member
now i have a problem for my music input keep turn on my relay.what can i slove this??? i try to edit my program to let my relay dont turn on too oftenly,but fail,any 1 pls help???
Code:
LIST P=16F877A
INCLUDE "P16F877a.inc"
; __CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON
status EQU 0x03
TRISA EQU 0X85
PORTA EQU 0X05
TRISB EQU 0X86
PORTB EQU 0X06
CHK1 EQU 0X21
CNT1 EQU 0CH
CNT2 EQU 0DH
count EQU 0x20
NumH equ 0x22
CounterA equ 0x23
CounterB equ 0x24
CounterC equ 0x25
org 0x000
nop
BSF STATUS,RP0
MOVLW H'FF'
MOVWF TRISA
movlw H'00';
movwf TRISB;
banksel PORTA
BCF STATUS,RP0
clrf PORTB
banksel ADCON1
movlw b'00000000'
movwf ADCON1
banksel ADCON0
movlw b'10000001'
movwf ADCON0
goto start
getAD movlw 007
movwf count
down decfsz count
goto down
bsf ADCON0,GO
btfsc ADCON0,GO
goto $-1
return
delay10s movlw d'10'
movwf count
delay10sloop call delay1s
decfsz count,f
goto delay10sloop
return
delay1s movlw d'4'
movwf CounterA
delay1sloop call delay250ms
decfsz CounterA,f
goto delay1sloop
return
delay250ms movlw d'250'
movwf CounterB
delay250msloop call delay1ms
decfsz CounterB,f
goto delay250msloop
return
delay1ms movlw d'250'
movwf CounterC
delay1msloop NOP
decfsz CounterC,f
goto delay1msloop
return
Sub1
btfss status,0
goto Sub2
bsf PORTB,1
call delay10s
RETLW 0x00
Sub2 btfsc status,0
goto start
bsf PORTB,2
call delay10s
RETLW 0x00
start call getAD ; get adc result
movf ADRESH,w
movwf NumH
sublw D'8'
btfss status,2
goto Sub1
bsf PORTB,0
call delay10s
goto start
end