Chào cả nhà! em muốn hiển thị kết quả thập phân của chuơng trình này thì dùng hàm gì ạ?trong chương trình em có dùng hàm: inttostr(Distance_/10),'.',inttostr(Distance%10)
nhưng chương trình báo lỗi. cả nhà xem giúp em nhé. thanks cả nhà nhiều.
nhưng chương trình báo lỗi. cả nhà xem giúp em nhé. thanks cả nhà nhiều.
Code:
#include <m8c.h> // part specific constants and macros #include "PSoCAPI.h" // PSoC API definitions for all User Modules #include <stdlib.h> #define CONVERT_TO_MICROSECONDS 6/5 // (SysClock/20)/1000000 = 24000000 / 20000000 = 6/5 void DelayMs(unsigned int count) { unsigned int i; while(count) { i = 115; while(i>0) i--; count--; } } void DelayUs(int us) { int i; for (i=0; i<us; i++); } void main() { int stat; char *Distance_cm; WORD Srf05Counter; int Distance; PRT1DM2 = 0x04; LCD_1_Start(); // Init the LCD LCD_1_Position(0,0); LCD_1_PrCString("CY7C27443-V1.0 "); LCD_1_Position(1,0); LCD_1_PrCString("SRF05 UltraSonic"); PRT1DR = 0x00; // Dua chan Trigger P1.2 len muc cao //UART_1_Start(UART_PARITY_NONE); // Enable UART //UART_1_CPutString("DHSPKT HUNG YEN_LOP DTK5.2"); // Example string // UART_1_PutCRLF(); DelayMs(2500); LCD_1_Position(0,0); LCD_1_PrCString("Do khoang cach "); LCD_1_Position(1,0); LCD_1_PrCString("D = "); // Chan 1.4 cau hinh la Output, noi den Trigger cua SRF05 // Chan 1.2 cau hinh la Input, noi den Echo cua SRF05 PRT1DM2 = 0x04; M8C_EnableGInt; // Enable Global interrupts while(1){ Counter16_1_WritePeriod(0xFFFF); // Ghi gia tri 65535 vao thanh ghi Period PRT1DR = 0x10; // Dua chan Trigger P1.4 len muc cao DelayUs(25); // Tao thoi gian tr 25uS PRT1DR = 0x00; // Dua chan Trigger P1.4 xuong muc thap. while(!(PRT1DR & 0x04)); // doi cho Echo len muc 1(High) tai chan P1.2 Counter16_1_Start(); // Cho chay bo dem thoi gian de tinh do rong xung tra ve tu SRF05 while(PRT1DR & 0x04); // wait Echo go Low Counter16_1_Stop(); // Dung bo dem, bat dau tinh toan khoang cach. Srf05Counter = 65535 - Counter16_1_wReadCounter(); Distance = ((float)Srf05Counter * CONVERT_TO_MICROSECONDS) / 85; Distance_cm = ftoa(Distance, &stat ); //itoa(Distance_cm, Distance, 3 ); LCD_1_Position(1,4); if ((Distance<3)||(Distance>400)) { LCD_1_PrCString("Ngoai khoang"); } else { LCD_1_PrString(Distance_cm); LCD_1_Position(1,10); LCD_1_PrCString("CM"); } //LCD_1_PrHexInt( Srf05Counter); DelayMs(600); // PRT1DR = 0x40; // DelayMs(500); // PRT1DR = 0x00; // DelayMs(500); //UART_1_CPutString("Khoang cach : "); // iResult=Distance_cm(); // UART_1_PutSHexInt(iResult); // Print result to UART //UART_1_CPutString(" CM"); } }
Comment