mijn volgende probleem dus....
oke, hier die code weermee de lcd werkte:
CODE: Selecteer alles
// ------------- READS51 generated header --------------
// module : C:\microcontroller\test\lcd.c
// created : 19:59:42, Thursday, December 29, 2005
// -----------------------------------------------------
#define data_write 0x8002;
#define data_read 0x8003;
#define cmd_write 0x8000;
#define cmd_read 0x8001;
main()
{
#asm
lcall Busy ;Function Set: 8-bit,RE(1)
mov DPTR,#cmd_write
mov A,#60
movx @DPTR,A
lcall Busy ;Extended Function Set: 5-Font, 4-Lin
mov DPTR,#cmd_write
mov A,#9
movx @DPTR,A
lcall Busy ;Function Set: RE(0)
mov DPTR,#cmd_write
mov A,#56
movx @DPTR,A
lcall Busy ;Display On Cursor Off
mov DPTR,#cmd_write
mov A,#12
movx @DPTR,A
lcall Busy ;Return to Home
mov DPTR,#cmd_write
mov A,#2
movx @DPTR,A
lcall Busy ;data write (karatker ASCII)
mov DPTR,#data_write
mov A,#83
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#65
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#77
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#83
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#85
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#78
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#71
movx @DPTR,A
lcall Busy ;Data Write ASCII
mov DPTR,#data_write
mov A,#71
movx @DPTR,A
lcall Busy ;Volgende regel
mov DPTR,#cmd_write
mov A,#160
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#75
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#51
movx @DPTR,A
lcall Busy
mov DPTR,#cmd_write
mov A,#192
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#76
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#67
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#68
movx @DPTR,A
lcall Busy
mov DPTR,#data_write
mov A,#68
movx @DPTR,A
#endasm
}
#asm
Busy:
mov dptr, #cmd_read
movx A, @dptr
jb ACC.7, Busy
ret
#endasm
duidelijk te zien dat het allemaal in asm geschreven is, maar er zit niks van functionaliteit in.
waarvan ik wil gebruik maken..., maar die dus niet werkt... maar wat volgens mij wel op het zelfde neer komt als wat ik doe met bovenstaande code...
CODE: Selecteer alles
// ------------- READS51 generated header --------------
// module : C:\Documents and Settings\Geert\Mijn documenten\voorversterker\microcontroller\preamp\preamplcd.c
// created : 22:48:53, Thursday, December 29, 2005
// -----------------------------------------------------
#define data_write 0x8002;
#define data_read 0x8003;
#define cmd_write 0x8000;
#define cmd_read 0x8001;
#asm
Busy:
mov dptr, #cmd_read
movx A, @dptr
jb ACC.7, Busy
ret
#endasm
void LCDinit(void)
{
#asm
lcall Busy ;Function Set: 8-bit,RE(1)
mov DPTR,#cmd_write
mov A,#60
movx @DPTR,A
lcall Busy ;Extended Function Set: 5-Font, 4-Lin
mov DPTR,#cmd_write
mov A,#9
movx @DPTR,A
lcall Busy ;Function Set: RE(0)
mov DPTR,#cmd_write
mov A,#56
movx @DPTR,A
lcall Busy ;Display On Cursor Off
mov DPTR,#cmd_write
mov A,#12
movx @DPTR,A
#endasm
}
void LCDhome(void) //set cursor home (first segment, first line)
{
#asm
lcall Busy ;Return to Home
mov DPTR,#cmd_write
mov A,#2
movx @DPTR,A
#endasm
}
void LCDselLine2(void) //select second line
{
#asm
lcall Busy ;Volgende regel
mov DPTR,#cmd_write
mov A,#160
movx @DPTR,A
#endasm
}
void LCDselLine3(void) //select third line
{
#asm
lcall Busy ;Volgende regel
mov DPTR,#cmd_write
mov A,#192
movx @DPTR,A
#endasm
}
void LCDselLine4(void) //select fourth line
{
#asm
lcall Busy ;Volgende regel
mov DPTR,#cmd_write
mov A,#224
movx @DPTR,A
#endasm
}
void LCDwritechar(unsigned char kar) ;hier vooral stelt zich het probleem
{
#asm
lcall Busy
mov a, BPL
mov dptr, #data_write
movx @dptr, a
#endasm
}
main()
{
LCDinit();
LCDhome();
LCDwritechar("A");
LCDwritechar("a");
LCDwritechar("B");
LCDwritechar("b");
LCDselLine2();
LCDwritechar("C");
LCDwritechar("c");
}
werkt dus niet, maar wat doe ik fout... ???
