Ну вот и отличноNStorm писал(а):Ага, нашел где собака зарыта.
Добавлено after 3 minutes 48 seconds:
У меня там только С89.
Может у нас версии компилятора разные ?
Спойлер
- Вложения
-
- 2020-11-11_16-41-52.png
- (41.19 КБ) 388 скачиваний
Ну вот и отличноNStorm писал(а):Ага, нашел где собака зарыта.
Код: Выделить всё
#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
}
Код: Выделить всё
void main(void)
{
{
PORTBbits.RB0 = !PORTCbits.RC6;
PORTCbits.RC7 = !PORTCbits.RC1;
}
}Код: Выделить всё
while( 1 ) // зацикливание функции
{
if(PORTCbits.RC7 == 0) // если на RC7 равно 0
PORTBbits.RB0 = 1; // установить на RB0 1
else // иначе
PORTBbits.RB0 = 0; // установить на RB0 0
if(PORTCbits.RC1 == 0) // если на RC1 равно 0
PORTCbits.RC6 = 0; // установить на RB6 0
else // иначе
PORTCbits.RC6 = 1; // установить на RB6 1
}Вам же ответили :[uquote="КРАМ",url="/forum/viewtopic.php?p=4160233#p4160233"]Можно, конечно.[/uquote]oleg_g писал(а):остался вопрос только с зумером и отслеживанием пина в это же время
Код: Выделить всё
#define KLINE_OUT LATBbits.LATB0
void gets1USART()
{
while(!DataRdy1USART()); // ждать, пока данные будут получены
char byte_outKline = Read1USART(); // присвойть содержимое регистра USART в однобайтовую переменную byte_outKline
// вытолкнуть биты на ножку 21 (RB0)
}