;Internal File Assignments PCL .EQU $02 PORTB .EQU $06 PORTC .EQU $07 PCLATH .EQU $0A ;Internal Bit Assignments W .EQU 0 F .EQU 1 ;User File Assignments TIMER .EQU $21 STEP .EQU $22 ;Program Starts Here!!!!!!!!! .ORG $00 GOTO START NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP START BSF 3, 5 CLRF PORTB MOVLW $FF MOVWF PORTC BCF 3, 5 MOVLW $01 MOVWF STEP LOOP CLRF PCLATH SWAPF PORTC, W ANDLW $07 ADDWF PCL, F GOTO T0 ;Tone 0 = No Tone GOTO T1 ;Tone 1 = 800Hz GOTO T2 ;Tone 2 = 1500Hz GOTO T3 ;Tone 3 = Two Tone (800+1500) GOTO T5 ;Tone 4 = 1KHz GOTO T5 ;Tone 5 = 300Hz GOTO T0 ;Tone 6 GOTO T0 ;Tone 7 T0 MOVLW $80 ;No Tone MOVWF PORTB CALL DELAY CALL DELAY GOTO LOOP DELAY MOVLW $11 ;$11 = 17 MOVWF TIMER D1 DECFSZ TIMER, F ;17 * 3 = 51 GOTO D1 NOP ;Trimmer NOPs NOP RETURN T4 MOVLW $00 ;1KHz Tone MOVWF PCLATH MOVLW $0C ;$0C = 12 DECFSZ STEP, F ;End of cycle GOTO J4 ;No MOVWF STEP ;Yes - reload J4 CALL DELAY ;Wait CALL TA4 ;Get next part of waveform MOVWF PORTB ;Output to port B GOTO LOOP TA4 MOVF STEP, W ;Get location within cycle ADDWF PCL, F ;Add to program counter RETLW $00 RETLW $80 RETLW $BF RETLW $EE RETLW $FF RETLW $EE RETLW $C0 RETLW $80 RETLW $40 RETLW $11 RETLW $00 RETLW $11 RETLW $3F T5 MOVLW $00 ;300KHz Tone MOVWF PCLATH MOVLW $28 ;$28 = 40 DECFSZ STEP, F GOTO J5 MOVWF STEP J5 CALL DELAY CALL TA5 MOVWF PORTB GOTO LOOP TA5 MOVF STEP, W ADDWF PCL, F RETLW $00 RETLW $80 RETLW $94 RETLW $A7 RETLW $BA RETLW $CB RETLW $DA RETLW $E7 RETLW $F2 RETLW $F9 RETLW $FE RETLW $FF RETLW $FE RETLW $F9 RETLW $F2 RETLW $E7 RETLW $DA RETLW $CB RETLW $BA RETLW $A7 RETLW $94 RETLW $80 RETLW $6B RETLW $58 RETLW $45 RETLW $34 RETLW $25 RETLW $18 RETLW $D RETLW $6 RETLW $1 RETLW $0 RETLW $1 RETLW $6 RETLW $D RETLW $18 RETLW $25 RETLW $34 RETLW $45 RETLW $58 RETLW $6B T1 MOVLW $00 ;800KHz Tone MOVWF PCLATH MOVLW $0F ;$28 = 15 DECFSZ STEP, F GOTO J1 MOVWF STEP J1 CALL DELAY CALL TA1 MOVWF PORTB GOTO LOOP TA1 MOVF STEP, W ADDWF PCL, F RETLW $00 retlw $80 retlw $B4 retlw $DF retlw $F9 retlw $FF retlw $EE retlw $CB retlw $9A retlw $65 retlw $34 retlw $11 retlw $0 retlw $6 retlw $20 retlw $4B T2 MOVLW $00 ;1500KHz Tone MOVWF PCLATH MOVLW $08 DECFSZ STEP, F GOTO J2 MOVWF STEP J2 CALL DELAY CALL TA2 MOVWF PORTB GOTO LOOP TA2 MOVF STEP, W ADDWF PCL, F retlw $00 retlw $80 retlw $DA retlw $FF retlw $DA retlw $80 retlw $25 retlw $0 retlw $25 .ORG $100 T3 MOVLW $01 ;Two Tone (800+1500) MOVWF PCLATH MOVLW $28 ;$78 = 120 DECFSZ STEP, F GOTO J3 MOVWF STEP J3 CALL DELAY CALL TA3 MOVWF PORTB GOTO LOOP TA3 MOVF STEP, W ADDWF PCL, F RETLW $00 RETLW $80 RETLW $C3 RETLW $EA RETLW $E5 RETLW $BD RETLW $89 RETLW $66 RETLW $60 RETLW $72 RETLW $86 RETLW $87 RETLW $6D RETLW $45 RETLW $26 RETLW $29 RETLW $53 RETLW $97 RETLW $D8 RETLW $F7 RETLW $E8 RETLW $B5 RETLW $78 RETLW $4E RETLW $47 RETLW $5A RETLW $75 RETLW $7F RETLW $70 RETLW $52 RETLW $3B RETLW $41 RETLW $6C RETLW $AC RETLW $E5 RETLW $FA RETLW $E0 RETLW $A4 RETLW $60 RETLW $35 RETLW $2F RETLW $49 RETLW $6D RETLW $82 RETLW $7D RETLW $67 RETLW $53 RETLW $5A RETLW $81 RETLW $B9 RETLW $E8 RETLW $F2 RETLW $CF RETLW $8C RETLW $47 RETLW $1D RETLW $1E RETLW $41 RETLW $70 RETLW $8F RETLW $92 RETLW $7F RETLW $6C RETLW $6F RETLW $8E RETLW $BC RETLW $E0 RETLW $E1 RETLW $B7 RETLW $73 RETLW $2F RETLW $C RETLW $16 RETLW $44 RETLW $7D RETLW $A4 RETLW $AA RETLW $98 RETLW $81 RETLW $7C RETLW $91 RETLW $B4 RETLW $CF RETLW $C9 RETLW $9E RETLW $5B RETLW $1E RETLW $4 RETLW $19 RETLW $51 RETLW $92 RETLW $BC RETLW $C3 RETLW $AD RETLW $8E RETLW $7F RETLW $89 RETLW $A3 RETLW $B7 RETLW $B0 RETLW $86 RETLW $4A RETLW $16 RETLW $7 RETLW $26 RETLW $66 RETLW $AA RETLW $D5 RETLW $D8 RETLW $BA RETLW $91 RETLW $77 RETLW $78 RETLW $8B RETLW $9E RETLW $98 RETLW $75 RETLW $42 RETLW $19 RETLW $14 RETLW $3B .END