TI-H: part 2


[Prev][Next][Index][Thread]

TI-H: part 2




;*****************************************************
;*       9600 8N1                                    *
;* Transmit Routine.                                 *
;*                                                   *
;* Uses a 4.00 Mhz Crystal (2 Mhz Bus Speed)         *
;* to obtain a transmission speed of 9600 BPS        *
;*                                                   *
;*****************************************************

.include "serialcom.asm"

;TI communications

.include "TIcom.asm"

.equ    b       =31     ;19200 bps @ 4 MHz crystal


UART_delay:
        ldi             temp,b
UART_delay1:
        dec             temp
        brne            UART_delay1

        ret

;*****************************************************
;*                                                   *
;*   No-Shift - Lookup Table when Shift not Pressed  *
;*                                                   *
;*****************************************************

noshift:
        ldi     zl, low(noshifttbl*2)
        ldi     zh, high(noshifttbl*2)
        add     zl, byte
        brcc    amyg
        inc     zh
amyg:
        lpm                     ;rezult in R0
        mov             byte, r0
        ret

;*****************************************************
;*                                                   *
;*   Shift - Lookup Table Used when Shift Pressed    *
;*                                                   *
;*****************************************************

shift:
        ldi     zl, low(shifttbl*2)
        ldi     zh, high(shifttbl*2)
        add     zl, byte
        brcc    agantt
        inc     zh
agantt:
        lpm                                             ;rezult in R0
        mov             byte, r0
        ret

.CSEG
noshifttbl:
        .db             $00     ; 00
        .db             $00     ; 01  F9
        .db             $00     ; 02
        .db             $00     ; 03  F5
        .db             $00     ; 04  F3
        .db             $00     ; 05  F1
        .db             $00     ; 06  F2
        .db             $00     ; 07  F12
        .db             $00     ; 08
        .db             $00     ; 09  F10
        .db             $00     ; 0A  F8
        .db             $00     ; 0B  F6
        .db             $00     ; 0C  F4
        .db             $09     ; 0D  TAB
        .db             '`'     ; 0E  ` or ~
        .db             $00     ; 0F

        .db             $00     ; 10
        .db             $00     ; 11  Left ALT
        .db             $00     ; 12  Left SHIFT
        .db             $00     ; 13
        .db             $00     ; 14  Left Ctrl
        .db             'q'     ; 15  Q
        .db             '1'     ; 16  1 or !
        .db             $00     ; 17
        .db             $00     ; 18
        .db             $00     ; 19
        .db             'z'     ; 1A  Z
        .db             's'     ; 1B  S
        .db             'a'     ; 1C  A
        .db             'w'     ; 1D  W
        .db             '2'     ; 1E  2 or @
        .db             $00     ; 1F

        .db             $00     ; 20
        .db             'c'     ; 21  C
        .db             'x'     ; 22  X
        .db             'd'     ; 23  D
        .db             'e'     ; 24  E
        .db             '4'     ; 25  4 or $
        .db             '3'     ; 26  3 or #
        .db             $00     ; 27
        .db             $00     ; 28
        .db             ' '     ; 29  Space
        .db             'v'     ; 2A  V
        .db             'f'     ; 2B  F
        .db             't'     ; 2C  T
        .db             'r'     ; 2D  R
        .db             '5'     ; 2E  5 or %
        .db             $00     ; 2F

        .db             $00     ; 30
        .db             'n'     ; 31  N
        .db             'b'     ; 32  B
        .db             'h'     ; 33  H
        .db             'g'     ; 34  G
        .db             'y'     ; 35  Y
        .db             '6'     ; 36  6 or ^
        .db             $00     ; 37
        .db             $00     ; 38
        .db             $00     ; 39
        .db             'm'     ; 3A  M
        .db             'j'     ; 3B  J
        .db             'u'     ; 3C  U
        .db             '7'     ; 3D  7 or &
        .db             '8'     ; 3E  8 or *
        .db             $00     ; 3F

        .db             $00     ; 40
        .db             ','     ; 41  , or <
        .db             'k'     ; 42  K
        .db             'i'     ; 43  I
        .db             'o'     ; 44  O
        .db             '0'     ; 45  0 or )
        .db             '9'     ; 46  9 or (
        .db             $00     ; 47
        .db             $00     ; 48
        .db             '.'     ; 49  . or >
        .db             '/'     ; 4A  / or ?
        .db             'l'     ; 4B  L
        .db             ';'     ; 4C  ; or :
        .db             'p'     ; 4D  P
        .db             '-'     ; 4E  - or _
        .db             $00     ; 4F

        .db             $00     ; 50
        .db             $00     ; 51
        .db             $27     ; 52  ' or "
        .db             $00     ; 53
        .db             '['     ; 54  [ or {
        .db             '='     ; 55  = OR +
        .db             $00     ; 56
        .db             $00     ; 57
        .db             $00     ; 58  Caps Lock
        .db             $00     ; 59  Right Shift
        .db             $0D     ; 5A  Enter
        .db             ']'     ; 5B  ] or }
        .db             $00     ; 5C
        .db             '\'     ; 5D  \ or |
        .db             $00     ; 5E
        .db             $00     ; 5F

        .db             $00     ; 60
        .db             $00     ; 61
        .db             $00     ; 62
        .db             $00     ; 63
        .db             $00     ; 64
        .db             $00     ; 65
        .db             $08     ; 66  Backspace
        .db             $00     ; 67
        .db             $00     ; 68
        .db             '1'     ; 69  NUM - 1 or END
        .db             $00     ; 6A
        .db             '4'     ; 6B  NUM - 4 or LEFT
        .db             '7'     ; 6C  NUM - 7 or HOME
        .db             $00     ; 6D
        .db             $00     ; 6E
        .db             $00     ; 6F

        .db             '0'     ; 70  NUM - 0 or INS
        .db             '.'     ; 71  NUM - . or DEL
        .db             '2'     ; 72  NUM - 2 or DOWN
        .db             '5'     ; 73  NUM - 5
        .db             '6'     ; 74  NUM - 6 or RIGHT
        .db             '8'     ; 75  NUM - 8 or UP
        .db             $1B     ; 76  ESC
        .db             $00     ; 77  NUM LOCK
        .db             $00     ; 78  F11
        .db             '+'     ; 79  NUM - + (Plus)
        .db             '3'     ; 7A  NUM 3 or PAGE DOWN
        .db             '-'     ; 7B  NUM - - (Minus)
        .db             '*'     ; 7C  NUM - *
        .db             '9'     ; 7D  NUM - 9 or PAGE UP
        .db             $00     ; 7E  SCROLL LOCK
        .db             $00     ; 7F

        .db             $00     ; 80
        .db             $00     ; 81
        .db             $00     ; 82
        .db             $00     ; 83  F7
        .db             $00     ; 84
        .db             $00     ; 85
        .db             $00     ; 86
        .db             $00     ; 87
        .db             $00     ; 88
        .db             $00     ; 89
        .db             $00     ; 8A
        .db             $00     ; 8B
        .db             $00     ; 8C
        .db             $00     ; 8D
        .db             $00     ; 8E
        .db             $00     ; 8F

shifttbl:
        .db             $00     ; 00
        .db             $00     ; 01  F9
        .db             $00     ; 02
        .db             $00     ; 03  F5
        .db             $00     ; 04  F3
        .db             $00     ; 05  F1
        .db             $00     ; 06  F2
        .db             $00     ; 07  F12
        .db             $00     ; 08
        .db             $00     ; 09  F10
        .db             $00     ; 0A  F8
        .db             $00     ; 0B  F6
        .db             $00     ; 0C  F4
        .db             $09     ; 0D  TAB
        .db             '~'     ; 0E  ` or ~
        .db             $00     ; 0F

        .db             $00     ; 10
        .db             $00     ; 11  Left ALT
        .db             $00     ; 12  Left SHIFT
        .db             $00     ; 13
        .db             $00     ; 14  Left Ctrl
        .db             'Q'     ; 15  Q
        .db             '!'     ; 16  1 or !
        .db             $00     ; 17
        .db             $00     ; 18
        .db             $00     ; 19
        .db             'Z'     ; 1A  Z
        .db             'S'     ; 1B  S
        .db             'A'     ; 1C  A
        .db             'W'     ; 1D  W
        .db             '@'     ; 1E  2 or @
        .db             $00     ; 1F

        .db             $00     ; 20
        .db             'C'     ; 21  C
        .db             'X'     ; 22  X
        .db             'D'     ; 23  D
        .db             'E'     ; 24  E
        .db             '$'     ; 25  4 or $
        .db             '#'     ; 26  3 or #
        .db             $00     ; 27
        .db             $00     ; 28
        .db             ' '     ; 29  Space
        .db             'V'     ; 2A  V
        .db             'F'     ; 2B  F
        .db             'T'     ; 2C  T
        .db             'R'     ; 2D  R
        .db             '%'     ; 2E  5 or %
        .db             $00     ; 2F

        .db             $00     ; 30
        .db             'N'     ; 31  N
        .db             'B'     ; 32  B
        .db             'H'     ; 33  H
        .db             'G'     ; 34  G
        .db             'Y'     ; 35  Y
        .db             '^'     ; 36  6 or ^
        .db             $00     ; 37
        .db             $00     ; 38
        .db             $00     ; 39
        .db             'M'     ; 3A  M
        .db             'J'     ; 3B  J
        .db             'U'     ; 3C  U
        .db             '&'     ; 3D  7 or &
        .db             '*'     ; 3E  8 or *
        .db             $00     ; 3F

        .db             $00     ; 40
        .db             '<'     ; 41  , or <
        .db             'K'     ; 42  K
        .db             'I'     ; 43  I
        .db             'O'     ; 44  O
        .db             ')'     ; 45  0 or )
        .db             '('     ; 46  9 or (
        .db             $00     ; 47
        .db             $00     ; 48
        .db             '>'     ; 49  > or .
        .db             '?'     ; 4A  / or ?
        .db             'L'     ; 4B  L
        .db             ':'     ; 4C  ; or :
        .db             'P'     ; 4D  P
        .db             '_'     ; 4E  - or _
        .db             $00     ; 4F

        .db             $00     ; 50
        .db             $00     ; 51
        .db             $22     ; 52  ' or "
        .db             $00     ; 53
        .db             '{'     ; 54  [ or {
        .db             '+'     ; 55  = OR +
        .db             $00     ; 56
        .db             $00     ; 57
        .db             $00     ; 58  Caps Lock
        .db             $00     ; 59  Right Shift
        .db             $0D     ; 5A  Enter
        .db             '}'     ; 5B  ] or }
        .db             $00     ; 5C
        .db             '|'     ; 5D  \ or |
        .db             $00     ; 5E
        .db             $00     ; 5F

        .db             $00     ; 60
        .db             $00     ; 61
        .db             $00     ; 62
        .db             $00     ; 63
        .db             $00     ; 64
        .db             $00     ; 65
        .db             $08     ; 66  Backspace
        .db             $00     ; 67
        .db             $00     ; 68
        .db             '1'     ; 69  NUM - 1 or END
        .db             $00     ; 6A
        .db             '4'     ; 6B  NUM - 4 or LEFT
        .db             '7'     ; 6C  NUM - 7 or HOME
        .db             $00     ; 6D
        .db             $00     ; 6E
        .db             $00     ; 6F

        .db             '0'     ; 70  NUM - 0 or INS
        .db             '.'     ; 71  NUM - . or DEL
        .db             '2'     ; 72  NUM - 2 or DOWN
        .db             '5'     ; 73  NUM - 5
        .db             '6'     ; 74  NUM - 6 or RIGHT
        .db             '8'     ; 75  NUM - 8 or UP
        .db             $1B     ; 76  ESC
        .db             $00     ; 77  NUM LOCK
        .db             $00     ; 78  F11
        .db             '+'     ; 79  NUM - + (Plus)
        .db             '3'     ; 7A  NUM 3 or PAGE DOWN
        .db             '-'     ; 7B  NUM - - (Minus)
        .db             '*'     ; 7C  NUM - *
        .db             '9'     ; 7D  NUM - 9 or PAGE UP
        .db             $00     ; 7E  SCROLL LOCK
        .db             $00     ; 7F

        .db             $00     ; 80
        .db             $00     ; 81
        .db             $00     ; 82
        .db             $00     ; 83  F7
        .db             $00     ; 84
        .db             $00     ; 85
        .db             $00     ; 86
        .db             $00     ; 87
        .db             $00     ; 88
        .db             $00     ; 89
        .db             $00     ; 8A
        .db             $00     ; 8B
        .db             $00     ; 8C
        .db             $00     ; 8D
        .db             $00     ; 8E
        .db             $00     ; 8F