درود بر همگی
کسی می تونه راه اندازی ال سی دی تو اسمبلی رو برام بگه؟لطفا کد ها را با توضیحات بگین!
8 بیتی باشه بهتره ولی اگه 4 بیتی هم بگین دیگه عالی میشه
ممنون
اضافه شده در تاریخ :
درود بر همگی
بلاخره تونستم ال سی دی رو راه اندازی کنم!البته این 8 بیتی هستش و دارم تلاش میکنم این انتقال داده رو کامل یاد بگیرم بعد برم سراغ 4 بیتی! اسمبلی خیلییییییییییییییییییییییییییییییییی باحالو شیرینه! :wow:
تو این کد مقدار تایمر صفر با منبع خارجی روی ال سی دی نمایش داده میشه(البته نمایش داده نمیشه چون هر کار کردم نتونستم مقدار تایمر رو تبدیل به دسیمال کنم یا اسکی! حالا درستش می کنیم!)
اینم کد:
[code=asm]
//processor p16f84a
include <p16f84a.inc>
__config _XT_OSC & _CP_OFF & _PWRTE_OFF & _WDT_OFF
;************************************************* ************************************************
;*********************************************8 bit LCD*******************************************
;************************************************* ************************************************
;/////////////////////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////////////////////////
;
; Amin Aghakhani
; www.korosh-life.blogfa.com
; vishtaspahoraii@yahoo.com
;
;/////////////////////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////////////////////////
;
; LCD port ----------> portb
; LCD_RS ----------> RA0
; LCD_E ----------> RA1
;
;/////////////////////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////////////////////////
;************************************************* ************************************************
;*********************************************8 bit LCD*******************************************
;************************************************* ************************************************
cblock 0x0c
Reg_1
Reg_2
Reg_3
Reg_4
endc
LCD_port equ 0x06
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Main codes%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bsf 0x03,5
clrf 0x86
clrf 0x85
bsf 0x85,4
movlw b'11111000'
movlw OPTION_REG
bcf 0x03,5
clrf 0x06
clrf 0x05
clrf TMR0
main
call delay50ms
call LCD_init
call TMR0I
movlw 0xc0
addlw 0x05
call LCD_CMD
movf TMR0,0
addlw 0x38
call LCD_CHR
call delay20s
goto $-5
;************************************************* ************************************************
;*********************************************8 bit LCD*******************************************
;************************************************* ************************************************
;************************************************* ************************************************** ***
;*******************************************LCD functions***************************************** *****
;************************************************* ************************************************** ***
; intizaling LCD 8 bit mode - Cursor on(underline) - start from line1 - postion 0
LCD_init
movlw 0x30
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
movlw 0x38
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
movlw 0x0f ;cursor blink
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
movlw 0x01 ;clear display
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay1500us
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Send commands\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
LCD_CMD
movwf LCD_port
bcf 0x05,0
bcf 0x05,1
nop
nop
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Send data\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
LCD_CHR
bsf 0x05,1
bcf 0x05,0
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
bcf 0x05,1
call delay500us
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\show TMR0:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
TMR0I
movlw .84
call LCD_CHR
movlw .77
call LCD_CHR
movlw .82
call LCD_CHR
movlw .48
call LCD_CHR
movlw .58
call LCD_CHR
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\delay rutines\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
delay1500us
movlw .241
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
delay500us
movlw .166
movwf Reg_1
decfsz Reg_1,F
goto $-1
nop
return
delay20s
movlw .193
movwf Reg_1
movlw .118
movwf Reg_2
movlw .102
movwf Reg_3
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
decfsz Reg_3,F
goto $-5
return
delay50ms
movlw .248
movwf Reg_1
movlw .26
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
end
[/code]
کسی می تونه راه اندازی ال سی دی تو اسمبلی رو برام بگه؟لطفا کد ها را با توضیحات بگین!
8 بیتی باشه بهتره ولی اگه 4 بیتی هم بگین دیگه عالی میشه
ممنون
اضافه شده در تاریخ :
درود بر همگی
بلاخره تونستم ال سی دی رو راه اندازی کنم!البته این 8 بیتی هستش و دارم تلاش میکنم این انتقال داده رو کامل یاد بگیرم بعد برم سراغ 4 بیتی! اسمبلی خیلییییییییییییییییییییییییییییییییی باحالو شیرینه! :wow:
تو این کد مقدار تایمر صفر با منبع خارجی روی ال سی دی نمایش داده میشه(البته نمایش داده نمیشه چون هر کار کردم نتونستم مقدار تایمر رو تبدیل به دسیمال کنم یا اسکی! حالا درستش می کنیم!)
اینم کد:
[code=asm]
//processor p16f84a
include <p16f84a.inc>
__config _XT_OSC & _CP_OFF & _PWRTE_OFF & _WDT_OFF
;************************************************* ************************************************
;*********************************************8 bit LCD*******************************************
;************************************************* ************************************************
;/////////////////////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////////////////////////
;
; Amin Aghakhani
; www.korosh-life.blogfa.com
; vishtaspahoraii@yahoo.com
;
;/////////////////////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////////////////////////
;
; LCD port ----------> portb
; LCD_RS ----------> RA0
; LCD_E ----------> RA1
;
;/////////////////////////////////////////////////////////////////////////////////////////////////
;/////////////////////////////////////////////////////////////////////////////////////////////////
;************************************************* ************************************************
;*********************************************8 bit LCD*******************************************
;************************************************* ************************************************
cblock 0x0c
Reg_1
Reg_2
Reg_3
Reg_4
endc
LCD_port equ 0x06
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Main codes%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bsf 0x03,5
clrf 0x86
clrf 0x85
bsf 0x85,4
movlw b'11111000'
movlw OPTION_REG
bcf 0x03,5
clrf 0x06
clrf 0x05
clrf TMR0
main
call delay50ms
call LCD_init
call TMR0I
movlw 0xc0
addlw 0x05
call LCD_CMD
movf TMR0,0
addlw 0x38
call LCD_CHR
call delay20s
goto $-5
;************************************************* ************************************************
;*********************************************8 bit LCD*******************************************
;************************************************* ************************************************
;************************************************* ************************************************** ***
;*******************************************LCD functions***************************************** *****
;************************************************* ************************************************** ***
; intizaling LCD 8 bit mode - Cursor on(underline) - start from line1 - postion 0
LCD_init
movlw 0x30
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
movlw 0x38
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
movlw 0x0f ;cursor blink
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
movlw 0x01 ;clear display
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay1500us
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Send commands\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
LCD_CMD
movwf LCD_port
bcf 0x05,0
bcf 0x05,1
nop
nop
bsf 0x05,0
call delay500us
bcf 0x05,0
call delay500us
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Send data\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
LCD_CHR
bsf 0x05,1
bcf 0x05,0
movwf LCD_port
bsf 0x05,0
call delay500us
bcf 0x05,0
bcf 0x05,1
call delay500us
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\show TMR0:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
TMR0I
movlw .84
call LCD_CHR
movlw .77
call LCD_CHR
movlw .82
call LCD_CHR
movlw .48
call LCD_CHR
movlw .58
call LCD_CHR
return
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\delay rutines\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\
delay1500us
movlw .241
movwf Reg_1
movlw .2
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
nop
return
delay500us
movlw .166
movwf Reg_1
decfsz Reg_1,F
goto $-1
nop
return
delay20s
movlw .193
movwf Reg_1
movlw .118
movwf Reg_2
movlw .102
movwf Reg_3
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
decfsz Reg_3,F
goto $-5
return
delay50ms
movlw .248
movwf Reg_1
movlw .26
movwf Reg_2
decfsz Reg_1,F
goto $-1
decfsz Reg_2,F
goto $-3
nop
return
end
[/code]