Например TDA7294

Форум РадиоКот • Просмотр темы - Програмирование pic на СИ.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн июл 28, 2025 04:07:50

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1363 ]    , 2, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 00:50:49 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
misterkuk писал(а):
Компиляция прошла успешно:) Завтра проверю на железе.

Можешь и не проверять , работать не будет ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 10:02:07 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
dosikus писал(а):
misterkuk писал(а):
Компиляция прошла успешно:) Завтра проверю на железе.

Можешь и не проверять , работать не будет ...

:( почему?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 10:31:49 
Вымогатель припоя

Зарегистрирован: Ср янв 05, 2011 10:03:18
Сообщений: 581
Рейтинг сообщения: 0
misterkuk писал(а):
Вот моя первая програма под схему http://www.labkit.ru/html/Assembler_for_PIC?id=356 Компиляция прошла успешно:) Завтра проверю на железе.
Код:
#include <pic.h>

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
#define knopka RB2 // кнопка
void podgot (void); // подготовка МК
void main (void)
{
podgot();
if (knopka = 0)
PORTB = 0b01111111;
}
// === подготовка МК
void podgot (void)
{
TRISA = 0b00000000; // направление работы ножек порта А
TRISB = 0b11111111; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1;  // подтягивающие R (0-вкл, 1-выкл)
}

Дефайны лучше для удобства чтения подтягивать к инклюдам, сразу после них.
Условие проверяется на равенство оператором ==, а не = (оператор присвоения)
Приучайся при модификации порта не трогать те выводы, которые заняты. В твоем случае это вход кнопки.
В твоем случае, судя по программе, ты не успеешь нажать кнопку после включения. Придется держать ее нажатой при подаче питания. :)
Попробуй сделать в цикле:
Код:
void main (void)
{
  podgot();
  for(;;)
  {
   if (knopka == 0)
    PORTB |= 0b0000001;
   else
    PORTB &= 0b1111110;
  }
}

И отслеживать состояние RB0 в зависимости от состояния кнопки.

_________________
С уважением,
Виктор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 11:08:29 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
ut1wpr писал(а):
Дефайны лучше для удобства чтения подтягивать к инклюдам, сразу после них.
Условие проверяется на равенство оператором ==, а не = (оператор присвоения)
Приучайся при модификации порта не трогать те выводы, которые заняты. В твоем случае это вход кнопки.
В твоем случае, судя по программе, ты не успеешь нажать кнопку после включения. Придется держать ее нажатой при подаче питания. :)

И отслеживать состояние RB0 в зависимости от состояния кнопки.

Не пойму зачем нам отслежывать выход на индикатор? Я думал нужно отслежывать кнопку, тоесть RA2. Про равенство забыл. Виноват. И что такое Дефайны?:) Программа с изменением равенства не заработала:( В обед проверю с вашими исправлениями.
Цель была такая- Нажимаем- горит
Бросаем тухнет.
А мочему вы в примере поставили |= и &= ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 11:51:24 
Опытный кот

Карма: 4
Рейтинг сообщений: 1
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 767
Рейтинг сообщения: 0
misterkuk писал(а):
Вот моя первая програма под схему http://www.labkit.ru/html/Assembler_for_PIC?id=356 Компиляция прошла успешно:) Завтра проверю на железе.
Код:
#include <pic.h>

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
#define knopka RB7 // кнопка
void podgot (void); // подготовка МК
void main (void)
{
podgot();
while(1) начало бесконечного цикла (внимательно читай самоучитель)
{
if (knopka == 0)  PORTB0 = 1;
else PORTB0 = 0;
} //конец бесконечного цикла
} //конец функции
// === подготовка МК
void podgot (void)
{
TRISA = 0b00000000; // направление работы ножек порта А
TRISB = 0b10000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1;  // подтягивающие R (0-вкл, 1-выкл)
}

я незнаю что они хотят доказать,и чем им ненравиться расположение дефайнов.
присваивание описано правильно,нужно програмку лиш чуть чуть подкоректировать
см.выше


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 11:54:19 
Опытный кот

Карма: 4
Рейтинг сообщений: 1
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 767
Рейтинг сообщения: 0
скажите ,а зачем накладывать маски |= и &= на порт,чтобы вывести в него данные?
в авр я встречал подобные присваивания, хотя просто пишу через =
PORTB = 0b10100100; и все прекрастно работает


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 12:04:15 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 878
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6039
Откуда: Minsk
Рейтинг сообщения: 0
vovik15 писал(а):
скажите ,а зачем накладывать маски |= и &= на порт,чтобы вывести в него данные?
в авр я встречал подобные присваивания, хотя просто пишу через =
PORTB = 0b10100100; и все прекрастно работает


Это не зависит от PIC или AVR. Логика тут простая : присваиванием меняешь _все_ разряды порта. Можно и так написа'ть, но при этом надо каждый раз помнить, что там было раньше, и каждый раз воспроизводить это состояние остальных выходов портов. А по маске - изменить состояние только выбранных выходов, не трогая остальные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 13:21:47 
Вымогатель припоя

Зарегистрирован: Ср янв 05, 2011 10:03:18
Сообщений: 581
Рейтинг сообщения: 0
vovik15 писал(а):
скажите ,а зачем накладывать маски |= и &= на порт,чтобы вывести в него данные?
в авр я встречал подобные присваивания, хотя просто пишу через =
PORTB = 0b10100100; и все прекрастно работает

Чтобы не "задевать" те разряды порта, которые нельзя трогать.
Подобные сокращения в Си повсеметно приняты. Язык Си очень гибок. Но по сути все сводится к следующему преобразованию.
Код:
char temp;
 temp = PORTB & 0xFE;
 PORTB = temp;

Читаем в переменную temp значение выводов порта, накладывая маску, при этом бит_0 сбрасывается.
Модифицированное значение temp выводим снова в порт.
В результате bit_0 порта окажется сброшенным, при этом остальные разряды порта останутся неизменными.
Оператор &= называется совмещенным оператором. Компилятор при этом сам наложит маску и присвоит модифицированное значение переменно, слева от оператора.
Рекомендую почитать основы программирования на Си. В интернете бездна материала...

_________________
С уважением,
Виктор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пт янв 28, 2011 17:38:32 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
При проверке на железе, горел только "е" сегмент и причём не зависимо от того нажата кнопка или нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс янв 30, 2011 19:23:29 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Ну думаю с простой программой мы разобрались. А как насчёт работы с энергонезависимой памятью? как с ней работать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн янв 31, 2011 10:03:59 
Опытный кот

Карма: 4
Рейтинг сообщений: 1
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 767
Рейтинг сообщения: 0
http://piclist.ru/S-EEPROM/S-EEPROM.html
что ты привязался к этой памяти? у пиков полно других полезных функций


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн янв 31, 2011 13:36:04 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
попробывал в протеусе. Там тоже только 1 сегмент горит. В чём причина?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн янв 31, 2011 19:45:55 
Опытный кот

Карма: 4
Рейтинг сообщений: 1
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 767
Рейтинг сообщения: 0
исходник давай,и проект протеуса


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн янв 31, 2011 22:56:17 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
С протеусом раньше не работал. Соединил индикатор с пиком как попало ( не так как на схеме). На железе тотже результат.


Вложения:
ishodnik+proekt.rar [110.45 KiB]
Скачиваний: 367
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн янв 31, 2011 23:38:43 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4567
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А как на счёт хекса ? :))) Исходник нельзя вотнуть в протеус.... :?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт фев 01, 2011 00:30:55 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
:) Вот и хекс


Вложения:
migal hex.rar [243 байт]
Скачиваний: 342
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт фев 01, 2011 01:24:43 
Опытный кот

Карма: 4
Рейтинг сообщений: 1
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 767
Рейтинг сообщения: 0
значит так
во вложении проект протеуса и исходник
что касаеться протеуса : кварц ставить необязательно(он все равно не эмулируеться) резисторы на индикатор тоже ставить не требуеться
они только отнимают ресурсы компьютера


Вложения:
project.rar [15.69 KiB]
Скачиваний: 365
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт фев 01, 2011 22:10:09 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Но вопрос остаётся открытым. Почему горит только 1 сегмент и мигает как вздумается ему?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вт фев 01, 2011 23:55:13 
Опытный кот

Карма: 4
Рейтинг сообщений: 1
Зарегистрирован: Сб ноя 08, 2008 18:32:36
Сообщений: 767
Рейтинг сообщения: 0
бесконечный цикл забыл
while(1)
{
тут нужный код
}

и номер кнопочки перепутал (надо было в протеусе на другую линию повесить)
на RA2 перевесь,согластно программе
Код:
#include <pic.h>
__CONFIG (LP & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

void podgot (void); // подготовка МК
void main (void)
{
podgot();
while (1)
{
if (RA2 == 0) PORTB = 1;
}
} //конец функции
// === подготовка МК

void podgot (void)
{
TRISA = 0b11111111; // направление работы ножек порта А
TRISB = 0b00000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1;  // подтягивающие R (0-вкл, 1-выкл)
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср фев 02, 2011 00:31:51 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
vovik15 писал(а):
бесконечный цикл забыл

Я уже скопировал ваш код, вставил в МПЛАБ, скомпилировал. В протеусе в свойствах пика указал на hex файл прошивки что в папке микрочипа в програм файлс. Нажимаю плей. Ничего не горит ( хорошо). При нажатие кнопки должны загореться все сегменты, но загорается и горит всё время только 1 сегмент с линии RB0. Хотя по идее при отжаатии ничего светится не должно. У вас тот код что вы написали, как в протеусе работает?


Вложения:
Безымянный22.JPG [193.68 KiB]
Скачиваний: 805
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1363 ]    , 2, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y