;----------------------------------------------------------------- ; MORSE - EMISSIONE CODICE MORSE ; By Claudio Fin 11/12/2008 - Versione 1.0 ;----------------------------------------------------------------- PROCESSOR 16F84 ;CLOCK 4MHZ RADIX DEC INCLUDE "P16F84.INC" __CONFIG 11111111110001B ;----------------------------------------------------------------- ORG 12 CL RES 1 CH RES 1 BL RES 1 BH RES 1 CZ RES 1 #DEFINE SPK PORTB,0 ;PIN PER ALTOPARLANTE #DEFINE LED PORTB,1 ;PIN PER COMANDO PTT #DEFINE DURATA 70 ;DURATA DI UN PUNTO ;----------------------------------------------------------------- PAUSA MACRO VALORE MOVLW VALORE MOVWF CZ CALL P1SEC DECFSZ CZ,F GOTO $-2 ENDM ;----------------------------------------------------------------- ; INIZIALIZZAZIONE HARDWARE ;----------------------------------------------------------------- ORG 0 BSF STATUS,RP0 ; ATTIVA BANCO 1 BCF TRISB,0 ; RENDE UN'USCITA IL PIN PORTB,0 BCF TRISB,1 ; RENDE UN'USCITA IL PIN PORTB,1 BCF STATUS,RP0 ; ATTIVA BANCO 0 CLRF PORTB ; AZZERA PORTB ;----------------------------------------------------------------- ; CICLO PRINCIPALE DEL PROGRAMMA MODIFICABILE A PIACERE ;----------------------------------------------------------------- MAINLOOP CALL DAA ;EMISSIONE DI UNA LINEA CALL DII ;EMISSIONE DI UN PUNTO CALL DAA PAUSA 15 ;PAUSA DI 15 SECONDI CALL DII CALL DII CALL P2 ;PAUSA DI 2 PUNTI CALL DAA CALL DII CALL DAA CALL P2 CALL DII CALL DAA CALL DAA CALL DAA CALL DAA CALL P2 CALL DII CALL DII CALL DII CALL DII CALL P2 CALL DAA CALL DAA CALL DII CALL P2 CALL DII CALL DII PAUSA 20 ;PAUSA DI 20 SECONDI GOTO MAINLOOP ;RIPETE DALL'INIZIO ;----------------------------------------------------------------- ; EMETTE UNA LINEA PIU'UNA PAUSA DI UN PUNTO ;----------------------------------------------------------------- DAA CLRF CH MOVLW DURATA MOVWF CL BCF STATUS,C RLF CL,W MOVWF BL RLF CH,W MOVWF BH MOVF BL,W ADDWF CL,F BTFSC STATUS,C INCF CH,F MOVF BH,W ADDWF CH,F CALL EMIT CALL P1 RETURN ;----------------------------------------------------------------- ; EMETTE UN PUNTO PIU'UNA PAUSA DI UN PUNTO ;----------------------------------------------------------------- DII CLRF CH MOVLW DURATA MOVWF CL CALL EMIT CALL P1 RETURN ;----------------------------------------------------------------- ; EMISSIONE TONO 800Hz E ACCENSIONE LED ; CL:CH = CONTATORE 16 BIT DURATA TONO ; CZ = CONTATORE 8 BIT RITARDO INTERNO ;----------------------------------------------------------------- EMIT BSF LED ; ACCENDE LED EMIT_1 BSF SPK ; ACCENDE ALTOPARLANTE MOVLW 207 MOVWF CZ DECFSZ CZ,F GOTO $-1 NOP NOP BCF SPK ; SPEGNE ALTOPARLANTE MOVLW 204 MOVWF CZ DECFSZ CZ,F GOTO $-1 NOP NOP DECF CL,F INCF CL,W BTFSC STATUS,Z DECF CH,F MOVF CL,W IORWF CH,W BTFSS STATUS,Z GOTO EMIT_1 BCF LED ; SPEGNE LED RETURN ;----------------------------------------------------------------- ; PAUSA DI DUE PUNTI ;----------------------------------------------------------------- P2 CALL P1 ;----------------------------------------------------------------- ; PAUSA DI UN PUNTO ;----------------------------------------------------------------- P1 CLRF CH MOVLW DURATA MOVWF CL CALL FEMIT RETURN ;----------------------------------------------------------------- ; EMISSIONE FITTIZIA PER PAUSA 1 PUNTO, ; STESSA TEMPORIZZAZIONE DI EMIT ; USA I REGISTRI CZ CH:CL ;----------------------------------------------------------------- FEMIT NOP FEMIT_1 NOP MOVLW 207 MOVWF CZ DECFSZ CZ,F GOTO $-1 NOP NOP NOP MOVLW 204 MOVWF CZ DECFSZ CZ,F GOTO $-1 NOP NOP DECF CL,F INCF CL,W BTFSC STATUS,Z DECF CH,F MOVF CL,W IORWF CH,W BTFSS STATUS,Z GOTO FEMIT_1 NOP RETURN ;----------------------------------------------------------------- ; PAUSA 1 SECONDO ; USA I REGISTRI BL CH:CL ;----------------------------------------------------------------- P1SEC MOVLW 10 MOVWF BL MOVLW 130 MOVWF CH CLRF CL DECFSZ CL,F GOTO $-1 DECFSZ CH,F GOTO $-3 DECFSZ BL,F GOTO $-8 RETURN ;----------------------------------------------------------------- END