我使用 PIC16F688 从模拟 channel 2 读取数据并对压力传感器的值求平均值,然后使用 ASCII 字符方法将 4 个字节转换为数字。
将结果发送到 UART1_Write(temp[i]) 后不需要任何延迟。
我的问题是 UART 13 无法正常工作作为回车符。 终端的输出如下所示:000000000 0000 0000 000000000 当 tt 每次应该发送纯 0000 (并且取决于我对传感器的压力,从 0000 到 1023)。
char *temp = "0000";
unsigned int adc_value;
int i;
int average = 0;
void main()
{
OSCCON = 0x77; //8MHz
ANSEL = 0b00000100; //ANS2
CMCON0 = 0X07;
TRISA = 0b00001100;
UART1_Init(9600);
Delay_ms(100);
while (1) //infinte loop
{
average=0;
for(i=0;i<10;i++){
average+= ADC_Read(2);
}
average/=10;
temp[0] = average/1000+48;
temp[1] = (average/100)%10+48;
temp[2] = (average/10)%10+48;
temp[3] = average%10+48;
for (i=0;i<4; i++){
UART1_Write(temp[i]);
}
UART1_Write(13); // back slash
//delay_ms(10);
}
}
最佳答案
您正在编写换行符或 \r
,您可能希望发送 \r\n
或仅发送 \n
> 取决于您的终端。我推荐一些工具来以十六进制读取你的终端。在 Linux 中 cat/dev/ttyUSB0 | hexdump 可以工作。
诗。使用 + '0' 使您的字符转换更加清晰,但我认为 xc8 附带了 stdlib.h,因此您可以使用 itoa()
。
祝你好运
关于c - UART1_写(13);没有运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631776/