Easyelectronics.ru

Электроника для всех
Текущее время: 24 янв 2020, 06:23

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 08:37 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
ASM

ADD simv,temp1
результат сложения двух регистров всегда получается какое либо десятичное число от 1 по 7.
эти же числа должны преобразоваться в 6ти разрядные шестнадцатиричные числа, как пример - abh cdh efh 43h 23h 89h, как выражение, которых тоже семь
алгоритм
выражению abh cdh efh 43h 23h 89h присвоить значение десятичного числа от 1 по 7
результат сложения двух регистров, число от 1 по 7 сравнить с присвоенными - числа от 1 по 7
если не равно, переход на следующую строку в цикл
если равно, то загрузка в регистр simv соответствующего 6ти разрядного шестнадцатиричного числа десятичному числу от 1 по 7
какой написать код для AVR?


Последний раз редактировалось moto261 31 дек 2016, 08:45, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 08:42 
Старожил
Аватара пользователя

Зарегистрирован: 11 авг 2016, 20:52
Сообщения: 680
Откуда: GMT+6
moto261 писал(а):
какой написать код для AVR?
Понятный :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 13:25 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4134
Откуда: г. Липецк
moto261 писал(а):
ADD simv,temp1
результат сложения двух регистров всегда получается какое либо десятичное число от 1 по 7.

Откуда такой вывод?
Под десятичным обычно понимается число с BCD формате.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 13:27 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2634
Откуда: Санкт-Петербург
Ребята, а кто понял, что топикстартер написал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 14:15 
Старожил

Зарегистрирован: 06 июн 2016, 12:10
Сообщения: 619
aamonster писал(а):
Ребята, а кто понял, что топикстартер написал?

Он более-менее ясно так и написал "алгоритм" и далее сам алгоритм. В конце он просит код для AVR:
Цитата:
алгоритм
выражению abh cdh efh 43h 23h 89h присвоить значение десятичного числа от 1 по 7
результат сложения двух регистров, число от 1 по 7 сравнить с присвоенными - числа от 1 по 7
если не равно, переход на следующую строку в цикл
если равно, то загрузка в регистр simv соответствующего 6ти разрядного шестнадцатиричного числа десятичному числу от 1 по 7
какой написать код для AVR?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 14:45 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2634
Откуда: Санкт-Петербург
"Выражению присвоить значение" - это уже за пределами моего понимания. Как и загрузка шести байт в регистр на avr.
Imho, если топикстартер перепишет задачу понятным языком - она будет наполовину решена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 18:18 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
aamonster писал(а):
"Выражению присвоить значение" - это уже за пределами моего понимания. Как и загрузка шести байт в регистр на avr.
Imho, если топикстартер перепишет задачу понятным языком - она будет наполовину решена.


ldi simv,0x2A;
rcall Writes
LDI simv,0x2A
rcall Writes
LDI simv,0x42
rcall Writes
LDI simv,0x4F
rcall Writes
LDI simv,0x43
rcall Writes
LDI simv,0x4B
rcall Writes
LDI simv,0x2A
rcall Writes
LDI simv,0x2A
добавляет в строку, см png

xxx:
; mov Temp1,Temp; скопировать или перенести регистр Temp в Temp1

; andi Temp1,0b00001111; логическое И регистра с константой
; ldi simv,0x30; записать регистр simv со смещением 0x30 значения в регистр
; ADD simv,temp1; суммирование регистра temp1 с регистром simv
; rcall Writes ; Вывод символа на дисплей
;ret
типа макрос ххх выводит в любой год века правильно дни недели 1-7
воскресенью соответствует число 1, субботе 7
как указать массив символов на соответствующее число


Вложения:
31.png
31.png [ 13.73 Кб | Просмотров: 2224 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 19:01 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2634
Откуда: Санкт-Петербург
О, так гораздо понятнее!
Avr ассемблер я подзабыл, но основные приёмы, с помощью которых удобно решать задачку, можно подсмотреть в статье http://chipenable.ru/index.php/programm ... rimer.html
(Нагуглено по словам avr db directive).
Т.е. слова записать в .db (скажем, завершая каждое нулевым байтом - это удобно, да и 8 байт на слово тоже удобно), адрес нужного слова вычислить как z = address1 + (i-1)*8, где i - номер слова (естественно, умножение на 8 заменяется сложениями), потом в цикле lpm, если получили 0 - конец, иначе напечатать символ, увеличить z и продолжить цикл.

Прошу прощения за некоторую сумбурность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 31 дек 2016, 19:14 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
aamonster писал(а):
О, так гораздо понятнее!


Т.е. слова записать в .db

только в .cseg и только начиная с .org 744
; weekday_tab:
и видимо в dw
в часах
; рабочие регистры, используемые для отработки алгоритма

.def Temp = r18
.def Temp1 = r19
.def Temp2 = r20
.def button = r22
.def Simv = r23
.def Kur = r24
возможно в качестве индексного или адресного регистра используется r16
тогда .def Temp3 = r16


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 04:55 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
anakost писал(а):
moto261 писал(а):
ADD simv,temp1
результат сложения двух регистров всегда получается какое либо десятичное число от 1 по 7.

Откуда такой вывод?
Под десятичным обычно понимается число с BCD формате.


Вложения:
32.png
32.png [ 13.46 Кб | Просмотров: 2177 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 12:59 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4134
Откуда: г. Липецк
И что во вашему означает эта картинка?
Отсюда вовсе не следует что ассемблерная инструкция ADD научилась работать с десятичными (BCD) цифрами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 14:55 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
anakost писал(а):
И что во вашему означает эта картинка?
Отсюда вовсе не следует что ассемблерная инструкция ADD научилась работать с десятичными (BCD) цифрами.

есть переводчики
но даташиты переводят плохо
я пока никак не изучал даташиты контроллеров в этих часах
поэтому нужен для этой задачи пример готового кода
можно пока подождать, используя цифры, для дней недели
для которых я написал всего одну строку кода и они появились
пока нет возможности самому пытаться решать по моему непростую проблему


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 16:47 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
moto261 писал(а):
я пока никак не изучал даташиты контроллеров в этих часах
поэтому нужен для этой задачи пример готового кода

Вот ваял на ASMе, проект заглох почти в самом начале, но часы закончены. Индикатор другой, но преобразования Вы там найдете (код не претендует на идеальный). В архиве проект в протеусе.


Вложения:
clock.rar [203.66 Кб]
Скачиваний: 86
Clock-M168-N3310-ASM-.jpg
Clock-M168-N3310-ASM-.jpg [ 51.71 Кб | Просмотров: 2126 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 17:08 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
;*---* читаем значение дней *---------------------------*
;********************************************************
dey_COR: ldi count, 0
rjmp COR_Comm
;********************************************************
dey_COR ,COR_Comm подпрограммы, которые ещё надо найти
но информация полезна
;*---* читаем значение неделя *-------------------------*
;********************************************************
wic_COR: ldi count, 2
; rjmp COR_Comm
;********************************************************
исходники (часов на картинках/png) -проект в протеусе
там 10-20 строк кода надо добавить, чтобы появились символы


Вложения:
01 (3).rar [27.26 Кб]
Скачиваний: 75


Последний раз редактировалось moto261 01 янв 2017, 21:16, всего редактировалось 3 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 18:55 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
moto261 писал(а):
исходники часов на картинках -проект в протеусе
там 10-20 строк кода надо добавить, чтобы появились символы

Не понял, что имеете ввиду?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 19:50 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
lizard66 писал(а):
moto261 писал(а):
исходники часов на картинках -проект в протеусе
там 10-20 строк кода надо добавить, чтобы появились символы

Не понял, что имеете ввиду?

в исходники 01 (3).rar просто добавить код
и потому добавятся дни недели


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 22:23 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
moto261 писал(а):
в исходники 01 (3).rar просто добавить код
и потому добавятся дни недели

В «code.asm» перед выходом из процедуры «LSD:» (сразу после вывода года) вставить вызов «rcall prt_DAYw». Сама процедура под спойлером.

Show


Последний раз редактировалось lizard66 02 янв 2017, 00:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 01 янв 2017, 23:35 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
что то с кодом сделаю, сообщу результат
мнемоника mul не поддерживается 2313
http://evileg.com/ru/post/17/


Последний раз редактировалось moto261 02 янв 2017, 00:32, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 02 янв 2017, 00:29 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
moto261 писал(а):
мнемоника mul не поддерживается 2313

Тогда так:
Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 02 янв 2017, 05:11 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
что то с адресацией чтения из памяти
можно выбрать кнопками только воскр понед вторн


Вложения:
code.rar [106.92 Кб]
Скачиваний: 75
37.png
37.png [ 3.42 Кб | Просмотров: 2020 ]
39.png
39.png [ 7.76 Кб | Просмотров: 2020 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 02 янв 2017, 11:10 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
moto261 писал(а):
что то с адресацией чтения из памяти
можно выбрать кнопками только воскр понед вторн

Вот проверил, сравнивайте. День недели передвинул на позицию влево, чтоб "среда" поместилась и убрал один пробел после "цельсия", чтоб этому не мешал.


Вложения:
forum.rar [134.36 Кб]
Скачиваний: 85
scr.jpg
scr.jpg [ 105.41 Кб | Просмотров: 1999 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 02 янв 2017, 13:25 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
при запуске в протеусе устанавливается вторник
и дни крутятся между вторником понедельником

.db "**WSSS**"
.db "**PNNN**"
.db "**WTTT**"
.db "**SRRR**"
.db "**CHHH**"
.db "**PTTT**"
.db "**SBBB**",0
в реальных часах "**SRRR**" будет "**СРЕД**", "**PTTT** будет "**ПЯТН**
у меня физический индикатор поддерживает кириллицу
тч в коде будем ориентироваться на эти знаки
как должно быть в протеусе
при включении устанавливается текущий день недели понедельник
жмём 3 раза * и кнопками + или - и выбираем день, затем 4 раза * и входим в режим часов
в физических часах при включении было время 00:00 дата 01/01/01
дни - по дате 01/01/01


Последний раз редактировалось moto261 02 янв 2017, 14:15, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 02 янв 2017, 13:58 
Старожил
Аватара пользователя

Зарегистрирован: 16 окт 2011, 11:19
Сообщения: 853
Откуда: Харьков
moto261 писал(а):
при запуске в протеусе устанавливается вторник
и дни крутятся между вторником понедельником


Вспомнил, что у DS1307 дни недели считаются не 0-6, а 1-7. Поэтому для отображения необходимо после :

lds Temp, clock+3 ; возьмем день недели
andi Temp, $7

Надо вычесть «1»:

subi Temp, 1

И учесть эту особенность при коррекции дней недели.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 02 янв 2017, 14:06 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
lizard66 писал(а):
moto261 писал(а):
при запуске в протеусе устанавливается вторник
и дни крутятся между вторником понедельником


Вспомнил, что у DS1307 дни недели считаются не 0-6, а 1-7. Поэтому для отображения необходимо после :

lds Temp, clock+3 ; возьмем день недели
andi Temp, $7

Надо вычесть «1»:

subi Temp, 1

И учесть эту особенность при коррекции дней недели.

выводит в любой год века правильно дни недели 1-7
воскресенью соответствует число 1, субботе 7
я писал раньше


Последний раз редактировалось moto261 02 янв 2017, 14:24, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование и вывод симвoлов
СообщениеДобавлено: 02 янв 2017, 14:20 
Старожил

Зарегистрирован: 23 фев 2016, 22:10
Сообщения: 750
с вашей латиницей всё ок
выбор дней недели не работает, но он не нужен,тк при запуске часов он установится в зависимости от даты
проверю со своими знаками
Show

Show

где ошибка


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


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


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

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


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

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

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