Easyelectronics.ru

Электроника для всех
Текущее время: 08 мар 2021, 08:54

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 31 авг 2013, 01:14 
Старожил
Аватара пользователя

Зарегистрирован: 30 янв 2010, 01:03
Сообщения: 650
Откуда: Херсон
Цитата:
WAITHIGH: ;ожидание напряжения высокого уровня на одном из пинов
JBC P0.0,Uol
JBC P0.1,Uol1
JBC P0.2,Uoh
JBC P0.3,Uoh1
JBC P0.4,Ipd
LJMP WAITHIGH ;если высокий уровень не обнаружен, то все еще ждем его


Такая программа работать будет, но незнаю на сколько долго. Не знаю твою схемотехнику.
А причина в том, что выводы портов представляют собой схему с открытым стоком. Получается монтажное И.
Строчка типа
Цитата:
JBC P0.0,Uol
после проверки бита сбрасывает его в ноль, т.е. выдает на соответствующий вывод лог. 0. А если в этот момент схема подающая сигнал начнет подавать лог. 1.?
И если выход этой схемы не типа открытый сток (коллектор), да еще вдруг буфферезирован, то порт твоего МК может выйти из строя. Делай выводы.
Show

_________________
Если руки золотые, то не важно с какого места они растут.
Изображение
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 01 сен 2013, 15:01 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
Уместно будет добавить про команды перехода (JMP, AJMP, SJMP, LJMP) и вызова (ACALL, LCALL).
Они имеют разную область видимости и не всегда очевидно где применить одну, где другую.
Ассемблер uVision A51 допускает использование обобщенного имени команд JMP и CALL, которые в процессе трансляции заменяются оптимальными по формату командами перехода или вызова.
Поэтому можно везде применять JMP и CALL, препроцесор заменит их оптимальными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 02 сен 2013, 10:27 
Только пришел

Зарегистрирован: 28 авг 2013, 00:06
Сообщения: 17
Цитата:
Ну зачем для главного цикла придумывать свое название WAITHIGH?

Чтобы уже распутаться. start и main НЕ служебные слова? А Prog? Я просто из записи не понимаю, какой кусок кода мы относим к data.
_____________________________________________________
Цитата:
А если в этот момент схема подающая сигнал начнет подавать лог. 1.?

Да, такое может быть. Заменю на JB.
_____________________________________________________
anakost писал(а):
Уместно будет добавить про команды перехода (JMP, AJMP, SJMP, LJMP) и вызова (ACALL, LCALL).
Они имеют разную область видимости и не всегда очевидно где применить одну, где другую.
Ассемблер uVision A51 допускает использование обобщенного имени команд JMP и CALL, которые в процессе трансляции заменяются оптимальными по формату командами перехода или вызова.
Поэтому можно везде применять JMP и CALL, препроцесор заменит их оптимальными.

Понял. Но только ведь CALL нет в наборе команд для 8051.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 02 сен 2013, 10:40 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 5097
Откуда: Кемеровская область, Киселевск
Не надоело на асме писать?

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 02 сен 2013, 12:12 
Только пришел

Зарегистрирован: 28 авг 2013, 00:06
Сообщения: 17
Так я первый раз вообще пишу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 02 сен 2013, 13:02 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
sery писал(а):
Понял. Но только ведь CALL нет в наборе команд для 8051.
"CALL", "ACALL", "LCALL" - это мнемонические имена, т.е.зависят от применяемого Ассемблера. Вам же написали:
anakost писал(а):
Ассемблер uVision A51 допускает использование обобщенного имени команд JMP и CALL, которые в процессе трансляции заменяются оптимальными по формату командами перехода или вызова.
Поэтому можно везде применять JMP и CALL, препроцесор заменит их оптимальными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 02 сен 2013, 14:25 
Только пришел

Зарегистрирован: 28 авг 2013, 00:06
Сообщения: 17
Аа, понял!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 02 сен 2013, 22:09 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
sery писал(а):
Чтобы уже распутаться. start и main НЕ служебные слова? А Prog? Я просто из записи не понимаю, какой кусок кода мы относим к data...

Start и Main это обычные метки которыми начинаются секции инициализации и главного цикла. Их имена не зарезервированы, они общеприняты. Prog это имя кодового сегмента, может быть любым подходящим по смыслу к тому что делает код. При желании можно дать и бессмысленное имя.
У вас в голове полная каша, к data мы ничего не можем относить, т.к. этот сегмент не обьявлен и не задействован. Ну нет у вас переменных...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 04 сен 2013, 15:25 
Только пришел

Зарегистрирован: 28 авг 2013, 00:06
Сообщения: 17
мм, про дату и код я просто ошибся. что у меня переменных нет это я помню.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 04 сен 2013, 18:21 
Только пришел

Зарегистрирован: 28 авг 2013, 00:06
Сообщения: 17
Еще вот непонятно. Надо бы проверить, как работает юарт, таймеры. Ну еще можно флэш-память, но в последний момент,т.к. мне кажется, это самое сложное.
Вот с юартом. Хочу просто с ножки TX передать что-то через, грубо говоря, перемычку, получить это на RX, сравнить. если полученное равно отправленному, то выставить соответствующий флаг.
Смотрю пример. И, я так понимаю, мне в основном интересны только две строчки:
Код:
MOV A,SBUF                  ; read data from uart
MOV SBUF,A             ; write same data to uart


Получается, для этого код будет выглядеть примерно так?
Код:
MOV SCON,#50h;                 /* uart in mode 1 (8 bit), REN=1 */
в этой строчке, судя по всему, надо в аккумулятор поместить передаваемое нечто
MOV SBUF,A             ; write same data to uart
MOV A,SBUF                  ; read data from uart
а в этой строчке как-то сравнить полученное с тем, что передавали (вот правда нет противоположного CJNE)
выставить флаг


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 04 сен 2013, 20:30 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4383
Откуда: г. Липецк
sery писал(а):
Еще вот непонятно. Надо бы проверить...

Именно для этого существуют средства моделирования и симуляции электронных схем. Применительно к МК это Proteus. Серию at89c51 он поддерживает полностью. Если бы выложили проект в Proteus, помощь была бы конкретнее. А пока вот бы, надо бы...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Код для at89c51 в keil uvision
СообщениеДобавлено: 11 сен 2013, 01:36 
Здравствуйте!

Зарегистрирован: 11 сен 2013, 01:27
Сообщения: 1
sery, все же советую писать на Си. Сэкономленное время лучше потратьте на изучение контроллера и других штук. При этом в итоге можно получить также очень компактный и быстрый бинарник, если иметь прямые руки и почаще заглядывать в отладчик, что там из вашего сишного кода получается на выходе.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  
cron

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB