PIC12F675 помогите разобраться с программированием

Поклонники продукции Microchip Technology Inc тусуются тут.
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

Помогите разобраться, что я делаю не так. Я хочу сделать, чтобы на пятой ноге МК светодиод моргал, ориентировался по разным примерам кода, но что-то ничего не получается.

Компилятор выдаёт следующее:
Build D:\Led_S\LED_ON for device 12F675
Using driver D:\Program Files\HI-TECH Software\PICC\lite\9.60\bin\picc.exe

Make: The target "D:\Led_S\Untitled.obj" is out of date.
Executing: "D:\Program Files\HI-TECH Software\PICC\lite\9.60\bin\picc.exe" -C D:\Led_S\Untitled.c -q --chip=12F675 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"

Warning [176] D:\Led_S\Untitled.c; 15.0 missing newline
Error [192] D:\Led_S\Untitled.c; 6.1 undefined identifier "PORTA"
Error [192] D:\Led_S\Untitled.c; 7.1 undefined identifier "TRISA"
Warning [361] D:\Led_S\Untitled.c; 13.1 function declared implicit int
Warning [337] D:\Led_S\Untitled.c; 14.1 line does not have a newline on the end

********** Build failed! **********
Вот код:

Код: Выделить всё

#include <pic.h>

void main()//Начало программы.
{
 unsigned short i;
 PORTA = 0;//Очищаем порт А.
 TRISA = 0b00010000;//Направление работы ножек порта А.

 while(1)//Бесконечный цикл.
  for(i=0; i<8; i++)
   {
    PORTA=i;
    Delay_ms(500);
   }
}
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: PIC12F675 помогите разобраться с программированием

Сообщение otest »

Нет у него PORTA, TRISA.
Реклама
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

Re: PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

А FlowCode показует, что у него PORT A есть... А как тогда на этой МК подавать напряжение на выход?
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: PIC12F675 помогите разобраться с программированием

Сообщение botchin »

Качаем datasheet, читаем внимателно, доходим до 3.1. Делаем открътие, что в 12F675 есть GPIO и TRISIO регистръ. Понимаем что нужно читат далее. Читаем!

Удачи
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: PIC12F675 помогите разобраться с программированием

Сообщение pyzhman »

И это

Код: Выделить всё

for(i=0; i<8; i++)
убрать. И понять, для чего было впихнуто.
Docendo discimus
Реклама
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

Re: PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

Ковыряюсь, но ничего не выходит,… можете показать пример как правильно на этом МК управлять входом\выходом?

Вот что я изменил:

Код: Выделить всё

#include <pic.h>

#define P12F675
#define diod TRIS4

void main(void)//Начало программы.
{
 GPIO = 0;//Очищаем порт.
 TRISIO = 0b11110111;//Направление работы ножек порта.
 WPPU = 0;// Подтягивающие R(0-вкл.; 1-выкл.).
 while(1)//Бесконечный цикл.
   {
    diod=1;
    Delay_ms(500);
    diod=0;
    Delay_ms(500);
   }
}
Я правильно назначил направление работы ножек?

Но компилятор по-прежнему чем-то недоволен
Build D:\Led_S\LED_ON for device 12F675
Using driver D:\Program Files\HI-TECH Software\PICC\lite\9.60\bin\picc.exe

Make: The target "D:\Led_S\Untitled.obj" is out of date.
Executing: "D:\Program Files\HI-TECH Software\PICC\lite\9.60\bin\picc.exe" -C D:\Led_S\Untitled.c -q --chip=12F675 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"

Warning [176] D:\Led_S\Untitled.c; 18.0 missing newline
Error [192] D:\Led_S\Untitled.c; 10.1 undefined identifier "WPPU"
Warning [361] D:\Led_S\Untitled.c; 14.1 function declared implicit int
Warning [337] D:\Led_S\Untitled.c; 17.1 line does not have a newline on the end

********** Build failed! **********
Есть еще такой момент, когда я собрал на этом МК, как оно должно работать в FlowCODE, FlowCODE скомпилировал и выдал hex файл. Но при попытке с имитировать работу в протеусе МК с этим hex файлом не работает. С другими МК таких проблем не было.

Код который предлагает FlowCODE:

Код: Выделить всё

//************************************************************************************
//**  
//**  File name:     D:\hhhhhhhhhhhhhhhhhhhhhh\Flowcode1.c
//**
//**  Generated by:  Flowcode v5.2.0.0
//**  
//**  
//**  http://www.matrixmultimedia.com
//**  
//************************************************************************************


#define MX_PIC

#define MX_USES_UINT8 1
#define MX_USES_SINT16 0
#define MX_USES_CHAR 0
#define MX_USES_FLOAT 0
#define MX_USES_SINT32 0
#define MX_USES_BOOL 1
#define MX_USES_UINT16 0
#define MX_USES_UINT32 0
//Defines for microcontroller
#define P12F675
#define FC_CAL_PIC
#define FC_USEGPIO
#define MX_ADC
#define MX_ADC_TYPE_5
#define MX_ADC_BITS_10
#define MX_EE
#define MX_EE_SIZE 128

//Functions
#define MX_CLK_SPEED 19660800
#ifdef _BOOSTC
#include <system.h>
#endif
#ifdef HI_TECH_C
#include <pic.h>
#endif

//Configuration data

//Internal functions
#include "D:\Program Files\Flowcode\v5\FCD\internals.c"

//Macro function declarations


//Variable declarations
#define FCV_FALSE (0)
#define FCV_TRUE (1)



#include "D:\Program Files\Flowcode\v5\CAL\includes.c"

//Macro implementations



void main()
{
	//Initialization
	ansel = 0x20;
cmcon = 0x07;


	//Interrupt initialization code
	option_reg = 0xC0;


	//Loop
	//Loop: While 1
	while (1)
	{

		//Output
		//Output: 0 -> A4
		trisio = trisio & 0xEF;
		if ((0))
			gpio = (gpio & 0xEF) | 0x10;
		else
			gpio = gpio & 0xEF;

		//Delay
		//Delay: 500 ms
		delay_ms(255);
		delay_ms(245);

		//Output
		//Output: 1 -> A4
		trisio = trisio & 0xEF;
		if ((1))
			gpio = (gpio & 0xEF) | 0x10;
		else
			gpio = gpio & 0xEF;

		//Delay
		//Delay: 500 ms
		delay_ms(255);
		delay_ms(245);


	}

	mainendloop: goto mainendloop;
}

void MX_INTERRUPT_MACRO(void)
{
}
Реклама
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: PIC12F675 помогите разобраться с программированием

Сообщение botchin »

Опять читаем док. Там приблизително сказано: Каждъй от входов, исключая GP3, можно подтягивать через WPUx (WPU0-WPU5 - искл. WPU3) Перед етим нужно разрешить подтягивание через GPPU бит (OPTION REG:7)

Вас компилятор ругает в основном за то что не знает что такое WPPU
Flow разрешил подтягивание: option_reg = 0xC0; => самъй старшии бит ето разрешение подтяжки, а вот я нигде не увидел подтяжка какого то въвода.

А вам зачем подтягивание? Въ не нажимаете еще на клавишу!
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: PIC12F675 помогите разобраться с программированием

Сообщение pyzhman »

Код: Выделить всё

#include <pic.h>

#define diod GPIO2 // светодиод подключен к ножке 5

void main(void)//Начало программы.
{
GPIO = 0;//Очищаем порт.
TRISIO = 0b11111011;//Направление работы ножек порта.

while(1)//Бесконечный цикл.
{
diod= 1;
_delay(500);
diod= 0;
_delay(500);
}
}
Изображение
Надо бы еще определить содержимое CMCON и ANSEL, но демонстрация и так работает. (частота тактирования задана 4МГц)
Docendo discimus
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

Re: PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

Всё уже компилируется :) Я даже по-разному поэкспериментировал, вот код:

Код: Выделить всё

#include <pic.h>
//PIC12F675
#define Delay_ms
#define knopka GPIO5  //Кнопка #1.
#define knopka2 GPIO3 //Кнопка #2.
#define diod1 TRIS0  //Светодиод #1.
#define diod2 TRIS1  //Светодиод №2.
#define diod3 GPIO2  //Светодиод #3(Должен просто моргать).
#define diod4 GPIO4  //Светодиод #4(Должен Вкл. при нажатии 'knopka2').
__CONFIG (INTIO & UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS);

 void ZX1(void)      //Подготовка МК.
  {
   TRISIO =0b101000; //Направление работы ножек порта(1-вход, 0-выход)
   CMCON = 0x07;     //Отключение компараторов.
   GPIO = 0b000000;  //Очищаем порт.
   WPU5 = 1;         //Подтягивающий резистор(1-вкл., 0-откл.).
  }
//Начало программы.
void main(void)
 {
    ZX1();    //Вызов функции подготовки МК.
    while(1)                //Бесконечный цикл.
      {
        diod4 = knopka2;    //Включить светодиод #4.
         if(GPIO==0b100000) //Если кнопка нажата(вторая нога МК).
          {
            GPIO = 0b000001;
            diod1 = 0;    //Включить светодиод #1.
            diod2 = 1;    //Выключить светодиод #2.
            Delay_ms(500);
          }
          else //Если кнопка не нажата.
           {
              GPIO = 0b000010;
              diod1 = 1; //Выключить светодиод #1.
              diod2 = 0; //Включить светодиод #2.
              Delay_ms(500);
           }
         diod3 = 0;      //Включить светодиод #3.
         Delay_ms(500);
         diod3 = 1;      //Выключить светодиод #3.
         Delay_ms(500);
      }
 }
Но мне почему-то не получается сделать задержку, при «Delay_ms(500);» она не происходит, а при «_Delay(500);» код не компилируется. И при тестировании в Proteus не было стабильного горения светодиодов, они с огромной частотой моргали. Из-за чего это может быть?
Надо бы еще определить содержимое CMCON и ANSEL
Что это, для чего и как это сделать? «CMCON = 0x07;» я видел в подобной схеме на ЛабКит, но я так и не понял, для чего отключаются компараторы. Можете рассказать что и для чего?
. нужно разрешить подтягивание через GPPU бит (OPTION REG:7)

Как это правильно организовать на этой МК?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: PIC12F675 помогите разобраться с программированием

Сообщение pyzhman »

pyzhman писал(а):Надо бы еще...
Alexandr617 писал(а):Всё уже компилируется :)
Вы всё сможете сами. При экспериментах ясно представляйте себе что и как происходит.
Docendo discimus
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

Re: PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

Главное желание и понимание всех происходящих процессов и всё получится :) но в данный момент я не понимаю почему задержка не происходит и почему светодиоды моргаит с огромной частотой. Я ведь вынес функцию подготовки МК за пределы бесконечного цикла, она не должна сбрасывать порт в 0.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: PIC12F675 помогите разобраться с программированием

Сообщение pyzhman »

Вы еще не разобрались с
Alexandr617 писал(а):...Я хочу сделать, чтобы на пятой ноге МК светодиод моргал...
, а уже поналепили кнопок. Кто ж за вами угонится? Сделайте сначала одно, а потом беритесь за следующее.
Docendo discimus
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: PIC12F675 помогите разобраться с программированием

Сообщение pyzhman »

Alexandr617 писал(а):...Я ведь вынес функцию подготовки МК за пределы бесконечного цикла, она не должна сбрасывать порт в 0.
Она и так была вынесена за пределы бесконечного цикла.
Docendo discimus
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: PIC12F675 помогите разобраться с программированием

Сообщение botchin »

Разберитесь с разницей меж TRISIO и GPIO регистров
Alexandr617 писал(а):#define diod1 TRIS0 //Светодиод #1.
#define diod2 TRIS1 //Светодиод №2.
#define diod3 GPIO2 //Светодиод #3(Должен просто моргать).
#define diod4 GPIO4 //Светодиод #4(Должен Вкл. при нажатии 'knopka2').
Что из етого верно?
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

Re: PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

Код: Выделить всё

#include <pic.h>
//PIC12F675
#define diod GPIO2  //Светодиод.
__CONFIG (INTIO & UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS);
//Начало программы.
void main(void)
 {
  TRISIO = 0b111011; //Направление работы ножек порта(1-вход, 0-выход)
  GPIO = 0b000000;   //Очищаем порт.
   while(1)          //Бесконечный цикл.
     {
        diod = 1;    //Включить светодиод.
        _delay(500); //Задержка 0,5сек.
        diod = 0;    //Выключить светодиод.
        _delay(500); //Задержка 0,5сек.
     }
 }
Почему?
Build D:\Led_ON2\LED_ON for device 12F675
Using driver D:\Program Files\HI-TECH Software\PICC\lite\9.60\bin\picc.exe

Make: The target "D:\Led_ON2\Untitled.obj" is out of date.
Executing: "D:\Program Files\HI-TECH Software\PICC\lite\9.60\bin\picc.exe" -C D:\Led_ON2\Untitled.c -q --chip=12F675 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"

Warning [176] D:\Led_ON2\Untitled.c; 17.0 missing newline
Warning [361] D:\Led_ON2\Untitled.c; 13.1 function declared implicit int
Warning [337] D:\Led_ON2\Untitled.c; 16.1 line does not have a newline on the end

Executing: "D:\Program Files\HI-TECH Software\PICC\lite\9.60\bin\picc.exe" -oLED_ON.cof -mLED_ON.map --summary=default --output=default Untitled.obj --chip=12F675 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH PICC-Lite COMPILER (Microchip PICmicro) V9.60
Copyright (C) 1984-2006 HI-TECH SOFTWARE
Error [499] ; . undefined symbol:
__delay (Untitled.obj)
********** Build failed! **********
Что я делаю не так, что с установкой задержки не хочет компилироваться?
То что я дописывал «#define delay_ms» я так понимаю это не правильно.
GPIO – это 6-разрядный порт входа/выхода. GPIO имеет соответствующие биты направления в регистре TRISIO, позволяющие настраивать канал как вход или выход. Запись «1» в TRISIO переводит соответствующий выходной буфер в 3-е состояние. Запись «0» в регистр TRISIO определяет соответствующий канал как выход, содержимое защелки GPIO передаётся на выход микроконтроллера(если входная защелка подключена к выходу микроконтроллера).
Получается, подачу напряжения с выхода делаем с помощью GPIO, я правильно понимаю?
Исправил TRIS на GPIO, также всё моргает.
Последний раз редактировалось Alexandr617 Ср июл 01, 2015 14:26:26, всего редактировалось 1 раз.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: PIC12F675 помогите разобраться с программированием

Сообщение pyzhman »

1. Вы так и не увидели, что в рабочем варианте одно подчеркивание перед delay, а у вас два?
2. Директива #define что делает? И каков смысл ее использования в вашем варианте?
3. С помощью GPIO мы управляем портом. В данном случае подачей 1 или 0.
Docendo discimus
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

Re: PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

pyzhman писал(а):1. Вы так и не увидели, что в рабочем варианте одно подчеркивание перед delay, а у вас два?
2. Директива #define что делает? И каков смысл ее использования в вашем варианте?
1. Без разницы одно, два или вообще без подчеркивания, одни и теже ошибки выдаёт. Правда компилятор всегда показует на одну больше... Обратите внимание, в коде одно подчеркивание, а компилятор показал два.
2.
Директива #define определяет идентификатор и последовательность символов, которая будет подставляться вместо идентификатора каждый раз, когда он встретится в исходном файле.
действительно, непонятно для чего я её вставил.(

Удалил "GPIO=0b000001" и "GPIO=0b000010", это была моя ошибка, кнопка каждый раз сбивалась в "0". Теперь каждая нога отдельно от другой переключается, стало стабильней переключаться, но светодиоды всё равно моргают с огромной частотой.
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: PIC12F675 помогите разобраться с программированием

Сообщение botchin »

Я сам работаю на ASM, но вот что нашел:

Код: Выделить всё

#include 	<htc.h>               // Required to interface with delay routines    
#ifndef _XTAL_FREQ
 // Unless already defined assume 4MHz system frequency
 // This definition is required to calibrate __delay_us() and __delay_ms()
 #define _XTAL_FREQ 4000000
#endif

/** demonstration of various built-in delay mechanisms */
void main(void){
	while(1){
	NOP();
	_delay(1000); // delay for 1000 instruction cycles
	CLRWDT();
	__delay_us(400); // delay for 400 microseconds
	CLRWDT();
	__delay_ms(2); // delay for 2 milliseconds
	CLRWDT();
	}
} 
Включи вот ети рядъ

#include <htc.h> // Required to interface with delay routines
#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif
должно получится
-----------------------------------------------

Поставил себе HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.71a

обе функции не трябуют #include <htc.h>
функция _delay(unsigned long ); проходит

функция __delay_us(unsigned long ); проходит требует #define _XTAL_FREQ 4000000
функция __delay_ms(unsigned long ); проходит требует #define _XTAL_FREQ 4000000

Заметь _delay() с один прочеркон, а __delay_us() i __delay_ms() с два
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Alexandr617
Родился
Сообщения: 14
Зарегистрирован: Сб июн 27, 2015 01:08:06

Re: PIC12F675 помогите разобраться с программированием

Сообщение Alexandr617 »

pyzhman писал(а):И это

Код: Выделить всё

for(i=0; i<8; i++)
убрать. И понять, для чего было впихнуто.
Я уже понял для чего это впихнули, это пустой цикл для задержки.
http://icdevelop.narod.ru/picc/
Напишем простенькую программку для мигания светодиодом:

#include "pic.h"

#define bitset(var,bitno) ((var) |= 1 << (bitno))
#define bitclr(var,bitno) ((var) &= ~(1 << (bitno)))

main() {
unsigned int k;
CMCON = 0x07; //компараторы выключены
TRISA = 0b11111110; //RA0 выход
repeat:
for (k=0; k<45000; k++);//"пустой" цикл для временной задержки
bitset(PORTA, 0); //выставить на RA0 высокий уровень
for (k=0; k<45000; k++);
bitclr(PORTA, 0); //выставить на RA0 низкий уровень
goto repeat; //повторить ещё раз
}
Я так понял что не все компиляторы имеют delay.
------------------------------------
botchin писал(а):Я сам работаю на ASM, но вот что нашел.

Включи вот ети рядъ

#include <htc.h> // Required to interface with delay routines
#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 4000000
#endif
должно получится
-----------------------------------------------

Поставил себе HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.71a

обе функции не трябуют #include <htc.h>
функция _delay(unsigned long ); проходит

функция __delay_us(unsigned long ); проходит требует #define _XTAL_FREQ 4000000
функция __delay_ms(unsigned long ); проходит требует #define _XTAL_FREQ 4000000

Заметь _delay() с один прочеркон, а __delay_us() i __delay_ms() с два
Огромное спасибо за попытки мне помочь! Но это мне не помогло( компилятор выдаёт теже ошибки. Этот компилятор был в стандарте с MPLAB-ом, думаю стоит попробовать установить другую версию или компилятор...
-------
Кстати, пробовал вставлять Нопы с асма, задержку даёт, только очень маленькую, после этого вставил тот пустой цикл для задержки всё стало отлично МОРГАТЬ)). Простая прога моргалка уже залита в МК и стабильно могает уже 30мин. А с кнопками есть ещё вопросы, при нажатии кнопки светодиод почему-то не включается на постоянную работу он просто моргает поочерёдно с постоянно моргающим светодиодом.
--------------------
А FlowCODE я так понял имеет ошибки, по крайней мере для pic12f675 100%! Конфигурации в hex не ложит(PICkit об этом предупреждал. Конечно, после прошивки МК не работал, но прошивка была удачно залита) и в оболочке я мог (как бы) делать GP3 как на вход так и на выход.
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: PIC12F675 помогите разобраться с программированием

Сообщение botchin »

Поставил себе HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.71a

обе функции не трябуют #include <htc.h>
функция _delay(unsigned long ); проходит

функция __delay_us(unsigned long ); проходит требует #define _XTAL_FREQ 4000000
функция __delay_ms(unsigned long ); проходит требует #define _XTAL_FREQ 4000000

Заметь _delay() с один прочеркон, а __delay_us() i __delay_ms() с два прочеркa
Alexandr617 писал(а):Я так понял что не все компиляторы имеют delay
В язъках типа С функции бъвают встроеннъе и библиотечнъе. Delay встроенная - компилятор вставляет ее при нужде,

Код: Выделить всё

#include <pic.h>


#define _XTAL_FREQ 4000000

void main(void)
{
	while(1)
		_delay(100);
		__delay_us(100);
		__delay_ms(100);
}
Вот ето компилируется на все сто - HI-TECH C Compiler V9.71a

Кстати у етого компилятора в среде MPLAB довольно хорошии HELP на 344 страниц. Откръвается с Project/Hi-TECH C Manual F11
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Ответить

Вернуться в «PIC»