From 2cd30b5702576a2a5d1c08aa0973a7406db95e57 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 25 Feb 2012 23:57:20 +0000 Subject: splitted code info include files added i2c code (not tested yet) git-svn-id: https://svn.spreadspace.org/mur.sat@253 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- software/ttx_crx/ttx_crx.asm | 453 ++----------------------------------------- 1 file changed, 12 insertions(+), 441 deletions(-) (limited to 'software/ttx_crx/ttx_crx.asm') diff --git a/software/ttx_crx/ttx_crx.asm b/software/ttx_crx/ttx_crx.asm index c80535d..066379f 100644 --- a/software/ttx_crx/ttx_crx.asm +++ b/software/ttx_crx/ttx_crx.asm @@ -63,8 +63,8 @@ CLK_1HZ EQU 0 IHU_SDI EQU 1 CRX_INT EQU 3 IHU_SCK EQU 4 -CRX_SDA EQU 6 -CRX_SCL EQU 7 +I2C_SDA EQU 6 +I2C_SCL EQU 7 ;; variables @@ -91,6 +91,9 @@ CSPACE EQU DASH WSPACE EQU H'0074' TUNE EQU H'0075' +I2C_BYTE EQU H'0077' +I2C_BIT_CNT EQU H'0078' + NVSTATE EQU H'007A' BEACONCNTH EQU H'007B' BEACONCNTL EQU H'007C' @@ -121,179 +124,16 @@ interrupt_end ;; ------------------------------------- ;; TABLES - - ;; Morse Codes: 0=dot, 1=dash -getcw - addwf PCL,f - nop - retlw b'00010000' ; ! - retlw b'01001000' ; " - retlw b'00000000' ; # - retlw b'00010010' ; $ - retlw b'00000000' ; % - retlw b'01000000' ; & - retlw b'01111000' ; ' - retlw b'10110000' ; ( - retlw b'10110100' ; ) - retlw b'00000000' ; * - retlw b'01010000' ; + - retlw b'11001100' ; , - retlw b'10000100' ; - - retlw b'01010100' ; . - retlw b'10010000' ; / - retlw b'11111000' ; 0 - retlw b'01111000' ; 1 - retlw b'00111000' ; 2 - retlw b'00011000' ; 3 - retlw b'00001000' ; 4 - retlw b'00000000' ; 5 - retlw b'10000000' ; 6 - retlw b'11000000' ; 7 - retlw b'11100000' ; 8 - retlw b'11110000' ; 9 - retlw b'11100000' ; : - retlw b'10101000' ; ; - retlw b'00010100' ; < - retlw b'10001000' ; = - retlw b'10001010' ; > - retlw b'00110000' ; ? - retlw b'01000000' ; @ - retlw b'01000000' ; A - retlw b'10000000' ; B - retlw b'10100000' ; C - retlw b'10000000' ; D - retlw b'00000000' ; E - retlw b'00100000' ; F - retlw b'11000000' ; G - retlw b'00000000' ; H - retlw b'00000000' ; I - retlw b'01110000' ; J - retlw b'10100000' ; K - retlw b'01000000' ; L - retlw b'11000000' ; M - retlw b'10000000' ; N - retlw b'11100000' ; O - retlw b'01100000' ; P - retlw b'11010000' ; Q - retlw b'01000000' ; R - retlw b'00000000' ; S - retlw b'10000000' ; T - retlw b'00100000' ; U - retlw b'00010000' ; V - retlw b'01100000' ; W - retlw b'10010000' ; X - retlw b'10110000' ; Y - retlw b'11000000' ; Z + include "tables.inc" - ;; Morse Code Length -getcwlen - addwf PCL,f - nop - retlw .5 ; ! - retlw .6 ; " - retlw .0 ; # - retlw .7 ; $ - retlw .0 ; % - retlw .5 ; & - retlw .6 ; ' - retlw .5 ; ( - retlw .6 ; ) - retlw .0 ; * - retlw .5 ; + - retlw .6 ; , - retlw .6 ; - - retlw .6 ; . - retlw .5 ; / - retlw .5 ; 0 - retlw .5 ; 1 - retlw .5 ; 2 - retlw .5 ; 3 - retlw .5 ; 4 - retlw .5 ; 5 - retlw .5 ; 6 - retlw .5 ; 7 - retlw .5 ; 8 - retlw .5 ; 9 - retlw .6 ; : - retlw .6 ; ; - retlw .6 ; < - retlw .5 ; = - retlw .7 ; > - retlw .6 ; ? - retlw .6 ; @ - retlw .2 ; A - retlw .4 ; B - retlw .4 ; C - retlw .3 ; D - retlw .1 ; E - retlw .4 ; F - retlw .3 ; G - retlw .4 ; H - retlw .2 ; I - retlw .4 ; J - retlw .3 ; K - retlw .4 ; L - retlw .2 ; M - retlw .2 ; N - retlw .3 ; O - retlw .4 ; P - retlw .4 ; Q - retlw .3 ; R - retlw .3 ; S - retlw .1 ; T - retlw .3 ; U - retlw .4 ; V - retlw .3 ; W - retlw .4 ; X - retlw .4 ; Y - retlw .4 ; Z + ;; ------------------------------------- + ;; SUBROUTINES - ;; Base32 Code -base32 - addwf PCL,f - retlw 'A' - retlw 'B' - retlw 'C' - retlw 'D' - retlw 'E' - retlw 'F' - retlw 'G' - retlw 'H' - retlw 'I' - retlw 'J' - retlw 'K' - retlw 'L' - retlw 'M' - retlw 'N' - retlw 'O' - retlw 'P' - retlw 'Q' - retlw 'R' - retlw 'S' - retlw 'T' - retlw 'U' - retlw 'V' - retlw 'W' - retlw 'X' - retlw 'Y' - retlw 'Z' - retlw '2' - retlw '3' - retlw '4' - retlw '5' - retlw '6' - retlw '7' + ;; ------------------------------------- + include "ttx.inc" - ;; fixed strings -callsign - addwf PCL,f - nop - retlw 'R' - retlw 'U' - retlw 'M' - retlw '6' - retlw 'E' - retlw 'O' + ;; ------------------------------------- + include "i2c.inc" ;; ------------------------------------- ;; INIT @@ -348,275 +188,6 @@ init movlw TUNE_DEF movwf TUNE - goto main - - ;; ------------------------------------- - ;; SUBROUTINES - - ;; ------------------------------------- -dottime - movwf TMR0 - bcf INTCON,T0IF -dot_inner - btfss INTCON,T0IF - goto dot_inner - clrwdt - return - - ;; ------------------------------------- -send_char - movwf CHAR - movlw 'Z' + 1 - subwf CHAR,w - btfsc STATUS,C - return - movlw ' ' - subwf CHAR,f - btfss STATUS,C - return - btfsc STATUS,Z - return - - movf CHAR,w - call getcw - movwf ELEMENT - movf CHAR,w - call getcwlen - movwf ELECNT - movf ELECNT,f - btfsc STATUS,Z - return - movf CHAR,w - xorwf PARITY,f - -char_next_element - bsf PORTA,CW_OUT - btfss ELEMENT,7 - movf DOT,w - btfsc ELEMENT,7 - movf DASH,w - call dottime - bcf PORTA,CW_OUT - - rlf ELEMENT,f - - decfsz ELECNT,f - goto char_espace - return - -char_espace - movf ESPACE,w - call dottime - goto char_next_element - - ;; ------------------------------------- -send_callsign - movlw .6 - movwf CHARCNT - -callsign_next_char - call callsign - call send_char - decfsz CHARCNT,f - goto callsign_cspace - return - -callsign_cspace - movf CSPACE,w - call dottime - movf CHARCNT,w - goto callsign_next_char - - ;; ------------------------------------- -send_base32 - movwf PENTLECNT - -case0 - rrf INDF0,w - movwf PENTLE0 - rrf PENTLE0,f - rrf PENTLE0,w - andlw b'00011111' - call base32 - call send_char - decfsz PENTLECNT,f - goto case1 - return - -case1 - movf CSPACE,w - call dottime - rlf INDF0,w - movwf PENTLE0 - rlf PENTLE0,w - andlw b'00011100' - movwf PENTLE0 - incf FSR0L,f - swapf INDF0,w - movwf PENTLE1 - rrf PENTLE1,f - rrf PENTLE1,w - andlw b'00000011' - iorwf PENTLE0,w - call base32 - call send_char - decfsz PENTLECNT,f - goto case2 - return - -case2 - movf CSPACE,w - call dottime - rrf INDF0,w - andlw b'00011111' - call base32 - call send_char - decfsz PENTLECNT,f - goto case3 - return - -case3 - movf CSPACE,w - call dottime - swapf INDF0,w - andlw b'00010000' - movwf PENTLE0 - incf FSR0L,f - swapf INDF0,w - andlw b'00001111' - iorwf PENTLE0,w - call base32 - call send_char - decfsz PENTLECNT,f - goto case4 - return - -case4 - movf CSPACE,w - call dottime - rlf INDF0,w - andlw b'00011110' - movwf PENTLE0 - incf FSR0L,f - btfsc INDF0,7 - bsf PENTLE0,0 - movf PENTLE0,w - call base32 - call send_char - decfsz PENTLECNT,f - goto case5 - return - -case5 - movf CSPACE,w - call dottime - rrf INDF0,w - movwf PENTLE0 - rrf PENTLE0,w - andlw b'00011111' - call base32 - call send_char - decfsz PENTLECNT,f - goto case6 - return - -case6 - movf CSPACE,w - call dottime - swapf INDF0,w - movwf PENTLE0 - rrf PENTLE0,w - andlw b'00011000' - movwf PENTLE0 - incf FSR0L,f - swapf INDF0,w - movwf PENTLE1 - rrf PENTLE1,w - andlw b'00000111' - iorwf PENTLE0,w - call base32 - call send_char - decfsz PENTLECNT,f - goto case7 - return - -case7 - movf CSPACE,w - call dottime - movf INDF0,w - andlw b'00011111' - call base32 - call send_char - decfsz PENTLECNT,f - goto caseend - return - -caseend - movf CSPACE,w - call dottime - incf FSR0L,f - goto case0 - - ;; ------------------------------------- -send_cnt - rlf BEACONCNTL,w - movwf TMP2 - rlf BEACONCNTH,w - movwf TMP1 - movlw TMP1 - movwf FSR0L - clrf FSR0H - movlw .3 - call send_base32 - return - - ;; ------------------------------------- -send_parity - movf PARITY,w - btfsc PARITY,5 - xorlw b'00000001' - andlw b'00011111' - call base32 - call send_char - - movf WSPACE,w - call dottime - return - - ;; ------------------------------------- -send_beacon - bsf PORTA,CW_ENABLE - movf TUNE,w - call dottime - clrf PARITY - - movlw START_CHAR - call send_char - - movf WSPACE,w - call dottime - - call send_callsign - - movf WSPACE,w - call dottime - - call send_cnt - - movf WSPACE,w - call dottime - - call send_parity - - incfsz BEACONCNTL,f - goto beacon_end - incf BEACONCNTH,f - ;; TODO write new cnt value to EEPROM - -beacon_end - bcf PORTA,CW_ENABLE - return - ;; ------------------------------------- ;; MAINLOOP main -- cgit v1.2.3