;intelligent keyer ; David Robinson WW2R ; april 2 2007 ; does message then 4 cw numbers, each with 3 digits ;4 analog inputs 1,2,17,18 ;input on rb3..... open omits callsign sending, short sends all ;looks for this condition at start of every keying cycle ;outputs on rb0,1,6,7. normal on pins 13 (rb7) and 6 (rb0), inverted on pin 7 (rb1) & pin 12 (rb6) ;for rc osc __FUSES _CP_OFF & _RC_OSC & _WDT_OFF & _PWRTE_ON &_BODEN_ON LIST P=16C711,F=INHX8M include "p16c711.inc" Cwbyte equ H'0C' ;Byte counter Cwbit equ H'0D' ;Bit counter Cw equ H'0E' Units equ H'12' ;units of val Count1 equ H'13' ;delay 1 counter Count2 equ H'14' ;delay 2 counter Count3 equ H'15' ;delay 3 counter Tick1 equ H'16' ;used in delay loop Tick2 equ H'17' ;used in delay loop Tick3 equ H'18' ;used in delay loop TEMP equ H'19' org 0 movlw H'b0' ;was b0 product makes about 12wpm movwf Tick1 MOVLW H'05' ;was 05 MOVWF Tick2 MOVLW H'01' ;dit length MOVWF Tick3 BSF STATUS, RP0 ; Bank1 MOVLW H'08' MOVWF TRISB ; PortB as outputs except, rb3 as input ;InitializeAD, set up the A/D hardware. InitializeAD bsf STATUS,RP0 ;select pg1 movlw B'00000000' ;select ch0-ch3... movwf ADCON1 ;as analog inputs with vdd as vref Again CLRF Cwbyte CLRF Cwbit BTFSS Nocall,3 goto Call_done Mainloop MOVLW H'1' MOVWF PCLATH MOVF Cwbyte,0 CALL Get_Pattern MOVWF Cw MOVLW H'CC' SUBWF Cw, W BTFSC STATUS, Z Out RLF Cw, 1 BTFSS STATUS, C BCF PORTB, 7 BTFSC STATUS, C BSF PORTB, 7 BTFSS STATUS, C BSF PORTB, 6 BTFSC STATUS, C BCF PORTB, 6 BTFSS STATUS, C BSF PORTB, 1 BTFSC STATUS, C BCF PORTB, 1 BTFSS STATUS,C BCF PORTB, 0 BTFSC STATUS, C BSF PORTB, 0 MOVLW H'01' MOVWF Tick3 CALL Delay INCF Cwbit, 1 MOVLW H'08' SUBWF Cwbit, W BTFSS STATUS, Z GOTO Out CLRF Cwbit INCF Cwbyte, 1 goto Mainloop Delay MOVF Tick3,0 ;main delay loop MOVWF Count3 Delay1 MOVF Tick2, 0 MOVWF Count2 Delay2 MOVF Tick1, 0 MOVWF Count1 Delay3 DECFSZ Count1, 1 GOTO Delay3 DECFSZ Count2, 1 GOTO Delay2 DECFSZ Count3,1 GOTO Delay1 RETURN org 220 Ident RETLW 'W' RETLW 'W' RETLW '2' RETLW 'R' RETLW ' ' RETLW '1' RETLW '2' RETLW '/' RETLW '0' RETLW '3' RETLW '/' RETLW '0' RETLW '7' Get_Pattern ADDWF PCL, 1 ;cw goes here org 100 Get_Pattern ADDWF PCL,1 RETLW H'BB' RETLW H'8A' RETLW H'A8' RETLW H'AA' RETLW H'3A' RETLW H'3A' RETLW H'BA' RETLW H'3A' RETLW H'A0' RETLW H'23' RETLW H'B8' RETLW H'BB' RETLW H'BB' RETLW H'8A' RETLW H'BB' RETLW H'8E' RETLW H'B8' RETLW H'AE' RETLW H'80' RETLW H'EE' RETLW H'EE' RETLW H'8E' RETLW H'EE' RETLW H'EE' RETLW H'2B' RETLW H'BB' RETLW H'8B' RETLW H'AE' RETLW H'B8' RETLW H'AB' RETLW H'B8' RETLW H'EE' RETLW H'EA' RETLW H'3B' RETLW H'BB' RETLW H'B8' RETLW H'EA' RETLW H'E8' RETLW H'BB' RETLW H'BB' RETLW H'8A' RETLW H'EE' RETLW H'E3' RETLW H'BB' RETLW H'BA' RETLW H'3A' RETLW H'A8' RETLW H'BA' RETLW H'EB' RETLW H'8A' RETLW H'BB' RETLW H'8E' RETLW H'EE' RETLW H'A3' RETLW H'BB' RETLW H'BB' RETLW H'8E' RETLW H'E2' RETLW H'A8' RETLW H'EE' RETLW H'A0' RETLW H'3F' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'C0' RETLW H'5D' RETLW H'C5' RETLW H'54' RETLW H'55' RETLW H'1D' RETLW H'1D' RETLW H'5D' RETLW H'1D' RETLW H'50' RETLW H'1F' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'E0' RETLW H'2E' RETLW H'E2' RETLW H'AA' RETLW H'2A' RETLW H'8E' RETLW H'8E' RETLW H'AE' RETLW H'8E' RETLW H'A8' RETLW H'0F' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'F0' RETLW H'17' RETLW H'71' RETLW H'55' RETLW H'15' RETLW H'47' RETLW H'47' RETLW H'57' RETLW H'47' RETLW H'54' RETLW H'07' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'F8' RETLW H'0B' RETLW H'B8' RETLW H'AA' RETLW H'8A' RETLW H'A3' RETLW H'A3' RETLW H'AB' RETLW H'A3' RETLW H'AA' RETLW H'03' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FF' RETLW H'FC' RETLW H'00' RETLW H'00' RETLW H'CC' END