Lê Thành Nhân
Thành Viên PIF
Happ new year!
Em có vấn đề code cho con pic 16f84a nhưng không biết nên post ở đâu cho hợp lý nên xin post ở đây vây.
Tình hình là thức trắng đêm để viết code cho chạy chữ happy new year trên lcd, dùng hợp ngữ để viết nhưng chẳng hiểu sao, viết xong biên dịch lại gặp lỗi mà em sữa hoài không xong nên em xin post lên để nhờ mọi người sữa dùm đoạn code cho em với.
Đoạn code nó như sau :
Mong các anh chị giúp em với.
Em có vấn đề code cho con pic 16f84a nhưng không biết nên post ở đâu cho hợp lý nên xin post ở đây vây.
Tình hình là thức trắng đêm để viết code cho chạy chữ happy new year trên lcd, dùng hợp ngữ để viết nhưng chẳng hiểu sao, viết xong biên dịch lại gặp lỗi mà em sữa hoài không xong nên em xin post lên để nhờ mọi người sữa dùm đoạn code cho em với.
Đoạn code nó như sau :
Code:
;********************************************************
;author : Le Thanh Nhan
;Xuat ky tu len lcd
;source code : Le Duy Phi
;Date : 01-01-2013
list p=16F84A ;set proccesor type
#include p16f84A.inc ;
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
cblock H'0C' ;
count ; thanh ghi dem cho delay
character ; bo dem so ky tu xuat ra lcd
endc
; PorA.0 Rs
; PortA.1 Rw
; PortA.2 E
org 00h ; start program at reset vector
Main ; thiet lap port va lcd
CALL lcd_Port ; set up ports
CALL lcd_Init ; set up lcd
;*************************************************************************
BCF PORTA,1 ; chon lcd o che do write
;*************************************************************************
MOVLW H'80' ; Xuat du lieu ra dong 1
CALL LCD_COMMAN
CLRF Character ; xoa bo dem ky tu
Get_Char_1 movf character,W ; chuyen 1 ky tu ra thanh ghi W
call TABLE_1 ; dung bang ky tu
iorlw 00h ; retlw
btfsc STATUS,Z ; check for end message
goto MESSAG_2 ; va ket thuc neu xong
;
call LCD_DATA ; neu chua xong dua ky tu ra lcd
incf Character,F ; cong 1 vao bo dem
goto Get_Char_1 ;
MESSAG_2 MOVLW H'C0' ; xuat du lieu ra dong 1
call LCD_COMMAN
CLRF Chacracter ; xoa bo dem ky tu
Get_Char_2 movf Character,W;dua 1 ky tu ra W
call TABLE_2 ; dung bang 2
iorlw 00h ; retlw
btfsc STATUS,Z ; check for end of messag
goto end_message ; va ket thuc neu xong
;
call LCD_DATA ; neu chua xong dua ky tu ra lcd
incf Character,F; cong 1 vao bo dem
goto Get_Char_2 ; lam lai
;****************************************************************************
end_message goto end_message
;****************************************************************************
TABLE_1 addwf PCL,F ;
retlw 'H'
retlw 'A'
retlw 'P'
retlw 'P'
retlw 'Y'
retlw ' '
retlw 'N'
retlw 'E'
retlw 'W'
retlw ' '
retlw 'Y'
retlw 'E'
retlw 'A'
retlw 'R'
retlw '1'
retlw '3'
retlw 0 ;end of message
;********************************************************************************
TABLE_2 addwf PCL,F ;
retlw 'T'
retlw 'H'
retlw 'A'
retlw 'N'
retlw 'H'
retlw ' '
retlw 'N'
retlw 'H'
retlw 'A'
retlw 'N'
retlw ' '
retlw 'K'
retlw 'U'
retlw '1'
retlw '2'
retlw ' '
retlw 0 ;end of message
;**************************************************************************************
LCD_PORT ; SET THE LCD
Enable
; line to outputs
BSF STATUS,RP0 ; CHON BANH THANH GHI 1
MOVLW B'11111000' ; SET LOWER 3 BIT
MOVWF TRISA ; DIGITAL
CLRF TRISB ; SET PORT B
BCF STATUS,RP0 ; QUAY LAI BANK 1
;
BCF PORTA,2;
RETURN
;******************************************************************************************
;CHU Y : RS = 0 IS COMMAN RS = 1 IS DATA
;*******************************************************************************************
LCD_Init MOVLW H'38' ;MODE 8 BITS
CALL LCD_COMMAN
CALL Delay_5ms;
MOVLW H'0C' ;DISPLAY ON
CALL LCD_COMMAN
CALL Delay_5ms
MOVLW H'06' ;
CALL LCD_COMMAN
CALL Delay_5ms ;
MOVLW H'01' ;
CALL LCD_COMMAN ;
RETURN
;***************************************************************************************************
LCD_COMMAN ;
BSF PORTA,0 ;
MOVWF PORB ;
CALL LCD_Enable ;
RETURN
;*****************************************************************************************************
LCD_DATA ;
BSF PORTA,0 ;
MOVWF PORTB ;
CALL LCD_Enable ;
RETURN
;****************************************************************************************************
LCD_Enable BSF PORTA,2 ;
CALL Delay_5ms ;
BCF PORTA,2 ;
RETURN ;
;******************************************************************************************************
Delay_5ms CALL DELAY_1MS
CALL DELAY_1MS
CALL DELAY_1MS
CALL DELAY_1MS
CALL DELAY_1MS
RETURN
DELAY_1MS
CLRF COUNT ; 1u
HERE NOP
DECFSZ COUNT,1 ; 1u
GOTO HERE ; 2u
RETURN ; 2u
End