воскресенье, 8 июня 2008 г.

Микропроцессоры + С# + Mplab IDE v.7.20 = ?

Вот и пришло лето, вышло солнышко на пару дней и снова пошел снег. С сессией почти разобрался оценки все положительные без 3, так что пока все ОК, осталось тока пройти двух самых жОстких преподов. По дисциплине "Микропроцессорная техника" просили написать учебную программу для микроконтроллера "Изучение внешних прерываний" (мы изучаем PIC18F452), ну вобщем и целом я справился за 4 дня 3 дня писал 1 день отлаживал и вроде все работает, но вот в чем прикол я прогу то написал а вот не могу понять как и почему она работает, то есть в общем и целом то она работает, но мне кажется что очень странно. Ежели кому то будет интересно посмотреть ее то пожалуйста вот ее код


/*
MCU: PIC18F452
Lang: C
Comp: MpLAB IDE v7.20
Программа обработки внешних прерываний (external interrupt)
08/07/2008
*/

#include

#pragma config OSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF

void main (void); // Обьявляем прототип функции main
void InterruptHandlerHigh (void); // Обьявляем прототип функции InterruptHandlerHigh

#pragma interrupt InterruptHandlerHigh // Точка перехода по прерыванию
#pragma code InterruptVectorHigh = 0x8 // Вектор прерывания
void InterruptHandlerHigh(void) // Функция обработки прерывания
{
PORTBbits.RB1 = 1; // Зажечь диод
INTCONbits.INT0IF = 0; // очистка флага прерывания
}
#pragma code

void main()
{
TRISBbits.TRISB1 = 0; // 0 - Out направление сигнала
TRISBbits.TRISB0 = 1; // 1 - In направление сигнала
PORTBbits.RB1 = 0; // инициалиация: диод выключен
INTCON2bits.INTEDG0 = 1; // 1 - прерывание по переднему фронту сигнала
INTCONbits.GIEH = 1; // 1 - разрешить прерывания с высоким приоритетом
INTCONbits.INT0IE = 1; // 1 - разрешить внешние прерывания сo входа RB0

if (PORTBbits.RB0 == 0) // Условие возникновения прерывания
{
_asm
goto InterruptHandlerHigh //Переходим в функцию обработки прерывания
_endasm
}
}

Комментариев нет:

Отправить комментарий

Прикольно, да? Ну тогда скажи, что ТЫ думаешь по этому поводу!