Hi there
I have a LM358 amplifie-ing a maic signal to my pic16F913 AD input, this signal is used to drive 8 LED's in a VU meter fasion This part works fine.
Now i have a input that when made gets the signal and set a alarm setpoint one LED lower than the current signal === First problem with the signal variang fast it does not whant to select properly
Now what needs to happen is that as soon as the signal passes the setpoint again it needs to set a output basicly a high noise alarm, but my rele shutter if i add a timer it influence my VU meter
any one with some idea, here is my code for info
Code:
INCLUDE "MODEDEFS.BAS"
Asm
ERRORLEVEL -306
Endasm
DEFINE OSC 20 ' Define crystal as 20Mhz
'*ADC setup*
DEFINE ADC_BITS 10 'SETS NUMBER OF BITS IN RESULTS 8,10,12
DEFINE ADC_CLOCK 3 'SETS CLOCK SOURCE (RC = 3)
DEFINE ADC_SAMPLEUS 50 'SETS SAMPLING TIME IN MICROSECONDS
'This Part set PORTA 0-5 an analog inputs
ADCON1 = %01110000 'FRC (clock derived from a dedicated internal oscillator = 500 kHz max)
ANSEL = %00000011 'PortA 0 & 1 Analog 2 - 5 Digital
'The ANSEL (91h) and CMCON0 (9Ch)registers must be initialized to configure an
CMCON0 = %00000111 'analog channel as a digital input. Pins configured as analog inputs will read ‘0’.
TRISA = %00001111 'set PORTA 0-4 as inputs PORTA 5 output
ADCON0.7 = 1 'Right justify output of ADC datasheet P145 of 16F913
LCDCON = 0 'Disable LCD function on PORTC 0 - 2
TRISC = %00000000 'Set PORTC as output
TRISB = %00000000 'Sert PORTB as output
I VAR BYTE
j VAR BYTE
K VAR BYTE
L VAR BYTE
arr var word[10]
V1 VAR WORD
PORTB = 0
READ 1,J
Main:
for l = 0 to 9
ADCIN 0,V1
arr(l) = V1/60
next l
I = (ARR(0)+ARR(1)+ARR(2)+ARR(3)+ARR(4)+ARR(5)+ARR(6)+ARR(7)+ARR(8)+ARR(9))/10
IF I >= J THEN
PORTA.5 = 1
ENDIF
IF I <= (J-1) THEN
PORTA.5 = 0
ENDIF
IF PORTA.2 = 0 THEN
K = I - 1
PAUSE 300
IF J <> K THEN
WRITE 1,K
J=K
ENDIF
ENDIF
IF J = 1 THEN
PORTB.0 = 1
ELSE
PORTB.0 = 0
ENDIF
IF J = 2 THEN
PORTB.1 = 1
ELSE
PORTB.1 = 0
ENDIF
IF J = 3 THEN
PORTB.2 = 1
ELSE
PORTB.2 = 0
ENDIF
IF J = 4 THEN
PORTB.3 = 1
ELSE
PORTB.3 = 0
ENDIF
IF J = 5 THEN
PORTB.4 = 1
ELSE
PORTB.4 = 0
ENDIF
IF J = 6 THEN
PORTB.5 = 1
ELSE
PORTB.5 = 0
ENDIF
IF J = 7 THEN
PORTB.6 = 1
ELSE
PORTB.6 = 0
ENDIF
IF J = 8 THEN
PORTB.7 = 1
ELSE
PORTB.7 = 0
ENDIF
IF I >= 1 THEN
PORTC.0 = 1
ELSE
PORTC.0 = 0
ENDIF
IF I >= 2 THEN
PORTC.1 = 1
ELSE
PORTC.1 = 0
ENDIF
IF I >= 3 THEN
PORTC.2 = 1
ELSE
PORTC.2 = 0
ENDIF
IF I >= 4 THEN
PORTC.3 = 1
ELSE
PORTC.3 = 0
ENDIF
IF I >= 5 THEN
PORTC.4 = 1
ELSE
PORTC.4 = 0
ENDIF
IF I >= 6 THEN
PORTC.5 = 1
ELSE
PORTC.5 = 0
ENDIF
IF I >= 7 THEN
PORTC.6 = 1
ELSE
PORTC.6 = 0
ENDIF
IF I >= 8 THEN
PORTC.7 = 1
ELSE
PORTC.7 = 0
ENDIF
goto main
END
Bookmarks