Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

PIC-MT-C and 16F876A help

Status
Not open for further replies.

oawkha

New Member
I can't seem to make the lcd display a character. here is a copy of the code that i used. any help would very much be appreciated... ^_^

include <P16F876A.INC>
include "bankx.inc"

__config _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF

errorlevel -302, -305, -205

; CONTROL (PORTA) | DATA (PORTC)
; LCDE = RA5 | D7 = RC3
; LCDRW = RA3 | D6 = RC2
; LCDRS = RA2 | D5 = RC1
; | D4 = RC0

CTRL_E EQU 5
CTRL_RW EQU 3
CTRL_RS EQU 2

CTRL_TRIS EQU TRISA
CTRL EQU PORTA
BTN_TRIS EQU TRISB
BTN EQU PORTB
DAT_TRIS EQU TRISC
DAT EQU PORTC

CBLOCK 0x20
WAIT1
WAIT2
XDELAY
ENDC

ORG 0x00
GOTO START

;********** DELAYS **********
DELAY1MS
MOVLW .8
MOVWF WAIT2
D1_1
MOVLW .207
MOVWF WAIT1
D1_2
DECFSZ WAIT1
GOTO D1_2
DECFSZ WAIT2
GOTO D1_1
RETURN

XDELAY1US
MOVWF XDELAY
DECFSZ XDELAY
GOTO $ - 1
RETURN

XDELAY1MS
MOVWF XDELAY
XD
CALL DELAY1MS
DECFSZ XDELAY
GOTO XD
RETURN

DELAY200MS
MOVLW .200
MOVWF XDELAY
XD1
CALL DELAY1MS
DECFSZ XDELAY
GOTO XD1
RETURN
;********** DELAYS **********

EHIGH
BCF CTRL, CTRL_RW
BCF CTRL, CTRL_RS
BSF CTRL, CTRL_E
RETURN

ELOW
CALL DELAY1MS
CALL DELAY1MS
BCF CTRL, CTRL_E
RETURN


START
BANKSEL TRISA
MOVLW B'11010011'
MOVWF TRISA
MOVLW B'11110000'
MOVWF TRISC
MOVLW B'11101111'
MOVWF TRISB

BANKSEL PORTA
CLRF PORTA
CLRF PORTC

;********** wait more than 15ms after Vdd rises to 4.5V
CALL DELAY200MS

;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW

;********** wait more than 4.1ms
MOVLW .5
CALL XDELAY1MS

;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW

;********** wait more than 100us
CALL DELAY1MS

;********** Function set (interface is 8 bits long)
CALL EHIGH
MOVLW B'00000011'
MOVWF DAT
CALL ELOW

;********** Function set (set interface to be 4 bits long). Interface is 8 bits long.
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW

;********** Function set
CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW

CALL EHIGH
MOVLW B'00001000'
MOVWF DAT
CALL ELOW

;********** display off
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW

CALL EHIGH
MOVLW B'00001000'
MOVWF DAT
CALL ELOW

;********** display clear
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW

CALL EHIGH
MOVLW B'00000001'
MOVWF DAT
CALL ELOW

;********** display on
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW

CALL EHIGH
MOVLW B'00001110'
MOVWF DAT
CALL ELOW

;********** cursor / display shift
CALL EHIGH
MOVLW B'00000001'
MOVWF DAT
CALL ELOW

CALL EHIGH
MOVLW B'00000100'
MOVWF DAT
CALL ELOW

;********** entry mode set
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW

CALL EHIGH
MOVLW B'00000110'
MOVWF DAT
CALL ELOW

;********** cursor home
CALL EHIGH
MOVLW B'00000000'
MOVWF DAT
CALL ELOW

CALL EHIGH
MOVLW B'00000010'
MOVWF DAT
CALL ELOW

;********** PUT CHAR
BCF CTRL, CTRL_RW
BSF CTRL, CTRL_RS
BSF CTRL, CTRL_E
MOVLW B'00000011'
MOVWF DAT
CALL ELOW

BCF CTRL, CTRL_RW
BSF CTRL, CTRL_RS
BSF CTRL, CTRL_E
MOVLW B'00001111'
MOVWF DAT
CALL ELOW

END
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top