Jump to content

Помогите стартонуть с Pic на Си


LiSiY5
 Share

Recommended Posts

Ребята помогите, Я начинаю изучение Pic и не могу создать первую прогу. Сам программирую на LD, FBD, ASM, но тут не могу стартонуть, с выходами все получается, а вот с входами проблемка. Есть код на Си, подскажите в чем ошибка. Буду очень благодарен любой информации.


// PIC16F18877 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1
#pragma config FEXTOSC = HS     // External Oscillator mode selection bits (HS (crystal oscillator) above 4MHz; PFM set to high power)
#pragma config RSTOSC = EXT1X   // Power-up default value for COSC bits (EXTOSC operating per FEXTOSC bits)
#pragma config CLKOUTEN = OFF   // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator function on OSC2)
#pragma config CSWEN = ON       // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable bit (FSCM timer enabled)

// CONFIG2
#pragma config MCLRE = ON       // Master Clear Enable bit (MCLR pin is Master Clear function)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config LPBOREN = OFF    // Low-Power BOR enable bit (ULPBOR disabled)
#pragma config BOREN = ON       // Brown-out reset enable bits (Brown-out Reset Enabled, SBOREN bit is ignored)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (VBOR) set to 1.9V on LF, and 2.45V on F Devices)
#pragma config ZCD = OFF        // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR.)
#pragma config PPS1WAY = ON     // Peripheral Pin Select one-way control (The PPSLOCK bit can be cleared and set only once in software)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a reset)

// CONFIG3
#pragma config WDTCPS = WDTCPS_31// WDT Period Select bits (Divider ratio 1:65536; software control of WDTPS)
#pragma config WDTE = ON        // WDT operating mode (WDT enabled regardless of sleep; SWDTEN ignored)
#pragma config WDTCWS = WDTCWS_7// WDT Window Select bits (window always open (100%); software control; keyed access not required)
#pragma config WDTCCS = SC      // WDT input clock selector (Software Control)

// CONFIG4
#pragma config WRT = OFF        // UserNVM self-write protection bits (Write protection off)
#pragma config SCANE = available// Scanner Enable bit (Scanner module is available for use)
#pragma config LVP = ON         // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/Vpp pin function is MCLR.)

// CONFIG5
#pragma config CP = OFF         // UserNVM Program memory code protection bit (Program Memory code protection disabled)
#pragma config CPD = OFF        // DataNVM code protection bit (Data EEPROM code protection disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
#define _XTAL_FREQ 20000000


void main(void) {
    TRISB=0;
    PORTB=0;
    TRISA=11111111;
    PORTA=11111111;
    TRISA=11111111;
    if(PORTAbits.RA0 == 1) { RB0 = 1;}

    return;
}
 

Link to comment
Share on other sites

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

я дико извиняюсь , а вы вкуда по return выйти пытаетесь?.

первый раз вижу чтобы стартовали с F18877 .... у мня даже компилятор о нем не знает :)

а так любой код на Си

выглядит

void main(void)
{
  // секция инициализации МК
  // ....
  // ....
while(1)
{
  // здесь основной код
  // в бесконечном цикле
} // end while(1)
}// end main

if(PORTAbits.RA0 == 1) { RB0 = 1;}  записывается как

if(PORTbits.RA0) { LATBbits.LATB0=1;}

PS выкладывая код пользуйтесь тегами КОД:  <> на панели сообщений

Link to comment
Share on other sites

Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Увы не получается, может у кого то есть код на данный контроллер на Си или ассемблере с конфигурационными байтами. Первый код хочу по входу А0 включается выход В0.

Link to comment
Share on other sites

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

3 часа назад, LiSiY5 сказал:

Увы не получается.

Что конкретно не получается? Если речь идет о первоначальном коде, то там написана ахинея. Вам сказали выше, что проверку нужно делать В БЕСКОНЕЧНОМ ЦИКЛЕ. Вы зачем то вставили return... Вы знаете что такое return в Си?

戦う前に相手のベルトの色に注目

Link to comment
Share on other sites

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

5 часов назад, LiSiY5 сказал:

может у кого то есть код на данный контроллер на Си или ассемблере с конфигурационными байтами.

и что это Вам даст? конфигирация пишется под обвязку МК и применяемый программатор , в соответствии с описанием компилятора

можно конечно попробовать помочь , от Вас  html на МК с описанием битов конфигурации из папки доков компилятора, инклюд , схема обвязки МК , и модель программатора и метод програмирования.

Link to comment
Share on other sites

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

28.08.2020 в 18:49, IMXO сказал:

и что это Вам даст? конфигирация пишется под обвязку МК и применяемый программатор , в соответствии с описанием компилятора

можно конечно попробовать помочь , от Вас  html на МК с описанием битов конфигурации из папки доков компилятора, инклюд , схема обвязки МК , и модель программатора и метод програмирования.

Спрыгиваю на более простой МК PIC16F877A, использую програматор РicKit3, компилятор ХС8, программа MPLAB X IDE, биты конфигурации:

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF 

 

Хочу программу, при RA0==1 включается RB0=1.

Подскажите пожалуйста.

Edited by LiSiY5
Link to comment
Share on other sites

Скрытый текст

#include <xc.h>	// Required to interface with delay routines

// __CONFIG(LVPDIS & WDTEN & PWRTEN & BORDIS & HS);

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF  
#pragma config LVP = OFF
#pragma config BOREN = ON

//*******************************************************************
void init(void)
{
 INTCON = 0; 
 PIE1 = 0;
 ADCON1 = 0b00000111; // Цифровые выводы
 TRISA = 0b11111111; //входы
 TRISB = 0; // выходы
 TRISC = 0b11111111;
 TRISD = 0;
 PORTA = 0; 
 PORTB = 0; 
 PORTC = 0;
 PORTD = 0;
 OPTION = 0b00000000; 

}
//**********************************************************

//***************************************************************
void main (void)
{
init();
while(1)
    { 
      if(PORTAbits.RA0) 
	     { PORTBbits.RB0=1;} 
	   else 
	     { PORTBbits.RB0=0;} 
// можно еще так записать
      	PORTBbits.RB0= PORTAbits.RA0;
	} // end while(1)

}

 

 

Link to comment
Share on other sites

Задачка стала по-сложнее, надо организовать АЦП преобразователь, кто то работал? Подскажите, а то с Google не могу договориться. Исходные конфигурационные данные и обвязку прилагаю(работа: по изменению потенциала на AN0 меняются выходы RB0-RB7). Всем спасибо за помощь.


// PIC16F877A Configuration Bit Settings

// 'C' source line config statements

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

#define _XTAL_FREQ 20000000

 

ADC.PDF

Edited by LiSiY5
Link to comment
Share on other sites

4 часа назад, LiSiY5 сказал:

работа: по изменению потенциала на AN0 меняются выходы RB0-RB7

шикарное описание... Вы точно программист?

Скрытый текст

void init_ADC_AN0 (void)
{
	TRISA |= (1<<0); // RA0 = input;
	ADCON1 0b10001110; // RA0(AN0) = analog input;
	ADCON0 = 0b11000001; // Fadc=Fosc/32; AN0; ADC=ON;    	
}

unsigned int ReadADC_AN0(void)
{ static unsigned char s_ucCount;
  static unsigned int  m_TempResalt[32];
  static unsigned int  s_uiSymm;
  
  s_ucCount++;
  s_ucCount&=0b00011111;
  s_uiSymm -= m_TempResalt[s_ucCount];
  __delay_us(20);  
  ADCON0bits.GO_DONE=1;
  while(ADCON0bits.GO_DONE) continue;
  __delay_us(5); 
  m_TempResalt[s_ucCount] = ADRESH;
  m_TempResalt[s_ucCount]<<=8;
  m_TempResalt[s_ucCount]+= ADRESL;
  s_uiSymm += m_TempResalt[s_ucCount];
  return s_uiSymm/32;	
}

 

 

Link to comment
Share on other sites

Разрешите объяснить, Я хочу полный код под мои конфигурационные биты на Pic16f877a. Мне необходимо получить переменную, назовем ADC, которая меняет значение от 0 до 1023, при изменении напряжения на входе AN0 от 0В до 5В. Далее сравнивая переменную с задаными const постараюсь получить на выходе то что задумано. Не судите строго, после перенесенного менингита сложно все вспоминаеться...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...