fdr1-modbus-slave/unused/echo.c
2026-03-09 15:08:40 +01:00

80 lines
1.4 KiB
C

#include <xc.h>
#include <stdio.h>
#include <echo.h>
void echo(char* str) {
for(int i=0; str[i]!=0;i++)
echo_c(str[i]);
}
void echo_c(char c) {
while(!TXIF);
TXREG = c;
}
// void echo_float(float v) {
// char buf[CHAR_BUFF_SIZE];
// sprintf(buf, "%0.3f", v);
// echo(buf);
// }
// void echo_float1(float v) {
// char buf[CHAR_BUFF_SIZE];
// sprintf(buf, "%0.1f", v);
// echo(buf);
// }
// void echo_float2(float v) {
// char buf[CHAR_BUFF_SIZE];
// sprintf(buf, "%0.2f", v);
// echo(buf);
// }
// void echo_float4(float v) {
// char buf[CHAR_BUFF_SIZE];
// sprintf(buf, "%0.4f", v);
// echo(buf);
// }
// void echo_float6(float v) {
// char buf[CHAR_BUFF_SIZE];
// sprintf(buf, "%0.6f", v);
// echo(buf);
// }
// void echo_float8(float v) {
// char buf[CHAR_BUFF_SIZE];
// sprintf(buf, "%0.8f", v);
// echo(buf);
// }
const char h[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
void echo_hex(uint8_t v) {
echo_c(h[(v&0xf0)>>4]);
echo_c(h[(v&0x0f)]);
}
void echo_hex16(uint16_t v) {
echo_hex((v&0xff00)>>8);
echo_hex((v&0x00ff));
}
void echo_uint16(uint16_t v) {
char buf[CHAR_BUFF_SIZE];
sprintf(buf, "%hu", v);
echo(buf);
}
void echo_int32(int32_t v) {
char buf[CHAR_BUFF_SIZE];
sprintf(buf, "%ld", v);
echo(buf);
}
// void echo_bool_label(char* label, uint8_t b) {
// echo(label);
// if(b)
// echo("ON");
// else
// echo("off");
// }