__config 3ffb ; ; Morse Key Program ; ;Defines #DEFINE REGHI BSF 3,5 #DEFINE REGLO BCF 3,5 #DEFINE KEYDN BSF 5,3 #DEFINE KEYUP BCF 5,3 ;Internal File Assignments PORTA EQU 0x05 PORTB EQU 0x06 ;Internal Bit Assignments W EQU 0 F EQU 1 ;User File Assignments TIMER1 EQU 0x10 TIMER2 EQU 0x11 ;User Bit Assignments IAMBIC EQU 1 DOTKEY EQU 4 DASHKEY EQU 3 KEYOUT EQU 3 ;Program Starts Here!!!!!!!!! ORG 0x05 REGHI MOVLW 0x03 ;Set PORTA bits 0,1 to inputs, MOVWF PORTA ;bits 2,3,4 to outputs MOVLW 0xFF MOVWF PORTB ;Set PORTB to all inputs REGLO LOOP BTFSS PORTB, DOTKEY ;Is Dot Key Pressed GOTO DOT ;Yes, go to Dot routine BTFSS PORTB, DASHKEY ;Is Dash Key Pressed GOTO DASH ;Yes, go to Dash routine GOTO LOOP DOT KEYDN NOP NOP NOP NOP NOP NOP CALL TIME KEYUP CALL TIME BTFSC PORTB, DOTKEY ;Is Dot Key Still pressed? GOTO LOOP ;No, so go back to loop BTFSS PORTA, IAMBIC ;Yes - Is Iambic switch set? GOTO DOT ;No so do another Dot GOTO DASH ;Yes, so do a dash DASH KEYDN NOP NOP NOP NOP NOP NOP CALL TIME CALL TIME CALL TIME KEYUP CALL TIME BTFSC PORTB, DASHKEY ;Is Dash Key Still pressed? GOTO LOOP ;No, so go back to loop BTFSS PORTA, IAMBIC ;Yes - Is Iambic switch set? GOTO DASH ;No so do another Dash GOTO DOT ;Yes, so do a dot TIME MOVLW 0x16 MOVWF TIMER1 T1 MOVLW 0x80 MOVWF TIMER2 T2 DECFSZ TIMER2,F GOTO T2 DECFSZ TIMER1,F GOTO T1 RETURN END