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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 15.12.2008, 00:11   #1
DDimon
Временная регистрация
 
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DDimon на пути к лучшему
По умолчанию MicroC - текстовая переменная -как?

Модернизируется экземпловый проект "Mmc_Fat16_Test" компилятора MicroC. На ММС должна записываться переменная в зависимости от нажжатой кнопки. Задаю ее величиной 20 знаков:
Код:
char
napravlenie[20];
пробую писать через опрос, примерно так
Код:
// Если RB0 замкнут на землю, записать переменную
    if (PORTB.F0‹1) {
    napravlenie[20]="Sever";
     };
затем обращаюсь к видоизмененому
Код:
//M-M-M--------- Creates new file and writes some data to it
void M_Create_New_File() {

  Mmc_Fat_Assign("DatalogxTXT", 0xA0);      // Will not find file and then create file
  Mmc_Fat_Append();                    // To clear file and start with new data
    Usart_Write("ZAPIS_OK");    /* iineaou  ii USART */
    Mmc_Fat_Write(napravlenie, 20);   // write data to the assigned file
    Mmc_Fat_Write("ZAPIS_OK", 10);   // write data to the assigned file

}
Но на карточку вместо переменной направление пишутся пробелы (пустые знаки, никакой кодировкой не разбираются). Где просчет?
Реклама:
DDimon вне форума  
Непрочитано 15.12.2008, 00:26   #2
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Я совсем не знаю этот микроси и не понимаю, почему оно не ругается на такой код. Я бы переписал где-то так.
Код:
const char *napravlenie;
///бла бла бла
napravlenie="Sever"; 
// 
Mmc_Fat_Write(*napravlenie, 20);
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 15.12.2008, 00:46   #3
tauP10
Почётный гражданин KAZUS.RU
 
Регистрация: 26.08.2006
Сообщений: 1,405
Сказал спасибо: 1
Сказали Спасибо 89 раз(а) в 69 сообщении(ях)
tauP10 на пути к лучшему
По умолчанию

самым имхо оптимальным будет так
Код:
char * napravlenie[]={"Sever","Ug","Vostok","Zapad"}; 
//бла бла бла 
// 
Mmc_Fat_Write(napravlenie[0], 6);
Mmc_Fat_Write(napravlenie[1], 3);
пожалуй будет полезным прочитать про объявление и использование массивов в С.
tauP10 вне форума  
Непрочитано 15.12.2008, 01:01   #4
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Резвимся.. Можно через копирование строки...
Код:
 unsigned char napravlenie[20];
strcpy(napravlenie,"Sever");
Mmc_Fat_Write(*napravlenie, strlen(napravlenie));
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 15.12.2008, 19:51   #5
DDimon
Временная регистрация
 
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DDimon на пути к лучшему
По умолчанию

Пойду пробовать данные варианты записи массивов.
DDimon вне форума  
Непрочитано 15.12.2008, 19:54   #6
DDimon
Временная регистрация
 
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DDimon на пути к лучшему
По умолчанию

Особо понравился вариант user_ushastyj выражаю свой респект
DDimon вне форума  
Непрочитано 15.12.2008, 23:16   #7
DDimon
Временная регистрация
 
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DDimon на пути к лучшему
По умолчанию

Эх, зря я респекты начал раздавать... Сработал только варриант tauP10, толи дело в компиляторе, толи еще где, но результат очевиден.
Может кому пригодится, MicroC, работа с массивами:
Код:
char
*napr[8]={"---Sever----", ... "-----Ug-----"};
...
 // Если RB0 замкнут на землю, записать переменную
    if (PORTB.F0‹1) {
    q=0;
     };
...
Mmc_Fat_Assign("DatalogxTXT", 0xA0);      
Mmc_Fat_Append();                    
Mmc_Fat_Write(napr[q], 12);
DDimon вне форума  
Непрочитано 15.12.2008, 23:22   #8
DDimon
Временная регистрация
 
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DDimon на пути к лучшему
По умолчанию

Немного не в тему, но где можно посмотреть образец подключения PIC18F452 (обвязка в железе) и какой простой программатор лучше выбрать. Подскажите из своего опыта.
DDimon вне форума  
Непрочитано 17.12.2008, 01:02   #9
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Сообщение от DDimon
Эх, зря я респекты начал раздавать... Сработал только варриант tauP10, толи дело в компиляторе, толи еще где, но результат очевиден.
Я проверил .
Да, на хайтеке код идет, а на микрочиповском компиляторе мсс18... Я не смог даже использовать strcpy - какого ... не работает, не понимаю почему.
Пришлось мучиться через sprintf. Хоть не кошерно.
Код:
#include ‹p18f452.h›
#include ‹stdio.h›
typedef struct
	{
		int *a1;
		int *a2;
		int *a3;
		int *a4;
	}a;
	
const rom a ar1={"sever","ug","vostok","zapad"};
unsigned char text[10];	
unsigned char i;
void main(void)
{
sprintf(text,ar1.a2);// копируем в массив text
i=strlen(text);	// узнаем длину
}
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 17.12.2008, 20:44   #10
DDimon
Временная регистрация
 
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
DDimon на пути к лучшему
По умолчанию

[/quote]Хоть не кошерно.
Цитата:
Эт точно . Все компиляторы имеют свою специфику.
DDimon вне форума  
Закрытая тема

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в MicroC! kviper Микроконтроллеры, АЦП, память и т.д 10 19.10.2009 16:35
Переменная без инициализации в CVAVR woroba Микроконтроллеры, АЦП, память и т.д 0 20.08.2009 18:25
microC PRO for AVR kassiopay Микроконтроллеры, АЦП, память и т.д 0 27.03.2009 16:59
KEIL ARM переменная в ROM Gordey Микроконтроллеры, АЦП, память и т.д 2 15.01.2009 09:42
microC for PIC Микроконтроллеры, АЦП, память и т.д 2 20.03.2006 18:34


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


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