Académique Documents
Professionnel Documents
Culture Documents
1 LAST UPDATE 09/12/96 **** ;*************************************************** ;*************************************************** ; FOR 12C508 @ 4MHz WDOG ON LIST P=12C508,F=INHX8M
****
;IMMEDIATE EQUATES PERIOD EQU 010H ;LENGTH OF TIME AT FREQ LOW_FREQ EQU 0FFH ;653 Hz HIGH_FREQ EQU 040H ;2577Hz DIFFERENCE EQU LOW_FREQ - HIGH_FREQ PERIOD_50HZ EQU 00 ;approx 5 secs of 50hz INADD EQU 00 RTCC EQU 01 PC EQU 02 STATUS EQU 03 FSR EQU 04 CAL EQU 05 GPIO EQU 06 ;BIT DEFINITIONS #DEFINE LED1 #DEFINE DRIVE #DEFINE TEST_IN #DEFINE #DEFINE C Z STATUS,0 STATUS,2
LONG_DELAY ;LONG DELAY TO LET THINGS SETTLE AFTER POWER UP MOVLW 000H GOTO DELAY0 SHORT_DELAY ;APPROX. 65mS DELAY MOVLW DELAY0 MOVWF CLRF DELAY1 CLRWDT DECFSZ GOTO DECFSZ GOTO RETLW
FOR PULSING LED 040H COUNT COUNT1 COUNT1 DELAY1 COUNT DELAY1 0FFH
;DELAY USED IN 50HZ ROUTINE DELAY_50HZ MOVLW 0AH MOVWF COUNT1 DELAY50 MOVLW 0F8H MOVWF COUNT DELAY51 CLRWDT DECFSZ COUNT GOTO DELAY51 DECFSZ COUNT1 GOTO DELAY50 RETLW 0FFH
COIL_ERROR ;LED WILL STAY ON FOR 2 SECS UNTIL WDOG ;RESETS THE PIC BCF LED1 BTFSS TEST_IN GOTO COIL_ERROR RETLW 0FFH
;TEST COIL
;ADD THE BUZZER ROUTINE IF REQUIRED ;TO SIGNAL AN ERROR IN THE COIL BEEP RETLW 0FFH
;WE SET THE TIMING INTERVAL UP HERE SETUP MOVLW MOVWF TRIS CALL ING MOVLW R OF LOOPS MOVWF (APPROX 1 MIN) 026H COUNT3 ;WE USE THIS COUNTER TO COUNT THE NUMBE ;WE DO BEFORE GOING TO THE 50HZ LOOP B'00001000' GPIO GPIO P_LED ;ONLY GP3 IS AN INPUT
;THIS ROUTINE WILL GENERATE THE SWEPT TONE ;IT ONLY SWEEPS UP IN FREQUENCE THEN ROLLS ;OVER AND STARTS AGAIN ;LOW_FREQ DEFINES THE START FREQ AND WE DEC ;ONE FROM THIS VALUE TO GET A SHORTER PERIOD ;AND SO A HIGHER FREQ ;THE VALUE OF DIFFERENCE SETS THE UPPER FREQ ;AND EQUALS THE LOW_FREQ - THE HIGH_FREQ ;RUN SWEEP ROUTINE SWEEP CLRWDT
MOVLW MOVWF MOVLW MOVWF SWEEP0 MOVLW MOVWF SWEEP1 MOVFW MOVWF BSF SWEEP2 DECFSZ GOTO MOVFW MOVWF BCF CLRWDT SWEEP3 DECFSZ GOTO SWEEP4 DECFSZ GOTO DECF DECFSZ GOTO
LOW_FREQ COUNT DIFFERENCE COUNT1 PERIOD COUNT2 COUNT TEMP DRIVE TEMP SWEEP2 COUNT TEMP DRIVE TEMP SWEEP3
;PERIOD OF TONE
;THIS WILL INC THE FREQ ;DIFF BETWEEN MIN AND MAX FREQ
;IF WE GET HERE THEN WE ARE FINISHED THE UP SWEEP ;SO PULSE LED TO SHOW THAT WE ARE STILL WORKING CALL P_LED DECFSZ COUNT3 ;NUMBER OF TIMES TO LOOP ROUND GOTO SWEEP ;BEFORE WE GO TO 50HZ LOOP ;APPROX 2 MINS ;IF WE GET HERE THEN RUN AT 50Hz THEN RESTART FIFTY_HZ MOVLW PERIOD_50HZ MOVWF TEMP FH0 BSF DRIVE CLRWDT CALL DELAY_50HZ BCF DRIVE CLRWDT CALL DELAY_50HZ DECFSZ TEMP GOTO FH0 GOTO SETUP
END