; +++++++++++++++++++++ ; ++ LCD Display ++ ; +++++++++++++++++++++ ; ; ;P16F873 4MHz ; ;Display ;RB0 E ;RB1 ;RB2 RS ;RB3 R/W ;RB4 DB4 ;RB5 DB5 ;RB6 DB6 ;RB7 DB7 ; ;==================================================================================================== ;Configuration #include "c:\Programme\Microchip\MPASM Suite\P16F873A.inc" __CONFIG _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _XT_OSC ;Wariablendefinition cblock h'25' W_COPY, S_COPY, PCLATH_COPY MS, DELAY, DELAY_A, DELAY_B, DELAY_C, YS DATEN ;Displaydaten TDATEN DISPSA, DISPSB ;Stellen in die geschrieben wird DDATENA, DDATENB, DDATENC, DDATEND, DDATENE, DDATENF, DDATENG, DDATENH, DDATENI TEST endc ;Display E equ 0 RW equ 3 RS equ 2 ;start/reset org 0 b start ;Delay routinen ms movlw D'110' movwf MS msa nop nop nop nop nop nop decfsz MS,1 b msa return ys50 movlw D'20' movwf YS ys50a nop nop nop decfsz YS b ys50a return s1_4 movlw D'250' movwf DELAY_C s1_4a call ms decfsz DELAY_C b s1_4a return delay call s1_4 decfsz DELAY b delay return delay_b call ms decfsz DELAY_B b delay_b return ;Instalation start bsf STATUS,RP0 movlw B'00000000' movwf TRISB movlw B'00110000' movwf TRISC bcf STATUS,RP0 bcf INTCON,GIE movlw b'10101111' movwf DISPSA movlw b'10000111' movwf DISPSB movlw b'11111110' movwf DDATENA movlw b'11111110' movwf DDATENB movlw b'11111110' movwf DDATENC movlw b'11111110' movwf DDATEND movlw b'11111110' movwf DDATENE movlw b'11111110' movwf DDATENF movlw b'11111110' movwf DDATENG movlw b'11111110' movwf DDATENH movlw b'11111110' movwf DDATENI ;Haupt routine call init movlw b'01000001' ;A movwf DDATENA call ausg_ls movlw b'01000010' ;B movwf DDATENA call ausg_ls movlw b'01000011' ;C movwf DDATENA call ausg_ls movlw b'01000100' ;D movwf DDATENA call ausg_ls movlw b'01000101' ;E movwf DDATENA call ausg_ls movlw b'01000110' ;F movwf DDATENA call ausg_ls movlw b'01000111' ;G movwf DDATENA call ausg_ls movlw b'01001000' ;H movwf DDATENA call ausg_ls movlw b'01001001' ;I movwf DDATENA call ausg_ls movlw b'01001010' ;J movwf DDATENA call ausg_ls movlw b'01001011' ;K movwf DDATENA call ausg_ls movlw b'01001100' ;L movwf DDATENA call ausg_ls movlw b'01001101' ;M movwf DDATENA call ausg_ls movlw b'01001110' ;N movwf DDATENA call ausg_ls movlw b'01001111' ;O movwf DDATENA call ausg_ls ;??????????????????????????????????????????????????????? movlw b'01010000' ;P movwf DDATENA call ausg_ls movlw b'01010001' ;Q movwf DDATENA call ausg_ls movlw b'01010010' ;R movwf DDATENA call ausg_ls movlw b'01010011' ;S movwf DDATENA call ausg_ls movlw b'01010100' ;T movwf DDATENA call ausg_ls movlw b'01010101' ;U movwf DDATENA call ausg_ls movlw b'01010110' ;V movwf DDATENA call ausg_ls movlw b'01010111' ;W movwf DDATENA call ausg_ls movlw b'01011000' ;X movwf DDATENA call ausg_ls movlw b'01011001' ;Y movwf DDATENA call ausg_ls movlw b'01011010' ;Z movwf DDATENA call ausg_ls main b main ;Displayroutinen init movlw d'250' movwf DELAY_B call delay_b movlw b'00110000' ;8-Bit Interface movwf DATEN call ausg_a movlw d'50' movwf DELAY_B call delay_b movlw b'00110000' ;8-Bit Interface movwf DATEN call ausg_a call ms movlw b'00110000' ;8-Bit Interface movwf DATEN call ausg_a movlw b'00100000' ;4-Bit Interface movwf DATEN call ausg_a movlw b'00101000' ;2-zeilig; 5x7-Punkt-Matrix movwf DATEN call ausg_s movlw b'00001000' ;Display aus; Kurser off; Blinking off movwf DATEN call ausg_s movlw b'00000001' ;clear movwf DATEN call ausg_s call ms movlw b'00000111' ;Display shift; Increase movwf DATEN call ausg_s movlw b'00001100' ;Display ein; Kurser off; Blinking off movwf DATEN call ausg_s movlw b'00000001' ;clear movwf DATEN call ausg_s return ausg_a movfw DATEN movwf PORTB bsf PORTB,E nop bcf PORTB,E call ms call ms return ausg_s movfw DATEN movwf TDATEN call ausg_sa swapf DATEN,w movwf TDATEN call ausg_sa return ausg_sa bcf TDATEN,RS bcf TDATEN,RW bcf TDATEN,E movfw TDATEN movwf PORTB bsf PORTB,E nop bcf PORTB,E call ms call ms return ausg_d movfw DATEN movwf TDATEN call ausg_da swapf DATEN,w movwf TDATEN call ausg_da return ausg_da bsf TDATEN,RS bcf TDATEN,RW bcf TDATEN,E movfw TDATEN movwf PORTB bsf PORTB,E nop bcf PORTB,E call ys50 return ;Ausgaberotine für Laufschrift ausg_ls incf DISPSA,f incf DISPSB,f movfw DISPSA ;Springen movwf DATEN call ausg_s movlw b'00000110' ;Display not shift movwf DATEN call ausg_s movfw DDATENA ;ausgabe erste 8 Stellen movwf DATEN call ausg_d movfw DISPSB ;Springen movwf DATEN call ausg_s movlw b'00000111' ;Display not shift movwf DATEN call ausg_s movfw DDATENI ;ausgabe zweiten 8 Stellen movwf DATEN call ausg_d movfw DDATENH movwf DDATENI movfw DDATENG movwf DDATENH movfw DDATENF movwf DDATENG movfw DDATENE movwf DDATENF movfw DDATEND movwf DDATENE movfw DDATENC movwf DDATEND movfw DDATENB movwf DDATENC movfw DDATENA movwf DDATENB movlw d'2' movwf DELAY call delay return end