12.02.2008, 15:50
|
|
Прописка
Регистрация: 14.10.2006
Адрес: Ростов-на-Дону
Сообщений: 113
Сказал спасибо: 14
Сказали Спасибо 32 раз(а) в 21 сообщении(ях)
|
Сообщение от varostov
|
Подскажите, пожалуйста, пользовался ли кто-нибудь квалификатором addressmod? По мануалу, он позволяет изящно обращаться к любой внешней памяти (intEEPROM, extEEPROM, extRAM) как к обычным переменным. Но сколько я не бился - функционирует только наполовину - запись в EEPROM производит, а вместо чтения вписывает в переменную фактический адрес ячейки в EEPROM. Описание в мануале и хелпе: Data Definitions Non-RAM Data Definitions. Проект прилагаю.
|
Прошу прощения у автора поста и знатоков, но хотелось бы услышать хотя бы какой-то ответ по вопросу.
Прикрепленный файл: 67289.rar
|
|
|
|
22.02.2008, 21:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Вопрос отсюда(раз мне сказали что не причем протеус) https://kazus.ru/forum/topic_10062-180.html
Дело в том что он вообще не заходит в этот кусок кода никогда,так как не происходит конфликта.
urry1 почему говориш что нет задержки?
Код:
|
if(temp==0) //конфликт
//выдача бита идет в зависимости от conf
if(conf==0) //то выдаем на шину ноль
{
{
output_low(input_1w);
delay_us(60); //вот задержка!!!!
set_tris(0x01);
}
else
{
output_low(input_1w);
set_tris(0x01);
delay_us(60);
}
} |
Вот откомпилированый проект.
Прикрепленный файл: 265979.rar
|
|
|
|
22.02.2008, 22:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Точно,скобки не учел и теперь адреса несовпадают,буду искать дальше в чем дело,странно
-- Прилагается рисунок: --
|
|
|
|
22.02.2008, 22:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Все разобрался,стер датчик один и поставил опять и все заработала.
|
|
|
|
22.02.2008, 23:49
|
|
Временная регистрация
Регистрация: 11.12.2007
Сообщений: 79
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Разрешите не поверить... Как пишется развилка ? Ты пишешь старший бит темпа в массив, но при развилке он у тебя равен 0 в любом раскладе, следовательно пишется одинако что один серийник, что другой.
if(temp==0) //конфликт
//выдача бита идет в зависимости от conf
{
if(conf==0) //то выдаем на шину ноль
{
output_low(input_1w);
delay_us(60);
set_tris(0x01);
//-----------------------------------------
delay_us(60);
//-------------------------------------------
}
else
{
output_low(input_1w);
set_tris(0x01);
delay_us(60);
///-----------------------------------
temp|=0x80;
//Искусственно взводим, чтоб в серийный записало прально
//--------------------------------
}
}
|
|
|
|
23.02.2008, 06:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Да да точно urry1,спасиб,сейчас проверю.
Не в обиду ассамблеру,но написать на нем для меня сейчас просто ужас,после Си.
|
|
|
|
23.02.2008, 11:33
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Сообщение от CERGEI1982
|
Да да точно urry1,спасиб,сейчас проверю.
Не в обиду ассамблеру,но написать на нем для меня сейчас просто ужас,после Си.
|
![Валяюсь от смеха](images/smilies/icon_biggrin.gif) Вспоминаю чьито слова про С , годичной давности....
|
|
|
|
23.02.2008, 12:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
|
|
|
|
05.03.2008, 02:52
|
|
Прохожий
Регистрация: 17.06.2005
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Подскажите кто знает! Нужно проверить кнопку, при нажатии увеличить значение переменной h, но при достижении 1000 цикл реагирования на кнопку нужно остановить. А по этому алгоритму значение h сбрасывается до 20 и начинается сначала.
Код:
|
#include ‹16F676.h›
#use delay(clock=4000000)
#fuses INTRC, NOWDT
void main(void)
{
char t=2000;
char h=20;
while(1)
{
if( h‹=1000 && input(PIN_A5)==0) // если нажата кнопка S_3
{
h = h+10;
}
output_high(PIN_C1);
delay_ms(h);
output_low(PIN_C1);
delay_ms(t);
}
} |
|
|
|
|
05.03.2008, 19:13
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
У тебя h char , максимум 255 но не 1000...
И будь добр впредь - есть кнопочка код...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:08.
|
|