Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
11.01.2011, 14:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
|
Как вывести целиком значение
Как сделать чтоб выводилось целиком значение.
Если в место
( unsigned char mask = 0x80)
пишу
(unsigned char mask = 0x8000)
то совсем перестаёт работать.
PHP код:
|
//--------------------------------
unsigned int R06=0b0000111100001111;
//-----------------------------------
unsigned char pll_in(unsigned char data)
{ unsigned char mask = 0x80;
for ( ; mask; mask ››= 1)
{ DATA = data & mask;
klc = 1;
klc = 0;
DATA = 0; //
}
};
//--------------------------------------
void init_pll(void)
{
pll_in(R06);
};
|
может как то по очереди надо выводить?
Последний раз редактировалось sdsrem; 11.01.2011 в 14:13.
|
|
|
|
11.01.2011, 14:17
|
|
Временная регистрация
Регистрация: 04.04.2008
Сообщений: 49
Сказал спасибо: 29
Сказали Спасибо 10 раз(а) в 8 сообщении(ях)
|
Re: Как вывести целиком значение
число char это от 0 до 255(или 0x00 до 0xFF )
а вы в unsigned char mask = 0x8000 пытаетесь присвоить число int !!
|
|
|
|
11.01.2011, 14:18
|
|
Прописка
Регистрация: 09.11.2010
Сообщений: 102
Сказал спасибо: 4
Сказали Спасибо 28 раз(а) в 22 сообщении(ях)
|
Re: Как вывести целиком значение
Типы одинаковые сделай
Код:
|
unsigned char pll_in(unsigned char data)
{ unsigned char mask = 0x80; |
Код:
|
unsigned char pll_in(unsigned int data)
{ unsigned int mask = 0x8000; |
|
|
|
|
11.01.2011, 14:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
|
Re: Как вывести целиком значение
Сообщение от Serega_B
|
Типы одинаковые сделай
Код:
|
unsigned char pll_in(unsigned int data)
{ unsigned int mask = 0x8000; |
|
Так делаю клок выводится целиком 16 а данные только половио.
|
|
|
|
11.01.2011, 14:58
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: Как вывести целиком значение
Вы б хоть сказали, старшая или младшая половина, в чем проверяете - в железе или эмуляторе каком-нить. Листинг покажите.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
11.01.2011, 15:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
|
Re: Как вывести целиком значение
Сообщение от nml
|
Вы б хоть сказали, старшая или младшая половина, в чем проверяете - в железе или эмуляторе каком-нить. Листинг покажите.
|
Проверяю в протеусе, вот картинка.
|
|
|
|
11.01.2011, 15:31
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Как вывести целиком значение
А DATA у вас как объявлена, как char или как int?
|
|
|
|
11.01.2011, 15:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
|
Re: Как вывести целиком значение
Сообщение от st_1
|
А DATA у вас как объявлена, как char или как int?
|
PHP код:
|
unsigned int R06=0b1000111110001111;
//-----------------------------------
unsigned int pll_in(unsigned int data)
{ unsigned int mask = 0x8000;
for ( ; mask; mask ››= 1)
{ DATA = data & mask;
clk = 1;
clk = 0;
DATA = 0; //
}
};
|
Тоже int.
Это и интересно что клк есть а даты нет.
Последний раз редактировалось sdsrem; 11.01.2011 в 15:41.
|
|
|
|
11.01.2011, 16:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Как вывести целиком значение
Сообщение от sdsrem
|
[PHP]
Тоже int.
Это и интересно что клк есть а даты нет.
|
Если DATA объявлена как int, то непонятно как она на вывод то попадает. Есть подозрение что это CV и DATA задефайнена как PORTA.5 или что то подобное. Вообще если нужна реальная помощь, то и приводить надо все что относится к неработоспособному участку. Телепатов тут нет.
А вот если там все же PORTA.5 или что подобное, то:
Код:
|
unsigned int pll_in(unsigned int data)
{ unsigned int mask = 0x8000;
for ( ; mask; mask ››= 1)
{
if(data & mask) DATA = 1; else DATA = 0;
clk = 1;
clk = 0;
}
DATA = 0;
}; |
Иначе для старших восьми бит при приведении типа во время присваивания значение всегда будет 0.
|
|
|
|
11.01.2011, 16:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Как вывести целиком значение
Да и НЕЛЬЗЯ всё на эмуляторах.... Неужели-Трудно в железе это проверить? Питание- 2 провода+SPI+светодиод.........
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:36.
|
|