Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 15.09.2007, 09:44  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Подскажите что за перемена я lcd тут.

Код:
struct lcd_pin_map {               
           short int rs;           
           short int unused; 
           short int no;                 
           short int enable;          
           int     data : 4;       
        } lcd;
[/quote]
Реклама:
CERGEI1982 вне форума  
Непрочитано 15.09.2007, 10:08  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Ну дык это и есть структура .
Это ты обьявляешь шаблон структуры .
Код:
struct lcd_pin_map {


А этим выделяешь память под структуру.
Код:
  } lcd;


+ указатель на енту структуру.
Код:
} lcd,*ptr;


Код:
#include "main.h"

STATIC  STRUCT TIME {
INT8 TIK;
INT8 TIK1;
INT8 SEC;
INT8 MIN;
INT8 HOUR;
}TIME,*PTR;

STATIC  STRUCT ALARM {
INT8 MIN;
INT8 HOUR;
}ALARM,*PTR_AL;



#int_TIMER2
void  TIMER2_isr(void)
{

IF(PTR-›TIK++==100){
   PTR-›TIK=0;
     IF(PTR-›SEC++==60){
      PTR-›SEC=0;
       IF(PTR-›MIN++==60){
        PTR-›MIN=0;
         IF(PTR-›HOUR++==24){
           PTR-›HOUR=0;
         }}}}
}



void main()
{

   PTR=&TIME;
   PTR_AL=&ALARM;
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   //setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_4,249,10);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_TIMER2);
   enable_interrupts(GLOBAL);
   PTR_AL-›MIN=4;
 

   WHILE(1){

   }

}
Прикрепленный файл: 5146089.rar
dosikus вне форума  
Непрочитано 15.09.2007, 10:52  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Круто ,а для чего с указателями работаеш? нельзя было напрямую теме же именами-структур?
CERGEI1982 вне форума  
Непрочитано 15.09.2007, 11:11  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

С этими указателями я 2 ночи не спал , я так же как и ты ,С только постигаю.

Решил вот разобраться .Пики пиками но надо расти , заказал АРМы от TI .
dosikus вне форума  
Непрочитано 19.09.2007, 06:34  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Ночами не сижу,это плохая привычка,лучше хорошо поспать отдохнуть и днем на светлую голову поработать
Чтоб понять что делает функция на си надо смотреть на после компиляции на асем смотреть,тогда все понятно что и куда она делает,так что без асамблера никуда
Я тож пробую авр изучать.
CERGEI1982 вне форума  
Непрочитано 19.09.2007, 06:51  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Почему функция i2c_read(1) не выставляет ack? может она и не должна этого делать ,просто когда слэйв устройство считывает байт,он должен потвердить что получил.Если такого нет то придется самому дописывать чтоб выставлял ack.
Это после компиляции код
Код:
....................       var_1=i2c_read(1);    
016E:  BSF    03.5
016F:  BTFSS  14.0
0170:  GOTO   16F
0171:  BCF    03.5
0172:  MOVF   13,W
0173:  MOVWF  2F

-- Прилагается рисунок: --

CERGEI1982 вне форума  
Непрочитано 21.09.2007, 07:18  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Подскажите,как передать указатель на структуру в функцию и применить этот указатель в ней,у меня не выходит
Вот такой код прмерно,без инициализации.
Код:
#include "C:MOI PROEKTOTLADHIKotladhikmain.h"
#include "my_lcd.c"
#include "SSPCON1.h"


static struct hislo{BYTE tisahi;BYTE dec;BYTE edin;}block_s,var_1_s,var_2_s,*hislo_p;

//функция преобразования числа
void preob(int input,hislo_p)
   {
   hislo_p-›dec=input/10;
   hislo_p-›edin=input-hislo-›dec*10;
   }

void main()
{
//масив для преобразования чисел
const BYTE hisla[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x3  9};
                   //0  ,  1,   2 , 3  ,  4 , 5  , 6  , 7  , 8  , 9
unsigned BYTE block=0,var_1=0,var_2=0,adress; //для шины i2c
const    BYTE adress_i2c=0x10;

  start:
   //считывание адреса слэйв устройства
      adress=i2c_read();
      if(adress_i2c!=adress)
         goto start;
    //если сходится выставляем аск
   //считывание трех байтов
      block=i2c_read(1);   
      var_1=i2c_read(1);   
      var_2=i2c_read();
   //проверка стопа для уверености
   while(P==0)
   restart_wdt();
   //преобразование чисел под жки
   preob(block,&block_s);
   //передача на жки
   lcd_putc("f  BLOCK=");
   lcd_send_byte(1,block_s.dec);
   lcd_send_byte(1,block_s.edin);
}
Прикрепленный файл: 1652105.rar
CERGEI1982 вне форума  
Непрочитано 21.09.2007, 08:23  
moyaproba
Временная регистрация
 
Регистрация: 14.09.2006
Сообщений: 58
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 1 сообщении
moyaproba на пути к лучшему
По умолчанию

Сообщение от CERGEI1982
Подскажите,как передать указатель на структуру в функцию и применить этот указатель в ней,у меня не выходит
Вот такой код прмерно,без инициализации.
Код:
#include "C:MOI PROEKTOTLADHIKotladhikmain.h"
#include "my_lcd.c"
#include "SSPCON1.h"


static struct hislo{BYTE tisahi;BYTE dec;BYTE edin;}block_s,var_1_s,var_2_s,*hislo_p;

//функция преобразования числа
void preob(int input,hislo_p)
   {
   hislo_p-›dec=input/10;
   hislo_p-›edin=input-hislo-›dec*10;
   }

void main()
{
//масив для преобразования чисел
const BYTE hisla[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x3  9};
                   //0  ,  1,   2 , 3  ,  4 , 5  , 6  , 7  , 8  , 9
unsigned BYTE block=0,var_1=0,var_2=0,adress; //для шины i2c
const    BYTE adress_i2c=0x10;

  start:
   //считывание адреса слэйв устройства
      adress=i2c_read();
      if(adress_i2c!=adress)
         goto start;
    //если сходится выставляем аск
   //считывание трех байтов
      block=i2c_read(1);   
      var_1=i2c_read(1);   
      var_2=i2c_read();
   //проверка стопа для уверености
   while(P==0)
   restart_wdt();
   //преобразование чисел под жки
   preob(block,&block_s);
   //передача на жки
   lcd_putc("f  BLOCK=");
   lcd_send_byte(1,block_s.dec);
   lcd_send_byte(1,block_s.edin);
}
Потому что надо вот так, еще в фукции была ошибка

Код:
void preob(int input,struct hislo *hislo_p)
   {
   hislo_p-›dec=input/10;
   hislo_p-›edin=input-hislo_p-›dec*10;
   }
Прикрепленный файл: 1652105.rar
moyaproba вне форума  
Непрочитано 21.09.2007, 09:10  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Спасибо,просто прочитал в книге на работе и все не запомнил.
CERGEI1982 вне форума  
Непрочитано 21.09.2007, 09:18  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

досик взгляни,это отладчик сделал для шины i2c,правда еще не до конца(надо вести цифру сотни,тысячи,та как переменая может больше десятков) ,просто первый раз работаю тоже со структурами
Но кажись при работе со структурами время и код увеличивается,но при этом убодней писать прогу,так?

Прикрепленный файл: 7364881.rar
CERGEI1982 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
i2c+ccs pic Gladkih Микроконтроллеры, АЦП, память и т.д 9 18.04.2016 22:17
PIC BASIC PRO Compiler 2.47 dosikus Proteus, KiCAD и другие ECAD 27 05.12.2009 05:48
изучение IAR AVR C compiler granel Микроконтроллеры, АЦП, память и т.д 0 10.10.2008 20:45
PIC C Compiler PCWH458 sergxxx Микроконтроллеры, АЦП, память и т.д 9 23.09.2008 18:25
Не включается дебаггер в CCS C Compiler BigMazzi Микроконтроллеры, АЦП, память и т.д 4 19.09.2008 13:34


Часовой пояс GMT +4, время: 05:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot