#PICAXE-20M SYMBOL TIMER = W0 'The ADC value plus a predefined period SYMBOL WBUTTON = B2 'Defines which voice memo button was pressed, 1 to 4. SYMBOL T_VALUE = B3 'The output pin to send high to send the correct voice message SYMBOL COUNTER = B4 'Used to count to see when to send the next voice SYMBOL AUTO_ON = B5 'Is the unit in automatic mode or not, 0 = no, 1 = yes SYMBOL TX_RADIO = B6 'Is the radio in TX before or after the voice started, used for cancel SYMBOL RED_BUTTON = PIN5 'Defines the PIN used to enable auto mode SYMBOL RADIO_PTT = PIN6 'Defines the PIN used to monitor the radio PTT line SYMBOL NORM_PTT = PIN4 'Defines the PIN used to monitor the user (foot switch) PTT line SYMBOL ADC_IN = 7 'Defines the PIN used for measuring the ADC value SYMBOL AUTOLED = 0 'Defines the PIN used to light the Auto On LED SETINT %00010000,%00010000 'Set the interupt used to cancel, user PTT pressed START: READADC ADC_IN,TIMER 'Read the ADC value TIMER = TIMER + 20 'Add a minimal guard time to the value 'B6 = PINS 'ABOVE IS FOR INFO IF RADIO_PTT = 1 THEN TX_RADIO = 0 ELSE TX_RADIO = 1 ENDIF IF COUNTER => TIMER THEN COUNTER = 0 GOTO SEND_VOICE ELSE IF RADIO_PTT = 1 AND AUTO_ON = 1 THEN INC COUNTER PAUSE 225 ENDIF ENDIF WBUTTON = PINS & %00001111 IF WBUTTON <> %00001111 THEN GOSUB CHECK_T_VALUE AUTO_ON = 0 LOW AUTOLED GOTO SEND_VOICE ENDIF 'DEBUG IF RED_BUTTON = 0 then GOSUB INTERRUPT GOTO RED_BUTTON_CHECK ENDIF GOTO START RED_BUTTON_CHECK: PAUSE 300 HIGH AUTOLED IF COUNTER = 10 THEN COUNTER = 0 LOW AUTOLED GOTO START ELSE LOW AUTOLED INC COUNTER ENDIF GOSUB CHECK_T_VALUE IF AUTO_ON = 1 THEN HIGH AUTOLED GOTO SEND_VOICE ENDIF GOTO RED_BUTTON_CHECK INTERRUPT: 'USED AS A CANCEL ROUTINE LOW AUTOLED AUTO_ON = 0 T_VALUE = 0 COUNTER = 0 IF TX_RADIO = 1 THEN PULSOUT 4,10000 ' THIS IS T1 TX_RADIO = 0 ENDIF 'DEBUG SETINT %00010000,%00010000 RETURN SEND_VOICE: 'DEBUG PULSOUT T_VALUE,10000 COUNTER = 0 PAUSE 300 GOTO START CHECK_T_VALUE: IF PIN0 = 0 THEN T_VALUE = 7 AUTO_ON = 1 ENDIF IF PIN1 = 0 THEN T_VALUE = 6 AUTO_ON = 1 ENDIF IF PIN2 = 0 THEN T_VALUE = 5 AUTO_ON = 1 ENDIF IF PIN3 = 0 THEN T_VALUE = 4 AUTO_ON = 1 ENDIF RETURN