Я использую PIC16F688 для чтения с аналогового канала 2 и усредняю значения датчика давления, а затем преобразую 4 байта в цифровой, используя метод символов ASCII. Код довольно прост. Мне не нужна никакая задержка после отправки результатов UART1_Write(temp[i]);
Моя проблема в том, что UART 13 не работает должным образом в качестве возврата каретки. Выходной сигнал из терминала выглядит следующим образом:UART1_Write (13) работает некорректно
000000000
0000
0000
000000000
Он должен посылать 0000
каждый раз, и зависит от моего давления на датчике, значение от 0000
к 1023
.
char temp[5];
unsigned int adc_value;
char uart_rd;
int i;
unsigned int d[10]={0};
int average = 0;
int counter =0;
void main() {
temp[0]='0';
temp[1]='0';
temp[2]='0';
temp[3]='0';
temp[4]='\r';
OSCCON = 0x77; //8MHz
ANSEL = 0b00000100;
CMCON0 = 0X07; //
TRISA = 0b00001100;
UART1_Init(9600); // Initialize UART module at 9600 bps
Delay_ms(100); // Wait for UART module to stabilize
while (1) {
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<5; i++)
{
UART1_Write(temp[i]);
}
UART1_Write(13); // back slash
}
}
Что вы просите у нас? У нас нет оборудования, нет кода, нет компилятора, нет компоновщика, нет среды, нет отладчика, нет регистратора и нет понятия, есть ли у вас проблема с программным обеспечением, проблема с оборудованием или и то, и другое. –
Это мой код, у которого есть проблема, может кто-нибудь помочь найти причину, по которой UART1_write не отбросил лишние четыре байта, я имею в виду как обратную косую черту \ n. –