; WRITTEN BY A.C.YATES ; DATE 19/11/07 ; FILE SAVED AS G8RAO_01.ASM ; DEVICE 16F627 ; RESONATOR XT (4MHz) ; WATCHDOG DISABLED ; CODE PROTECT OFF ; FUNCTION An LED sequencer using a PIC microcontroller ; ----- General equates --------------------------------------------- w equ 0 f equ 1 LIST F=INHX8M,p=16F628, R=HEX __config 3FF1 ; ----- I/O equates --------------------------------------------- porta equ 0x05 ;assign the porta register to the label 'porta' portb equ 0x06 ;assign the portb register to the label 'portb' status equ 0x03 ; status register address c equ 0 ; carry bit within status z equ 2 ; zero bit rp0 equ 5 ; register bank bit ; ----- register equates -------------------------------------------- pc equ 0x02 ; mcount equ 0x0c ; ncount equ 0x0d ; count equ 0x0e ; time_adjust equ 0x0f ; xcount equ 0x10 ; ycount equ 0x11 ; times equ 0x12 ; ; ------------------------------------------------------------------- org 0x00 goto start ; ----------------------- subroutine 'delay' ------------------------ delay movlw 0x01 ; change this hexadecimal number to adjust speed movwf time_adjust ; get_m movlw 0xaf ;160 movwf mcount ; get_n movlw 0xaf ;160 movwf ncount ; dec_n decfsz ncount,f ; goto dec_n ; decfsz mcount,f ; goto get_n ; decfsz time_adjust,1 ; goto get_m ; return delay_2 movlw 0x0f ;1 change this hexadecimal number to adjust speed movwf times ; get_x movlw 0xaf ;16 movwf xcount ; get_y movlw 0xaf ;16 movwf ycount ; dec_y decfsz ycount,f ; goto dec_y ; decfsz xcount,f ; goto get_y ; decfsz times,1 ; goto get_x ; return ; Dot bsf porta,0 ;set bit hi call delay ; bcf porta,0 ;set bit lo call delay ; return ; Dash bsf porta,0 ; call delay ; call delay ; call delay ; bcf porta,0 ; call delay ; return ; ;__________Characters____________ ; A call Dot call Dash return ; mB call Dash call Dot call Dot call Dot return ; C call Dash call Dot call Dash call Dot return ; D call Dash call Dot call Dot return ; E call Dot return ; F call Dot call Dot call Dash call Dot return ; G call Dash call Dash call Dot return ; H call Dot call Dot call Dot call Dot return ; I call Dot call Dot return ; J call Dot call Dash call Dash call Dash return ; K call Dash call Dot call Dash return ; L call Dot call Dash call Dot call Dot return ; M call Dash call Dash return ; N call Dash call Dot return ; O call Dash call Dash call Dash return ; P call Dot call Dash call Dash call Dot return ; Q call Dash call Dash call Dot call Dash return ; R call Dot call Dash call Dot return ; S call Dot call Dot call Dot return ; T call Dash return ; U call Dot call Dot call Dash return ; V call Dot call Dot call Dot call Dash return ; W call Dot call Dash call Dash return ; X call Dot call Dot call Dot call Dash return ; Y call Dash call Dot call Dash call Dash return ; Z call Dash call Dash call Dot call Dot return ; m0 call Dot call Dot call Dot call Dot call Dot return ; m1 call Dot call Dash call Dash call Dash call Dash return ; m2 call Dot call Dot call Dash call Dash call Dash return ; m3 call Dot call Dot call Dot call Dash call Dash return ; m4 call Dot call Dot call Dot call Dot call Dash return ; m5 call Dash call Dash call Dash call Dash call Dash return ; m6 call Dash call Dot call Dot call Dot call Dot return ; m7 call Dash call Dash call Dot call Dot call Dot return ; m8 call Dash call Dash call Dash call Dot call Dot return ; m9 call Dash call Dash call Dash call Dash call Dot return ; m/ call Dash call Dot call Dot call Dash call Dot return ; wordspace call delay call delay call delay call delay call delay return ; ; ----------------------- main programme --------------------------- start movlw 0xff ;configure portb as input bsf status,rp0 movwf portb bcf status,rp0 movlw 0x00 ;configure porta as output bsf status,rp0 movwf porta bcf status,rp0 clrf porta ;clear the porta register MSG_Test btfss portb,0 ;test for MSG_1 Select call MSG_1 ;get MSG_1 ; btfss portb,1 ;test for MSG_2 Select ; call MSG_2 ;get MSG_2 ; btfss portb,2 ;test for MSG_3 Select ; call MSG_3 ;get MSG_3 ; btfss portb,3 ;test for MSG_4 Select ; call MSG_4 ;get MSG_4 goto MSG_Test MSG_1 call T ;Morse Begins here call E ; call S ; call T ; call wordspace ; call T ; call E ; call S ; call T ; call wordspace ; call T ; call E ; call S ; call T ; call wordspace ; call D ; call E ; call wordspace ; call G ; call m8 ; call R ; call A ; call O ; call wordspace ; call I ; call O ; call m9 ; call m2 ; call A ; call L ;Morse Ends here call wordspace call delay_2 ;key down period 30 seconds return ;repeat until cycle complete MSG_2 call T ;Morse Begins here call E ; call S ; call T ; call wordspace ; call T ; call E ; call S ; call T ; call wordspace ; call T ; call E ; call S ; call T ; call wordspace ; call D ; call E ; call wordspace ; call G ; call m0 ; call N ; call N ; call F ; call m/ ; call A ; call wordspace ; call I ; call O ; call m9 ; call m2 ; call A ; call K ;Morse Ends here call wordspace call delay_2 ;key down period 30 seconds return ;repeat until cycle complete end