السلام عليكم
اخواني الاعزاء هل هذا البرنامج صحيح للتحكم بشاشة
LCD
عن طريق المتحكم
PIC16F877A
وهذا هو البرنامج
كود:
list p=16f877a
#include <p16f877a.inc>
__CONFIG _CP_OFF&_WDT_OFF&_BODEN_ON & _PWRTE_ON&_HS_OSC&_LVP_OFF& _DEBUG_OFF & _CPD_OFF
;'__CONFIG'directive is used to embed configuration data within .asm file.
;the labels following the directive are located in the respective .inc file.
;see respective data sheet for additional information on configuration word.
;*******************************************************************************
ORG 0X000 ; RESET ADDRESS
GOTO RESETFUN
ORG 0X007
RESETFUN
BSF STATUS,RP0 ; NOW IN BLANK 1
BCF STATUS, RP1
BSF PCON, 0
BSF PCON, 1
GOTO START
ORG 0X020
START
BCF STATUS, RP0 ;BANK 0
CLRF PORTB ; PORTB USED AS DATA PINS
CLRF PORTE ; PORTE AS A CONTROL PINS
BSF STATUS, RP0 ;BLANK 1
MOVLW 0X00
MOVWF TRISB ;INITIALIZTION PORTB AND PORTE AS
MOVWF TRISE ;OUTPUT PINS
MOVLW 0X86
MOVWF ADCON1
NOP
BCF STATUS, RP0 ;BANK 0
MOVLW 0XFF
MOVWF PORTB
MOVLW 0XDC
CALL LCDDELAY ;POWER UP DELAY FOR 67 mSEC
MOVLW 0X3F
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3 ;50 mSEC DELAYS BETWEEN EACH ENABLE
CALL LCDDELAY
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
NOP
MOVLW 0X3B ; FUNCTION SET
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X0C ; DISPLAY ON/OFF
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X01 ;DISPLAY CLEAR
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X06 ;ENTRY MODE SET
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X01
MOVWF PORTB ; DISPLAY CLEAR
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X80 ;SET DDRAM ADDRESS AS 0X00H
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
; STARTING WRITTEN DATA FROM HERE
BSF PORTE,0
MOVLW 0X07
CALL LCDDELAY
MOVLW 0X49 ;I
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X49 ;I
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X54 ;T
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
MOVLW 0X4B ;K
MOVWF PORTB
NOP
CALL LCDENABLE
MOVLW 0XA3
CALL LCDDELAY
OVER
GOTO OVER ; INFINITE LOOP
LCDENABLE
BSF PORTE,2
NOP
NOP
BCF PORTE,2
MOVLW 0X07
CALL LCDDELAY
RETURN
LCDDELAY
MOVWF 0X025
NEST1
MOVLW 0XFF
MOVWF 0X027
NEST2
DECFSZ 0X027
GOTO NEST2
END
ورمضان كريم للجميع
عبدالله