__config 3f79 ;Internal File Assignments PCL EQU 0x02 PORTB EQU 0x06 PORTC EQU 0x07 PCLATH EQU 0x0A ;Internal Bit Assignments W EQU 0 F EQU 1 ;User File Assignments TIMER EQU 0x21 STEP EQU 0x22 ;Program Starts Here!!!!!!!!! ORG 0x00 GOTO START NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP START BSF 3, 5 CLRF PORTB MOVLW 0xFF MOVWF PORTC BCF 3, 5 MOVLW 0x01 MOVWF STEP LOOP CLRF PCLATH SWAPF PORTC, W ANDLW 0x07 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 0x80 ;No Tone MOVWF PORTB CALL DELAY CALL DELAY GOTO LOOP DELAY MOVLW 0x11 ;0x11 = 17 MOVWF TIMER D1 DECFSZ TIMER, F ;17 * 3 = 51 GOTO D1 NOP ;Trimmer NOPs NOP RETURN T4 MOVLW 0x00 ;1KHz Tone MOVWF PCLATH MOVLW 0x0C ;0x0C = 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 0x00 RETLW 0x80 RETLW 0xBF RETLW 0xEE RETLW 0xFF RETLW 0xEE RETLW 0xC0 RETLW 0x80 RETLW 0x40 RETLW 0x11 RETLW 0x00 RETLW 0x11 RETLW 0x3F T5 MOVLW 0x00 ;300KHz Tone MOVWF PCLATH MOVLW 0x28 ;0x28 = 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 0x00 RETLW 0x80 RETLW 0x94 RETLW 0xA7 RETLW 0xBA RETLW 0xCB RETLW 0xDA RETLW 0xE7 RETLW 0xF2 RETLW 0xF9 RETLW 0xFE RETLW 0xFF RETLW 0xFE RETLW 0xF9 RETLW 0xF2 RETLW 0xE7 RETLW 0xDA RETLW 0xCB RETLW 0xBA RETLW 0xA7 RETLW 0x94 RETLW 0x80 RETLW 0x6B RETLW 0x58 RETLW 0x45 RETLW 0x34 RETLW 0x25 RETLW 0x18 RETLW 0xD RETLW 0x6 RETLW 0x1 RETLW 0x0 RETLW 0x1 RETLW 0x6 RETLW 0xD RETLW 0x18 RETLW 0x25 RETLW 0x34 RETLW 0x45 RETLW 0x58 RETLW 0x6B T1 MOVLW 0x00 ;800KHz Tone MOVWF PCLATH MOVLW 0x0F ;0x28 = 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 0x00 retlw 0x80 retlw 0xB4 retlw 0xDF retlw 0xF9 retlw 0xFF retlw 0xEE retlw 0xCB retlw 0x9A retlw 0x65 retlw 0x34 retlw 0x11 retlw 0x0 retlw 0x6 retlw 0x20 retlw 0x4B T2 MOVLW 0x00 ;1500KHz Tone MOVWF PCLATH MOVLW 0x08 DECFSZ STEP, F GOTO J2 MOVWF STEP J2 CALL DELAY CALL TA2 MOVWF PORTB GOTO LOOP TA2 MOVF STEP, W ADDWF PCL, F retlw 0x00 retlw 0x80 retlw 0xDA retlw 0xFF retlw 0xDA retlw 0x80 retlw 0x25 retlw 0x0 retlw 0x25 ORG 0x100 T3 MOVLW 0x01 ;Two Tone (800+1500) MOVWF PCLATH MOVLW 0x28 ;0x78 = 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 0x00 RETLW 0x80 RETLW 0xC3 RETLW 0xEA RETLW 0xE5 RETLW 0xBD RETLW 0x89 RETLW 0x66 RETLW 0x60 RETLW 0x72 RETLW 0x86 RETLW 0x87 RETLW 0x6D RETLW 0x45 RETLW 0x26 RETLW 0x29 RETLW 0x53 RETLW 0x97 RETLW 0xD8 RETLW 0xF7 RETLW 0xE8 RETLW 0xB5 RETLW 0x78 RETLW 0x4E RETLW 0x47 RETLW 0x5A RETLW 0x75 RETLW 0x7F RETLW 0x70 RETLW 0x52 RETLW 0x3B RETLW 0x41 RETLW 0x6C RETLW 0xAC RETLW 0xE5 RETLW 0xFA RETLW 0xE0 RETLW 0xA4 RETLW 0x60 RETLW 0x35 RETLW 0x2F RETLW 0x49 RETLW 0x6D RETLW 0x82 RETLW 0x7D RETLW 0x67 RETLW 0x53 RETLW 0x5A RETLW 0x81 RETLW 0xB9 RETLW 0xE8 RETLW 0xF2 RETLW 0xCF RETLW 0x8C RETLW 0x47 RETLW 0x1D RETLW 0x1E RETLW 0x41 RETLW 0x70 RETLW 0x8F RETLW 0x92 RETLW 0x7F RETLW 0x6C RETLW 0x6F RETLW 0x8E RETLW 0xBC RETLW 0xE0 RETLW 0xE1 RETLW 0xB7 RETLW 0x73 RETLW 0x2F RETLW 0xC RETLW 0x16 RETLW 0x44 RETLW 0x7D RETLW 0xA4 RETLW 0xAA RETLW 0x98 RETLW 0x81 RETLW 0x7C RETLW 0x91 RETLW 0xB4 RETLW 0xCF RETLW 0xC9 RETLW 0x9E RETLW 0x5B RETLW 0x1E RETLW 0x4 RETLW 0x19 RETLW 0x51 RETLW 0x92 RETLW 0xBC RETLW 0xC3 RETLW 0xAD RETLW 0x8E RETLW 0x7F RETLW 0x89 RETLW 0xA3 RETLW 0xB7 RETLW 0xB0 RETLW 0x86 RETLW 0x4A RETLW 0x16 RETLW 0x7 RETLW 0x26 RETLW 0x66 RETLW 0xAA RETLW 0xD5 RETLW 0xD8 RETLW 0xBA RETLW 0x91 RETLW 0x77 RETLW 0x78 RETLW 0x8B RETLW 0x9E RETLW 0x98 RETLW 0x75 RETLW 0x42 RETLW 0x19 RETLW 0x14 RETLW 0x3B END