alina_krylova писал(а): ↑11 фев 2025, 18:12
Напишите как работать с прерываниями с asc0. Я включаю прерывания по приему S0RIC = 0x40; затем включаю глобально: PSW|=0x800;
И не работает(прерывания не приходят)(( что не правильно?
Доброго времени суток!
Обратите внимание, при разрешении прерываний в регистр записывается значение 0x44: S0RIC = 0x0044;
На стр. 215 технического описания приведена информация про уровень приоритета:
"
Уровень приоритета 0000 является значением по умолчанию центрального процессора. Поэтому
запрос с уровнем ILVL 0000 не будет принят ЦПУ."
Вот пример инициализации последовательного интерфейса:
void init_asc0 (unsigned long freq, unsigned int baud) {
S0BG = (unsigned int)(freq / (32*(unsigned long) baud)) - 1; // baudrate reload
DP3 |= 0x0400; // Set TXD for output
DP3 &= 0xF7FF; // Set RXD for input
ALTSEL0P3 |= 0x0400; // Configure port pins for serial interface 0
P3 |= 0x0400; // Set TXD high
S0CON = 0x8011;
S0RIC = 0x0044; // Enable serial receive interrupt
S0TIC = 0x0044; // Enable serial transmit interrupt
}