Например TDA7294

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

Текущее время: Пт окт 03, 2025 04:36:55

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


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



Начать новую тему Ответить на тему  [ Сообщений: 1367 ]     ... , , , 14, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср мар 06, 2013 12:15:27 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Не разберусь с кодом. Не получается представить как это работает. Как понять строки
Код:
 temp=(lcd&~(1<<RS))|(1<<E);   //RS=0 – это команда
PORTD=temp;   //Выводим на portD старшую тетраду команды, сигналы RS, E
asm("nop");   //Небольшая задержка в 1 такт МК, для стабилизации
PORTD=temp&~(1<<E);   //Сигнал записи команды


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

Карма: 1
Рейтинг сообщений: 52
Зарегистрирован: Чт мар 12, 2009 16:31:05
Сообщений: 804
Рейтинг сообщения: 0
Типа в переменной lcd сбросить бит RS и установить бит E и присвоить всё это добро в переменную temp.
В PORTD вывести содержимое переменной temp.
А через небольшую задержку,в 1 машинный такт,сбросить бит E.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 07, 2013 14:44:01 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Vov123 писал(а):
Типа в переменной lcd сбросить бит RS и установить бит E и присвоить всё это добро в переменную temp.


Переменная lcd скорей всего в шестнадцатеричной форме. То есть можно поменять в этом шестнадцатеричном коде отдельно какой нибуть байт? RS я так понимаю это нога и какой то бит в регистре мк. Пусть RA1 к примеу. Не пойму как он в 0х... коде изменит какой то бит.


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс мар 17, 2013 19:34:28 
Есть функция
Код:
    print_message(A);
выводящая информацию на дисплей через порты.
Где А - это тип char (ну или массив char, если быть правильным).
Есть некая переменная считаемая в программе i.
Вопрос: каким образом можно в A затолкать i, а так же еще несколько символов?
Когда то давно делал, но исходники погибли вместе с хардом. Ума не приложу как склеить i, несколко символов и поместить результат в А.
Если можно подкиньте примеров работы с char, двухчасовые попытки поискать в интернете ни к чему не привели. :(


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс мар 17, 2013 19:47:54 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4583
Откуда: Планета Земля
Рейтинг сообщения: -1
Медали: 1
Получил миской по аватаре (1)
Цитата:
каким образом можно в A затолкать i
Код:
A=i;
Не ? :roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс мар 17, 2013 19:53:44 
Ругаетцца... :(
Тьфу! У меня же массив!
А вот как склеить несколько char'ов?


Последний раз редактировалось Chettuser Вс мар 17, 2013 20:05:21, всего редактировалось 1 раз.

Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс мар 17, 2013 20:01:59 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4583
Откуда: Планета Земля
Рейтинг сообщения: -1
Медали: 1
Получил миской по аватаре (1)
Что значит "склеить несколько char'ов" ? Вопрос задайте нормально :)
Обычно правильная формулировка вопроса приводит к нахождению ответа самостоятельно.


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс мар 17, 2013 20:04:54 
Эээ... допёр - массивом придётся работать.

По предыдущему рано радовался - выводит чушь. Ладно, попробую сам разобраться еще разок.
Спасибо.


Вернуться наверх
   
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср мар 20, 2013 19:56:01 
Короче, сдаюсь...
Вот код вывода на LCD дисплей. Пытаюсь оформить вывод нужной мне строки в main:
Спойлер
Код:
/*
      ВЫВОД ИНФОРМАЦИИ НА LCD-ДИСПЛЕЙ ОТ NOKIA 1100
*/
#include <p18f14k50.h>       /* Подключаем хидеры */
#include <delays.h> 
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "lcd1100.h"

//   Описываем конфигурацию

#pragma config WDTEN = OFF
#pragma config MCLRE = OFF
#pragma config DEBUG = OFF
#pragma config LVP = OFF
#pragma config IESO = OFF

//    биты защиты выключить
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config CPD = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF
#pragma config WRTC = OFF
#pragma config WRTD = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = OFF

typedef unsigned char BYTE;
//   Constant declarations
#define CLOCK 8      //   частота в МГц

char p[7];
unsigned int PIC_DATA;
unsigned char pic_data_char[4];

void main(void);
void InterruptHandlerHigh(void);
void init (void);
void long_to_string_lz (unsigned int input, char *str, char numdigits);
void long_to_string (unsigned int input, char *str, char numdigits);


void main (void){
   
   init();
   Lcd_Init();
while(1)
{
   Gotoxy(12,1);
   print_message("Frequency");
   Gotoxy(12,3);
   
   PIC_DATA++;
   itoa(PIC_DATA, pic_data_char);
//   sprintf(pic_data_char, %d, PIC_DATA);
   print_message(pic_data_char);
   Delay10KTCYx(100);
}
             }

void init (void){
/*
*         Инициализация системы
*/
      TRISC = 0b01111111;   // PORTC на вход, кроме RC7 - на выход
      
      TRISB = 0;          // PORTB на выход

      OSCCON = 0x72;      // Тактовая частота 8 Мгц

      ANSEL = 0;         // отключаем АЦП каналы
      ANSELH = 0;
      return;
         }

/*
**************************************************************************************
* long_to_string()
*
* Description : Convert a "long" to a null-terminated string
*               (base = decimal)
* Arguments   : input = number to be converted
*               str = pointer to string (i.e. display buffer)
*               numdigits = number of digits to display
* Returns     : none
**************************************************************************************
*/
void long_to_string (unsigned int input, char *str, char numdigits)
{
  char digit;
  int blank = 1;
  long_to_string_lz(input, str, numdigits);
  for (digit=0; digit < numdigits-1; digit++) {
    if (str[digit] == '0') {
      if (blank == 1) str[digit] = ' ';
    }
    else {
      blank = 0;
    }
  }
}

/*
**************************************************************************************
* long_to_string_lz()
*
* Description : Convert a "long" to a null-terminated string, with leading zeros
*               (base = decimal)
* Arguments   : input = number to be converted
*               str = pointer to string (i.e. display buffer)
*               numdigits = number of digits to display
* Returns     : none
**************************************************************************************
*/
void long_to_string_lz (unsigned int input, char *str, char numdigits)
{
  char digit;
  for (digit=numdigits; digit > 0; digit--) {
    str[digit-1] = (input % 10) + '0';
    input = input / 10;
  }
  str[numdigits] = 0;    // null-terminate the string
}

Какие в main могут быть ошибки касаемо функции itoa? Stdlib.h вроде как подключил. :evil:
На дисплей выводится собачий кал. Голова уже не думает, может кто опытным глазом глянет и увидит сразу где что не срастается?


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср мар 20, 2013 21:34:01 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4583
Откуда: Планета Земля
Рейтинг сообщения: -1
Медали: 1
Получил миской по аватаре (1)
А чем sprintf не угодил ?


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 21, 2013 04:50:46 
Слишком жирный и наглый - отхавал больше половины памяти, а чистить его лениво. Кстати, ничего хорошего он тоже не выдаёт :facepalm:


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт мар 21, 2013 08:20:39 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4583
Откуда: Планета Земля
Рейтинг сообщения: -1
Медали: 1
Получил миской по аватаре (1)
Посмотрите что лежит в массиве после форматирования, может вывод не работает (что больше вероятно), а Вы мучаетесь...


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб мар 23, 2013 16:22:31 
Прошу ногами не пинать, а подскажите пожалуйста:
Чем отличается такая запись:
Код:
print_message("A");

от такой:
Код:
print_message('A');

где функция имеет такой формат входных данных:
Код:
void print_message(const rom char * message)


Задача простая - код:
Код:
   print_message("A");
работает как надо, а вот код:
Код:
   PIC_CHAR[0] = 'A';
   print_message(PIC_CHAR[0]);
увы, нет.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб мар 23, 2013 18:19:51 
Родился

Зарегистрирован: Вт мар 05, 2013 00:33:51
Сообщений: 7
Рейтинг сообщения: 0
Подскажите пожалуйста надежный и проверенный алгоритм антидребезга контактов для pic на Си (HI-TECH).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб мар 23, 2013 20:27:50 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: -1
Цитата:
Чем отличается такая запись:
Код:
print_message("A");

от такой:
Код:
print_message('A');

в первом случае ожидается нуль - терминированная строка, те равнозначно
{ 'A',0}
чтобы работало
PIC_CHAR[] = {'A',0};
print_message(PIC_CHAR);


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб мар 23, 2013 20:50:37 
Эхх.. не работает :( Синтаксическая ошибка.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб мар 23, 2013 21:17:18 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4583
Откуда: Планета Земля
Рейтинг сообщения: -1
Медали: 1
Получил миской по аватаре (1)
Chettuser писал(а):
Чем отличается такая запись:
Код:
print_message("A");

от такой:
Код:
print_message('A');
'A' - это 1 символ, имеющий свой код, т.б. char. А "A" - это уже строка и в функцию передаётся её указатель (char*).
Учитывая, что функция принимает, в качестве аргумента, указатель на строку в ROM, первый вариант верный, второй - нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб мар 23, 2013 21:28:56 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: -1
Цитата:
Эхх.. не работает :( Синтаксическая ошибка.

void print_message(const rom char * message)
ну и правильно что ошибка, в качестве аргумента ожидается указатель из const rom - памяти программ а не данных.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс мар 24, 2013 16:51:21 
Родился

Зарегистрирован: Вс мар 24, 2013 16:35:36
Сообщений: 3
Рейтинг сообщения: 0
Добрый вечер. Решил на днях тут по-колдовать с пиками диодами и кнопками. Си на начальном уровне знаю, точнее Си++, но разница не велика. Единственное так и не понял как управлять портами и ножками. К примеру: есть диод на одном порту и на втором кнопка. Как сделать чтобы при нажатии кнопки диод горел, при втором нажатии тух и т.д. Понятно, что там где диод ножка работает на выход, там где кнопка на вход, но не получается всё это написать пробовал на 16F887. Нашел тут один вариант с мигалкой http://habrahabr.ru/post/75312/ , но не суждено он у меня тупо горит и всё никаких миганий. Объясните как управлять портами. Простые проги на си++ с использованием фора или свитча написать могу.


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс мар 24, 2013 18:23:30 
Я хоть код предоставил :))) А по Вашему только догадываться придётся.


Вернуться наверх
   
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1367 ]     ... , , , 14, , , ...  

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


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

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


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

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


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