Chào các bác, em là dân mới tập tọe 8051, đang lúc bí, mong các bác giúp em với.
Chẳng là em muốn hiển thị kí tự tự định nghĩa lên LCD. Phần cứng của em là thế này (đơn giản quá, vì mới học):
Em đã đọc về nó trong sách rồi viết đoạn code này (KeilC) nhưng nó ko chạy:
Em chôm chỉa được một đoạn code asm chạy được nhưng ko hiểu lắm (ở chỗ inc R0 đó):
Các bác giúp em với nhé, em cám ơn nhiều.
Chẳng là em muốn hiển thị kí tự tự định nghĩa lên LCD. Phần cứng của em là thế này (đơn giản quá, vì mới học):
Em đã đọc về nó trong sách rồi viết đoạn code này (KeilC) nhưng nó ko chạy:
Code:
#include<regx51.h> #define lcdPort P3 #define E P2_0 #define RS P2_2 #define RW P2_1 void ready() { P3_7=1; RS=0; RW=1; do { E=0;E=1; }while(P3_7==1); } void send_command(com) { ready(); lcdPort=com; RS=0; RW=0; E=1;E=0; } void send_data(unsigned char ascii_data) { ready(); lcdPort=ascii_data; RS=1; RW=0; E=1;E=0; } void main() { char i; i=0x40; send_command(0x38);//init LCD send_command(0x0c); send_command(0x01); send_command(0x06); while(1) { send_command(i); send_data(0x0a); i++; if(i==0x40+8)break; } //send_command(0xc0); //send_data('f'); //while(1); }
Code:
build: ;Building custom character routine mov dptr,#cgram MOV R0,#40h putcg: MOV A,R0 acall command inc R0 MOV A,#00h MOVC A,@A+dptr CJNE A,#99h,next_cg ret next_cg: lcall data_in inc dptr jmp putcg cgram: db 4h,0eh,0eh,0eh,1fh,0h,4h,0h ;BELL db 99h