; ; Multiple Message Morse Program ; ;Defines #DEFINE REGHI BSF 3,5 #DEFINE REGLO BCF 3,5 #DEFINE KEYDN BSF 5,1 #DEFINE KEYUP BCF 5,1 ;Internal File Assignments PCL .EQU $02 PORTA .EQU $05 PORTB .EQU $06 PCLATH .EQU $0A ;Internal Bit Assignments W .EQU 0 F .EQU 1 ;User File Assignments OFFSET .EQU $0D TIMER1 .EQU $10 TIMER2 .EQU $11 ;User Bit Assignments KEYIN .EQU 2 KEYOUT .EQU 1 ;Program Starts Here!!!!!!!!! .ORG 5 CLRF PORTA CLRF PORTB CLRF PCLATH REGHI CLRF PORTA ;Set PORTA to all outputs MOVLW $FF MOVLW PORTB ;Set PORTB to all inputs REGLO LOOP BTFSS PORTB,0 ;Is Switch 1 pressed GOTO TABLE ;Yes BTFSS PORTB,1 ;Is Switch 2 pressed GOTO TABLE1 ;Yes BTFSS PORTB,2 ;Is Switch 3 pressed GOTO TABLE2 ;Yes BTFSS PORTB,3 ;Is Switch 4 pressed GOTO TABLE3 ;Yes BTFSS PORTB,4 ;Is Switch 5 pressed GOTO TABLE4 ;Yes BTFSS PORTB,5 ;Is Switch 6 pressed GOTO TABLE5 ;Yes BTFSS PORTB,6 ;Is Switch 7 pressed GOTO TABLE6 ;Yes BTFSS PORTB,7 ;Is Switch 8 pressed GOTO TABLE7 ;Yes GOTO LOOP ;No DOT KEYDN CALL TIME KEYUP CALL TIME RETURN DASH KEYDN CALL TIME CALL TIME CALL TIME KEYUP CALL TIME RETURN SPACE CALL TIME CALL TIME CALL TIME RETURN LONG CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME RETURN TIME MOVLW 22 MOVWF TIMER1 T1 MOVLW 128 MOVWF TIMER2 T2 DECFSZ TIMER2,F GOTO T2 DECFSZ TIMER1,F GOTO T1 RETURN END GOTO LOOP TABLE CALL DOT CALL DASH CALL SPACE CALL DOT CALL DASH CALL LONG GOTO END TABLE1 CALL DOT CALL DOT CALL DASH CALL DASH CALL LONG GOTO END TABLE2 GOTO END TABLE3 GOTO END TABLE4 GOTO END TABLE5 GOTO END TABLE6 GOTO END TABLE7 GOTO END .END