Сб окт 30, 2021 12:12:09
#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
}
Сб дек 04, 2021 14:07:26
void main(void)
{
{
PORTBbits.RB0 = !PORTCbits.RC6;
PORTCbits.RC7 = !PORTCbits.RC1;
}
}
Вс дек 05, 2021 02:31:34
Вс дек 05, 2021 18:18:56
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
}
Ср янв 12, 2022 21:59:56
Ср янв 12, 2022 22:13:02
Ср янв 12, 2022 23:25:32
Чт янв 13, 2022 00:44:43
Чт янв 13, 2022 00:51:55
Чт янв 13, 2022 01:49:55
Вам же ответили :oleg_g писал(а):остался вопрос только с зумером и отслеживанием пина в это же время
Чт янв 13, 2022 03:47:43
Чт янв 13, 2022 11:43:46
Чт янв 13, 2022 11:54:15
Чт янв 13, 2022 15:51:11
Чт янв 13, 2022 16:16:58
Сб янв 15, 2022 17:44:22
#define KLINE_OUT LATBbits.LATB0
void gets1USART()
{
while(!DataRdy1USART()); // ждать, пока данные будут получены
char byte_outKline = Read1USART(); // присвойть содержимое регистра USART в однобайтовую переменную byte_outKline
// вытолкнуть биты на ножку 21 (RB0)
}
Вс янв 16, 2022 19:10:59
Вс янв 16, 2022 22:38:22
int i; // переменная i
for(i=0;i<7;i++) // увеличить переменную i на 1
{
while(!DataRdy1USART()); // ждать, пока данные будут получены
char byte_outKline = Read1USART(); // присвойть содержимое регистра USART в однобайтовую переменную byte_outKline
KLINE_OUT = (byte_outKline << i) & 1 ; // вытолкнуть биты на ножку 21 (RB0)
}
Вс янв 16, 2022 23:38:31
Чт янв 20, 2022 11:54:56
/* Main.c file generated by New Project wizard
*
* Created: Вт янв 18 2022
* Processor: PIC18F25K80
* Compiler: MPLAB XC8
*/
#include <xc.h>
#define _XTAL_FREQ 4000000
#define Bit_out LATBbits.LATB0 // Bit_out = 21-нога
void main(void)
{
TRISBbits.TRISB0 = 0; // 21-нога out
int i; // переменная i
char byte = 0b01010101; // переменная byte
while (1)
{
Delay10TCYx(1000); // Пауза
Bit_out = 0; // СТАРТ
Delay10TCYx(10); // пауза 9600 бод
for(char i = 0; i < 8; i++) // увеличить переменную i на 1
{
Delay10TCYx(10); // пауза 9600 бод
Bit_out = (byte >> i) & 1; // вытолкнуть биты на ножку 21 (RB0)
}
Delay10TCYx(10); // пауза 9600 бод
Bit_out = 1; // СТОП
Delay10TCYx(10); // пауза 9600 бод
}
}