S
simonwai999
Guest
hei
Code:
listen p = 16F690
# include <p16F690.inc>
__config (_WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)# define E PORTC, 0; Definer Aktiver funksjonen på bit 0 av PORTC
# define RW PORTC, 1; Definer R / W funksjonen bit 1 av PORTC
# define RS PORTC, 2; Definer Registrer Utvalg funksjon på litt 2 av PORTCtemp EQU 0x20; Temp registrere deg for å holde data blir sendt til skjerm
indre EQU 0x21; Loop counter for Delay Rutinemessig
;************************************************* ***************************org 0x000
NOP;************************************************* ********************************BANKSEL TRISB
clrf TRISB; Sett PORTB som utganger
clrf TRISC; Sett PORTC som utgangerBANKSEL PORTB
bSF E; Initialiser Aktiver å Logic Høy Stat
BCF RW; Initialiser RW å Logic Low (Write)Ring InitDisp; Put skjerm i 4-biters modusmovlw 0x28; Send Entry Mode Set kommandoen for 4-bits modus
Ring LCDCommand og 2-linjers display
movlw 0x0E; Send kommandoen til å slå på skjermen og markøren
Ring LCDCommand
movlw 0x06; Send Entry Mode Set-kommandoen til å øke adresse
Ring LCDCommand; etter én og flytte markøren til høyre
movlw 0x80; Send Set DDRAM Address til adresse 0x00
Ring LCDCommand
movlw 'A'; Send en 'Character A' til den vises på første linje
Ring LCDDatamovlw 0xC0; Send Set DDRAM Address til adresse 0x40
Ring LCDCommandmovlw 'B'; Send en 'Character B' til vises på andre linje
Ring LCDDataSelf:
goto Self; Loop på plass; ************************************************* **
; * Slik initialiserer display, sender vi en 8-bit *
; * For å vise å sette det inn i 4-biters modus. *
; ************************************************* **
InitDisp:
BANKSEL PORTB
movlw 0x02; Funksjon satt for 4-bits grensesnitt
movwf PORTB; Flytt-kommandoen til LSB's of PORTB
BCF RS; Clear RS (indikerer kommando)
BCF E; Strobe Aktiver
bSF E
Ring Delay; Tillat vise til prosessen kommando
return; tilbake til innringeren; ************************************************* **
; * Hvis du vil sende kommandoen til skjermen, laste data inn *
; * W_REG og ringe LCDCommand *
; ************************************************* **
LCDCommand:
BCF RS; Clear RS linje for kommando
goto SendToLCD; ************************************************* **
; * For å sende data til skjermen, laste data inn *
; * W_REG og ringe LCDData *
; ************************************************* **
LCDData:
bSF RS; Set RS linje for data; ************************************************* **
; * Universell subroutine å sende en byte til LCD, *
; * Passert i gjennom W_REG. *
; ************************************************* **
SendToLCD:
movwf temp; Lagre våre data i temp register
swapf temp, W; Bytt nybbles og plassere resultatet i W
movwf PORTB; Flytt øvre nybble av data i LSB's of PORTB
BCF E; Strobe Aktiver
bSF E
movf temp, W; Hent våre opprinnelige dataene byte i W
movwf PORTB; Flytt til PORTB, i hovedsak plassere lavere nybble
; I LSB's of PORTB
BCF E; Stobe Aktiver
bSF E
Ring Delay; Gi vise tid til å behandle kommando eller data
return; tilbake til innringeren; ************************************************* *****
; * Opprette en forsinkelse å tillate Display å behandle kommandoen *
; ************************************************* *****Delay:
clrf indre
DLoop:
nop
nop
decfsz indre
goto DLoop
returnEND
Code:
listen p = 16F690
# include <p16F690.inc>
__config (_WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)# define E PORTC, 0; Definer Aktiver funksjonen på bit 0 av PORTC
# define RW PORTC, 1; Definer R / W funksjonen bit 1 av PORTC
# define RS PORTC, 2; Definer Registrer Utvalg funksjon på litt 2 av PORTCtemp EQU 0x20; Temp registrere deg for å holde data blir sendt til skjerm
indre EQU 0x21; Loop counter for Delay Rutinemessig
;************************************************* ***************************org 0x000
NOP;************************************************* ********************************BANKSEL TRISB
clrf TRISB; Sett PORTB som utganger
clrf TRISC; Sett PORTC som utgangerBANKSEL PORTB
bSF E; Initialiser Aktiver å Logic Høy Stat
BCF RW; Initialiser RW å Logic Low (Write)Ring InitDisp; Put skjerm i 4-biters modusmovlw 0x28; Send Entry Mode Set kommandoen for 4-bits modus
Ring LCDCommand og 2-linjers display
movlw 0x0E; Send kommandoen til å slå på skjermen og markøren
Ring LCDCommand
movlw 0x06; Send Entry Mode Set-kommandoen til å øke adresse
Ring LCDCommand; etter én og flytte markøren til høyre
movlw 0x80; Send Set DDRAM Address til adresse 0x00
Ring LCDCommand
movlw 'A'; Send en 'Character A' til den vises på første linje
Ring LCDDatamovlw 0xC0; Send Set DDRAM Address til adresse 0x40
Ring LCDCommandmovlw 'B'; Send en 'Character B' til vises på andre linje
Ring LCDDataSelf:
goto Self; Loop på plass; ************************************************* **
; * Slik initialiserer display, sender vi en 8-bit *
; * For å vise å sette det inn i 4-biters modus. *
; ************************************************* **
InitDisp:
BANKSEL PORTB
movlw 0x02; Funksjon satt for 4-bits grensesnitt
movwf PORTB; Flytt-kommandoen til LSB's of PORTB
BCF RS; Clear RS (indikerer kommando)
BCF E; Strobe Aktiver
bSF E
Ring Delay; Tillat vise til prosessen kommando
return; tilbake til innringeren; ************************************************* **
; * Hvis du vil sende kommandoen til skjermen, laste data inn *
; * W_REG og ringe LCDCommand *
; ************************************************* **
LCDCommand:
BCF RS; Clear RS linje for kommando
goto SendToLCD; ************************************************* **
; * For å sende data til skjermen, laste data inn *
; * W_REG og ringe LCDData *
; ************************************************* **
LCDData:
bSF RS; Set RS linje for data; ************************************************* **
; * Universell subroutine å sende en byte til LCD, *
; * Passert i gjennom W_REG. *
; ************************************************* **
SendToLCD:
movwf temp; Lagre våre data i temp register
swapf temp, W; Bytt nybbles og plassere resultatet i W
movwf PORTB; Flytt øvre nybble av data i LSB's of PORTB
BCF E; Strobe Aktiver
bSF E
movf temp, W; Hent våre opprinnelige dataene byte i W
movwf PORTB; Flytt til PORTB, i hovedsak plassere lavere nybble
; I LSB's of PORTB
BCF E; Stobe Aktiver
bSF E
Ring Delay; Gi vise tid til å behandle kommando eller data
return; tilbake til innringeren; ************************************************* *****
; * Opprette en forsinkelse å tillate Display å behandle kommandoen *
; ************************************************* *****Delay:
clrf indre
DLoop:
nop
nop
decfsz indre
goto DLoop
returnEND