__config 3ffb ; ; 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 0x02 PORTA EQU 0x05 PORTB EQU 0x06 PCLATH EQU 0x0A ;Internal Bit Assignments W EQU 0 F EQU 1 ;User File Assignments OFFSET EQU 0x0D TIMER1 EQU 0x10 TIMER2 EQU 0x11 ;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 0xFF MOVLW PORTB ;Set PORTB to all inputs REGLO LOOP BTFSS PORTB,0 ;Is Switch 1 pressed GOTO PTABLE ;Yes BTFSS PORTB,1 ;Is Switch 2 pressed GOTO PTABLE1 ;Yes BTFSS PORTB,2 ;Is Switch 3 pressed GOTO PTABLE2 ;Yes BTFSS PORTB,3 ;Is Switch 4 pressed GOTO PTABLE3 ;Yes BTFSS PORTB,4 ;Is Switch 5 pressed GOTO PTABLE4 ;Yes BTFSS PORTB,5 ;Is Switch 6 pressed GOTO PTABLE5 ;Yes BTFSS PORTB,6 ;Is Switch 7 pressed GOTO PTABLE6 ;Yes BTFSS PORTB,7 ;Is Switch 8 pressed GOTO PTABLE7 ;Yes GOTO LOOP ;No DOT KEYDN CALL TIME KEYUP CALL TIME RETURN DASH KEYDN CALL TIME CALL TIME CALL TIME KEYUP CALL TIME RETURN PSPACE CALL TIME CALL TIME RETURN LONG CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME CALL TIME RETURN TIME MOVLW 0x16 MOVWF TIMER1 T1 MOVLW 0x80 MOVWF TIMER2 T2 DECFSZ TIMER2,F GOTO T2 DECFSZ TIMER1,F GOTO T1 RETURN PEND GOTO LOOP PTABLE CALL DOT CALL DASH CALL PSPACE CALL DOT CALL DASH CALL LONG GOTO PEND PTABLE1 CALL DOT CALL DOT CALL DASH CALL DASH CALL LONG GOTO PEND PTABLE2 GOTO PEND PTABLE3 GOTO PEND PTABLE4 GOTO PEND PTABLE5 GOTO PEND PTABLE6 GOTO PEND PTABLE7 GOTO PEND END