terom@17: .equ LED7_DDR = DDRB terom@17: .equ LED7_PORT = PORTB terom@17: .equ LED7_OE = PORTB1 ; Output Enable (Low) terom@17: terom@17: ; Output font for 7-segment display terom@17: LED7_Font: terom@17: .db 0b00111111, 0b00000110 ; 0, 1 terom@17: .db 0b01011011, 0b01001111 ; 2, 3 terom@17: .db 0b01100110, 0b01101101 ; 4, 5 terom@17: .db 0b01111101, 0b00000111 ; 6, 7 terom@17: .db 0b01111111, 0b01100111 ; 8, 9 terom@17: .db 0b01110111, 0b01111100 ; A, b terom@17: .db 0b00111001, 0b01011110 ; C, d terom@17: .db 0b01111001, 0b01110001 ; E, f terom@17: .db 0b10000000, 0b00000000 ; ., terom@17: terom@17: ;.db 0b00111111, ; 0 terom@17: ; 0b00000110, ; 1 terom@17: ; 0b01011011, ; 2 terom@17: ; 0b01001111, ; 3 terom@17: ; 0b01100110, ; 4 terom@17: ; 0b01101101, ; 5 terom@17: ; 0b01111101, ; 6 terom@17: ; 0b00000111, ; 7 terom@17: ; 0b01111111, ; 8 terom@17: ; 0b01100111, ; 9 terom@17: ; 0b10000000, ; . terom@17: ; 0b01000000 ; terom@17: terom@17: .equ LED7_0 = 0 terom@17: .equ LED7_1 = 1 terom@17: .equ LED7_2 = 2 terom@17: .equ LED7_3 = 3 terom@17: .equ LED7_4 = 4 terom@17: .equ LED7_5 = 5 terom@17: .equ LED7_6 = 6 terom@17: .equ LED7_7 = 7 terom@17: .equ LED7_8 = 8 terom@17: .equ LED7_9 = 9 terom@17: .equ LED7_A = 10 terom@17: .equ LED7_B = 11 terom@17: .equ LED7_C = 12 terom@17: .equ LED7_D = 13 terom@17: .equ LED7_E = 14 terom@17: .equ LED7_F = 15 terom@17: .equ LED7_DOT = 16 terom@17: .equ LED7_EMPTY = 17 terom@17: terom@17: ;; Initialize LCD to empty, and enable terom@17: LED7_Init: terom@17: ; Setup ENable port terom@17: sbi LED7_PORT, LED7_OE ; Disabled (Low) terom@17: sbi LED7_DDR, LED7_OE ; Out terom@17: terom@17: ; empty terom@17: ldi r16, 0b11111111 terom@17: terom@17: ; Output terom@17: rcall SPI_SendRecv terom@17: rcall SPI_Wait terom@17: terom@17: ; Enable terom@17: cbi LED7_PORT, LED7_OE terom@17: terom@17: ; Done terom@17: ret terom@17: terom@17: ;; Display a single digit on the display terom@17: ;; Input: r16 terom@17: LED7_Show: terom@17: clr r0, 0 terom@17: terom@17: ; Prep address terom@17: ; base addr for font table terom@17: ldi ZH, high(2*LED7_Font) terom@17: ldi ZL, low(2*LED7_Font) terom@17: terom@17: ; offset terom@17: add ZL, r16 terom@17: adc ZH, r0 terom@17: terom@17: ; Load char terom@17: lpm r16, Z terom@17: terom@17: ;; Continue terom@17: terom@17: ;; Display a raw segment mask terom@17: ;; Input: r16 terom@17: LED7_ShowRaw: terom@17: ; Invert terom@17: ; com r16 terom@17: terom@17: ; Display terom@17: rjmp SPI_SendRecv terom@17: terom@17: