Закоментируйте строки, а то Гугл не находит
Что эта программа делает ?
Спойлер
Код: Выделить всё
#include <p18cxxx.h> // тип процессора
#include <delays.h> // функции задержек
#include <usart.h>
#include <timers.h>
#pragma config FOSC=HS1 // Кварц заменить на 20МГц
#pragma config SOSCSEL=DIG // Low Power SOSC circuit selected
#pragma config PLLCFG=ON // умножитель включен
#pragma config FCMEN=OFF // Отказоустойчивый Монитор Генератора отключен
#pragma config IESO=OFF // режим переключения генераторов отключен
#pragma config PWRTEN=OFF // таймер задержки влючения по подаче питания включен
#pragma config BOREN=OFF // сброс по понижению питания влючен
#pragma config BORV=3 // уровень сброса 3 вольта
#pragma config WDTEN=OFF // сторожевой таймер
#pragma config WDTPS=32768 // предделитель сторожевого таймера
#pragma config MCLRE=OFF // MCLRE выключен
#pragma config STVREN=ON // сброс по переполнению стека отключен
#pragma config XINST=OFF // поддержка расширенных команд отключена
#pragma config CP0=OFF // Block 0 (000640-003FFFh) запись разрешена
#pragma config CP1=OFF // Block 1 (004000-007FFFh) запись разрешена
#pragma config CPB=OFF // Boot block (000000-0007FFh) запись разрешена
#pragma config CPD=OFF // Data EEPROM запись разрешена
#pragma config WRT0=OFF // Block 0 (000640-003FFFh) запись разрешена
#pragma config WRT1=OFF // Block 1 (004000-007FFFh) запись разрешена
#pragma config WRTC=OFF // Регистр конфигурации - запись разрешена
#pragma config WRTB=OFF // Блок загрузки (000000-0007FFh)- запись разрешена
#pragma config WRTD=OFF // Запись в EEPROM - запись разрешена
#pragma config EBTR0=OFF // Block 0 (000640-003FFFh) табличное чтение - разрешено
#pragma config EBTR1=OFF // Block 1 (004000-007FFFh) табличное чтение - разрешено
//*********************************************************
#pragma udata
char inByte=0;
char flag=0;
#pragma code
void MyHighInt(void);
#pragma interrupt MyHighInt
#pragma code high_vector=0x08
void high_vector(void){
_asm GOTO MyHighInt _endasm
}
//*********************************************************
#pragma code // говорит компилятору что сделать
void Init_OSC_USART(void);
void SetInterrupt(void);
void main(void) // функция, которая не ожидает аргументов
{
ADCON1=0x0f; // Настроить контакты как цифровые
TRISB=0; // 0b00010000 направление работы ножек порта В 1=Input,0=Output
PORTB=0b01010000; // на ножках TB4 и TB6 установить =1
Init_OSC_USART(); // включить порт USART
SetInterrupt(); // прерывание
while(1) // просто бесконечный цикл, который ничего не делает
{
}
}
void MyHighInt(void)
{
if(PIR1bits.RC1IF)
{
inByte=RCREG1;
while(!TXSTA1bits.TRMT);
putc1USART(inByte);
if(inByte==0x0a)
{
if(!flag)
LATBbits.LATB6^=1; // led
else
LATBbits.LATB4^=1; // led
flag^=1;
}
}
}
void SetInterrupt(void)
{
RCONbits.IPEN=0; // Приоритет
INTCONbits.GIE=1; // включить прерывание
PIE1bits.RC1IE=1; // включить уровни приоритета
INTCONbits.PEIE=1;
}
void Init_OSC_USART(void)
{
Open1USART( USART_TX_INT_OFF&USART_RX_INT_ON&USART_ASYNCH_MODE
&USART_EIGHT_BIT &USART_CONT_RX &USART_BRGH_HIGH,129);//9600
}


