Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
15.12.2008, 00:11
|
#1
|
Временная регистрация
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
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
} |
Но на карточку вместо переменной направление пишутся пробелы (пустые знаки, никакой кодировкой не разбираются). Где просчет?
|
|
|
|
15.12.2008, 00:26
|
#2
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Я совсем не знаю этот микроси и не понимаю, почему оно не ругается на такой код. Я бы переписал где-то так.
Код:
|
const char *napravlenie;
///бла бла бла
napravlenie="Sever";
//
Mmc_Fat_Write(*napravlenie, 20); |
__________________
разум когда-нибудь победит... (с)
|
|
|
|
15.12.2008, 00:46
|
#3
|
Почётный гражданин KAZUS.RU
Регистрация: 26.08.2006
Сообщений: 1,405
Сказал спасибо: 1
Сказали Спасибо 89 раз(а) в 69 сообщении(ях)
|
самым имхо оптимальным будет так
Код:
|
char * napravlenie[]={"Sever","Ug","Vostok","Zapad"};
//бла бла бла
//
Mmc_Fat_Write(napravlenie[0], 6);
Mmc_Fat_Write(napravlenie[1], 3); |
пожалуй будет полезным прочитать про объявление и использование массивов в С.
|
|
|
|
15.12.2008, 01:01
|
#4
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Резвимся.. Можно через копирование строки...
Код:
|
unsigned char napravlenie[20];
strcpy(napravlenie,"Sever");
Mmc_Fat_Write(*napravlenie, strlen(napravlenie)); |
__________________
разум когда-нибудь победит... (с)
|
|
|
|
15.12.2008, 19:51
|
#5
|
Временная регистрация
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
![Секрет](images/smilies/icon_arrow.gif) Пойду пробовать данные варианты записи массивов.
|
|
|
|
15.12.2008, 19:54
|
#6
|
Временная регистрация
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Особо понравился вариант user_ushastyj выражаю свой респект
|
|
|
|
15.12.2008, 23:16
|
#7
|
Временная регистрация
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Эх, зря я респекты начал раздавать... ![Голова кругом](images/smilies/icon_rolleyes.gif) Сработал только варриант 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); |
|
|
|
|
15.12.2008, 23:22
|
#8
|
Временная регистрация
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Немного не в тему, но где можно посмотреть образец подключения PIC18F452 (обвязка в железе) и какой простой программатор лучше выбрать. Подскажите из своего опыта.
|
|
|
|
17.12.2008, 01:02
|
#9
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от 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); // узнаем длину
} |
__________________
разум когда-нибудь победит... (с)
|
|
|
|
17.12.2008, 20:44
|
#10
|
Временная регистрация
Регистрация: 13.05.2008
Сообщений: 88
Сказал спасибо: 2
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
[/quote]Хоть не кошерно.
Цитата:
|
Эт точно . Все компиляторы имеют свою специфику.
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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.
|
|