Я использую MikroC для PIC v7.2, чтобы запрограммировать PIC18f67k40.
В functii.h у меня есть следующее объявление переменной:
extern volatile unsigned char byte_count;
В пределах main.c , следующий код:
#include <functii.h>
// ...
volatile unsigned char byte_count = 0;
// ...
void interrupt () {
if (RC1IF_bit) {
uart_rx = Uart1_read();
uart_string[byte_count] = uart_rx;
byte_count++;
}
// ...
}
Затем в command.c у меня есть следующий код:
#include <functii.h>
void how_many_bytes () {
// ...
uart1_write(byte_count);
// ...
}
В main.c
я обрабатываю данные, поступающие через UART, используя прерывание. Как только получен символ окончания передачи, я вызываю how_many_bytes()
, который возвращает длину полученного сообщения (плюс сами байты данных, код, который я здесь не включил, но все в порядке! !).
Проблема в том, что при вызове uart1_write()
byte_count
всегда равно 0, а не увеличивается в последовательности прерываний.