;#################### RAM ############################################################## .dseg .if use_buffer == 1 .if dog_132==1 buffer: .byte 528 .endif .if dog_128==1|dogL_128==1 buffer: .byte 1152 .endif buffer_rdy: .byte 1 .endif ;##################### Progamm ########################################################## .cseg ;---------------------------------------------------------------------------------------- .if use_lcd_init == 1 ; in : ----- lcd_init: push r16 push r18 push ZL push ZH .if use_SPI|use_USART_SPI|use_USI_SPI|use_Soft_SPI == 1 rcall spi_init .endif .if use_soft_reset == 1 do_reset .endif set_command clr_txc .if use_soft_cs == 1 cbi dog_port,dog_cs ; CS=L .endif ldi ZL, Low(init_sequ<<1) ldi ZH,High(init_sequ<<1) ldi r16,15 lcd_init30: lpm r18,Z+ rcall out_spi dec r16 brne lcd_init30 wait_txc ; Ende der Übertragung abwarten pop ZH pop ZL pop r18 pop r16 ret ; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .if dog_132==1 init_sequ: .db $40,$A1,$C0,$A6,$A2,$2F,$F8,$00,$23,$81,$1F,$AC,$00,$AF .elif dog_128==1 init_sequ: .db $40,$A1,$C0,$A6,$A2,$2F,$F8,$00,$27,$81,$16,$AC,$00,$AF .elif dogL_128==1 init_sequ: .db $40,$A1,$C0,$A6,$A2,$2F,$F8,$00,$27,$81,$11,$AC,$00,$AF, $A7,$A0,$AD,$01 .endif ; | | | | | | |_____| | |_____| |_____| | ; | | | | | | | | | | |_Display ON/OFF (Display on) ; | | | | | | | | | | ; | | | | | | | | | |_Static indicator set (No indicator) ; | | | | | | | | | ; | | | | | | | | |_Electronic volume mode set (Contrast set) ; | | | | | | | | ; | | | | | | | |_V0 voltage regulator set ; | | | | | | | ; | | | | | | |_Booster ratio set (Set internal Booster to 4x) ; | | | | | | ; | | | | | |_Power control set (Booster, Regulator and Follower on) ; | | | | | ; | | | | |_LCD bias set (Set bias 1/9 (Duty 1/65)) ; | | | | ; | | | |_Display normal/reverse (Display normal) ; | | | ; | | |_Common output mode select (Normal COM0~COM63) ; | | ; | |_ADC set(ADC reverse) ; | ; |_Display start line (Start line 0) .endif ;---------------------------------------------------------------------------------------- ; Clear Display ; ; in : ----- .if use_clear_disp == 1 clear_disp: push r16 push r17 push r18 clr r17 clear_disp10: clr_txc set_command mov r18,r17 rcall set_page clr r18 rcall set_column set_data ldi r16,pagelen clr r18 clear_disp20: rcall out_spi dec r16 brne clear_disp20 wait_txc inc r17 cpi r17,pages brcs clear_disp10 clr r18 rcall set_page rcall set_column ;Display home wait_txc pop r18 pop r17 pop r16 ret .endif .........