??? 02/21/10 12:40 Read: times |
#173382 - Sprintf for Conver Float ==> String in using SDCC |
Hii,
my name is deny, I'm interested using AT89S52. I use SDCC for my compiler, and it works great. But I have problem when I try to print float variabel to my lcd the result <NO FLOAT>. I use MIDE version 02.05.16 with SDCC included version 2.9.4. I've already read the SDCC manual buat I Still Confuse how to set the compiler option's in MIDE. In SDCC Library routine 3.17 , it said that if you want to enabling floating point output, recompile it with options -DUSE_FLOATS = 1 on the command line and Use --model-large. I already tried to set it at the MIDE - Edit - preference : - Default : --code-loc 0x0000 --stack-auto --vc - modify : --code-loc 0x0000 --stack-auto --vc -DUSE_FLOATS=1 --model-large But the result is error. Can anyone help me? This my code : //=============== // main program //=============== #include <AT89X52.h> #include <stdio.h> #include <lcd_lib.c> #include <float.h> #include <stdlib.h> char buffer[20]; float datatrial = 4.53; void main(void) { delay_ms(1000); lcd_init(); delay_ms(1000); lcd_clear(); delay_ms(1000); lcd_send_cmd(0x0C); //delay_ms(1000); //lcd_send_cmd(0x0F); delay_ms(1000); lcd_send_text("Selamat Datang"); delay_ms(1000); lcd_send_cmd(0xC0); delay_ms(1000); lcd_send_text("###############"); delay_ms(1000); sprintf(buffer,"Data = %f",datatrial); lcd_clear(); delay_ms(1000); lcd_send_cmd(0x80); delay_ms(1000); lcd_send_text(buffer); } //=================== // LCd Library //=================== #include <AT89X52.h> #include "lcd_lib.h" //======================== // Funsgi Inisilaisasi LCD //======================== void lcd_init(void) { delay_ms(15); reset_lcd(); lcd_send_cmd(0x28); delay_ms(1000); lcd_send_cmd(0x28); delay_ms(1000); lcd_send_cmd(0x28); delay_ms(1000); lcd_send_cmd(0x0C); delay_ms(1000); lcd_send_cmd(0x06); delay_ms(1000); lcd_send_cmd(0x80); delay_ms(1000); lcd_send_cmd(0x0E); delay_ms(1000); } //================================ // Fungsi Delay 1ms //================================ void delay_1ms(void) { unsigned char b; for(b=0;b>=100;b++) {;} } //================================ // Fungsi Delay N ms //================================ void delay_ms(unsigned int delay) { unsigned int i; for(i=0;i>=delay;i++) { delay_1ms(); } } //================================== // Fungsi untuk mereset LCD //================================== void reset_lcd(void) { datalcd = 0xff; delay_ms(20); datalcd = 0x30; e = 1; rs = 0; delay_ms(5); e = 0; delay_ms(5); datalcd = 0x30; e = 1; rs = 0; delay_ms(5); e = 0; delay_ms(5); datalcd = 0x20; e = 1; rs = 0; delay_ms(5); e = 0; delay_ms(5); lcd_send_cmd(0x28); delay_ms(1000); lcd_send_cmd(0x28); delay_ms(1000); } //========================================= // Funsgi Untuk Mengirimkan Command Ke LCD //========================================= void lcd_send_cmd(unsigned char cmnd) { datalcd =(cmnd & 0b11110000); rs = 0; e = 1; delay_ms(1000); e = 0; delay_ms(1000); datalcd = ((cmnd & 0b00001111) << 4); rs = 0; e = 1; delay_ms(1000); e = 0; delay_ms(1000); } //=========================================== // Fungsi untuk mengirimkan 1 karakter ke LCD //=========================================== void lcd_send_char(unsigned char data1) { datalcd = (data1 & 0b11110000); P2 = datalcd; rs = 1; e = 1; delay_ms(1000); e=0; delay_ms(1000); datalcd = ((data1 & 0b00001111 ) << 4 ); P3 = datalcd; rs = 1; e = 1; delay_ms(1000); e = 0; delay_ms(1000); } //=========================================================== // Funsgi Untuk Mengirimkan Bereapa karakter sekaligus ke LCD //=========================================================== void lcd_send_text(unsigned char *data2) { unsigned char a=0; while ( data2[a]!= 0 ) { lcd_send_char(data2[a]); a++; delay_ms(1000); } } //======================================= // Clear LCD screen //===================================== void lcd_clear(void) //Clear LCD Screen { lcd_send_cmd(0x01); delay_ms(1000); } Please Help Me ? How to set it? |
Topic | Author | Date |
Sprintf for Conver Float ==> String in using SDCC | 01/01/70 00:00 | |
error | 01/01/70 00:00 | |
RE: external RAM | 01/01/70 00:00 | |
the software can't differentiate... | 01/01/70 00:00 | |
recompile (part of) the library![]() | 01/01/70 00:00 |