led7seg.inc
changeset 17 a7c668003a19
child 18 79b25e81721f
equal deleted inserted replaced
16:11d6167a67cb 17:a7c668003a19
       
     1 .equ LED7_DDR    = DDRB
       
     2 .equ LED7_PORT   = PORTB
       
     3 .equ LED7_OE     = PORTB1                ; Output Enable (Low)
       
     4 
       
     5 ; Output font for 7-segment display
       
     6 LED7_Font:
       
     7 .db     0b00111111, 0b00000110      ; 0, 1
       
     8 .db     0b01011011, 0b01001111      ; 2, 3
       
     9 .db     0b01100110, 0b01101101      ; 4, 5
       
    10 .db     0b01111101, 0b00000111      ; 6, 7
       
    11 .db     0b01111111, 0b01100111      ; 8, 9
       
    12 .db     0b01110111, 0b01111100      ; A, b
       
    13 .db     0b00111001, 0b01011110      ; C, d
       
    14 .db     0b01111001, 0b01110001      ; E, f
       
    15 .db     0b10000000, 0b00000000      ; ., 
       
    16 
       
    17 ;.db     0b00111111,     ; 0
       
    18 ;        0b00000110,     ; 1
       
    19 ;        0b01011011,     ; 2
       
    20 ;        0b01001111,     ; 3
       
    21 ;        0b01100110,     ; 4
       
    22 ;        0b01101101,     ; 5
       
    23 ;        0b01111101,     ; 6
       
    24 ;        0b00000111,     ; 7
       
    25 ;        0b01111111,     ; 8
       
    26 ;        0b01100111,     ; 9
       
    27 ;        0b10000000,     ; .
       
    28 ;        0b01000000      ; 
       
    29 
       
    30 .equ LED7_0      = 0
       
    31 .equ LED7_1      = 1
       
    32 .equ LED7_2      = 2
       
    33 .equ LED7_3      = 3
       
    34 .equ LED7_4      = 4
       
    35 .equ LED7_5      = 5
       
    36 .equ LED7_6      = 6
       
    37 .equ LED7_7      = 7
       
    38 .equ LED7_8      = 8
       
    39 .equ LED7_9      = 9
       
    40 .equ LED7_A      = 10
       
    41 .equ LED7_B      = 11
       
    42 .equ LED7_C      = 12
       
    43 .equ LED7_D      = 13
       
    44 .equ LED7_E      = 14
       
    45 .equ LED7_F      = 15
       
    46 .equ LED7_DOT    = 16
       
    47 .equ LED7_EMPTY  = 17
       
    48 
       
    49 ;; Initialize LCD to empty, and enable
       
    50 LED7_Init:
       
    51     ; Setup ENable port
       
    52         sbi         LED7_PORT, LED7_OE    ; Disabled (Low)
       
    53         sbi         LED7_DDR, LED7_OE     ; Out
       
    54 
       
    55         ; empty
       
    56         ldi         r16, 0b11111111
       
    57 
       
    58     ; Output
       
    59         rcall       SPI_SendRecv
       
    60         rcall       SPI_Wait
       
    61 
       
    62     ; Enable
       
    63         cbi         LED7_PORT, LED7_OE
       
    64 
       
    65     ; Done
       
    66         ret
       
    67 
       
    68 ;; Display a single digit on the display
       
    69 ;;  Input: r16
       
    70 LED7_Show:
       
    71         clr         r0, 0
       
    72 
       
    73     ; Prep address
       
    74         ; base addr for font table
       
    75         ldi         ZH, high(2*LED7_Font)
       
    76         ldi         ZL, low(2*LED7_Font)
       
    77         
       
    78         ; offset
       
    79         add         ZL, r16
       
    80         adc         ZH, r0
       
    81 
       
    82     ; Load char
       
    83         lpm         r16, Z
       
    84     
       
    85     ;; Continue
       
    86 
       
    87 ;; Display a raw segment mask
       
    88 ;;  Input: r16
       
    89 LED7_ShowRaw:
       
    90     ; Invert
       
    91         ; com         r16
       
    92 
       
    93     ; Display
       
    94         rjmp        SPI_SendRecv
       
    95 
       
    96