zyn (16.09.2004 13:26, просмотров: 1) ответил MALLOY на Ответ: Код прерывания и процедуры в студию можно
Исходники - где же ошибочка ? #include
// инициализация Таймера 0
void InitTimer()
{
T0TCR = 0x0;
T0PC = 0x0; //(27 647 000 Гц) делиться на 55295500
T0MR0 = 5529500; // 2 секунды
T0TC = 0x0;
T0MCR = 0x3; //разрешаем прерывание и пересброс от MR0
}
// инициализация ног на вывод
void InitGPIO ()
{
// выводы Р04.5.6.7
IODIR = 0xF0; // выводы P04,5,6,7 установлены на вывод
}
// обработчик прерывания
__irq __arm void IRQHandler0 (void)
{
IOSET = 0x20;
for (int j=1; j<6000000; j++) {};
IOCLR = 0x20;
T0IR = 0x1;
VICVectAddr = 0xFF;
}
// инициализация Контроллера прерываний
void InitVIC ()
{
VICIntSelect = 0x0; // пр. классифицировано как IRQ (по умолчанию)
VICIntEnable = 0x10;// разрешение пр. от канала 4 (таймер 0)
VICVectCntl4 = 0x24;// классифицировал пр. от 4 канала как
// IRQи разрешил его в слоте 4 VIC
}
int main (void)
{
InitGPIO();
InitTimer();
InitVIC();
VICVectAddr4 = (unsigned int) IRQHandler0;
VICProtection = 0x0;
T0TCR=0x1; //запуск таймера0
while (1) {
for (int j=1; j<500000; j++) {};
IOSET = 0x40;
for (int j=1; j<500000; j++) {};
IOCLR = 0x40;
}
}