Помогите с устройством на ATmega128

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Помогите с устройством на ATmega128

Сообщение gerasik »

Необходимо разработать устройство для перевода трехзначного числа десятеричной системы счисления в шеснадцатиричную. На Atmega128 c клавиатурой и цифровым дисплеем.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите с устройством на ATmega128

Сообщение BOB51 »

А зачем для преобразования трехзначного целого в hex мегу 128ю ставить?
даже при "полной" клаве в 16 кноп??? :shock: :shock:
Реклама
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Re: Помогите с устройством на ATmega128

Сообщение gerasik »

BOB51 писал(а):А зачем для преобразования трехзначного целого в hex мегу 128ю ставить?
даже при "полной" клаве в 16 кноп??? :shock: :shock:
Что б я знал) Курсач... Можешь помочь?(
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Помогите с устройством на ATmega128

Сообщение Engineer_Keen »

Вариант раз (помогите сделать): чтобы помочь, нужно конкретно знать в каком месте проблема, что именно не получается (ответ "все не получается" не принимается или подразумевает переход к варианту два).
Вариант два (нужно сделать): это в другой раздел.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите с устройством на ATmega128

Сообщение BOB51 »

gerasik писал(а):
BOB51 писал(а):А зачем для преобразования трехзначного целого в hex мегу 128ю ставить?
даже при "полной" клаве в 16 кноп??? :shock: :shock:
Что б я знал) Курсач... Можешь помочь?(
Такой курсач надо бы самому писать, или в "стол заказов" ( Есть работа http://radiokot.ru/forum/viewforum.php?f=53 ).
:tea:
Я работаю токмо на ассемблере и под макет, а мега128 ноне уж слишком дорогое удовольсвие для "просто поиграться".
Реклама
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Re: Помогите с устройством на ATmega128

Сообщение gerasik »

BOB51 писал(а): Я работаю токмо на ассемблере и под макет, а мега128 ноне уж слишком дорогое удовольсвие для "просто поиграться".
Вот мне ещё и на ассемблере код программы написать надо, а с чего начать разрабатывать не знаю, да и с ассемблером туговато(
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите с устройством на ATmega128

Сообщение BOB51 »

Сапсем плох однако... :facepalm:
А хоть чего знаеш-то, студенто? :roll:
В инете сканов умных книг весьма много сейчас
Токхейм Р.
Основы цифровой электроники: Пер. с англ.-М.:
Мир, 1988.-392 с, ил.

Двухтомник Искусство схемотехники Хоровиц/Хилл, 4-х томник курс цифровой электроники от Й. Янсена, Тищенки - Микроэвм своими руками, ну и по АВРкам - так вообще немеряно...
Могу литературки подкинуть - на Вашу флешку...
Касательно ассемблера - нормальный язык... ну немного "нудотный" и приближен к конкретному железу, но работать вполне сносно.
8)
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Re: Помогите с устройством на ATmega128

Сообщение gerasik »

BOB51 писал(а):Сапсем плох однако... :facepalm:
А хоть чего знаеш-то, студенто? :roll:
В инете сканов умных книг весьма много сейчас
Токхейм Р.
Основы цифровой электроники: Пер. с англ.-М.:
Мир, 1988.-392 с, ил.

Двухтомник Искусство схемотехники Хоровиц/Хилл, 4-х томник курс цифровой электроники от Й. Янсена, Тищенки - Микроэвм своими руками, ну и по АВРкам - так вообще немеряно...
Могу литературки подкинуть - на Вашу флешку...
Касательно ассемблера - нормальный язык... ну немного "нудотный" и приближен к конкретному железу, но работать вполне сносно.
8)
Боюсь мне не осилить столько литературы за 2-3 недели.(
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Помогите с устройством на ATmega128

Сообщение pyzhman »

Могу помочь. Напишите в личку поподробнее.
Docendo discimus
Аватара пользователя
Eugene.Negrobov
Мучитель микросхем
Сообщения: 472
Зарегистрирован: Ср фев 15, 2012 09:00:34
Откуда: Киев

Re: Помогите с устройством на ATmega128

Сообщение Eugene.Negrobov »

Типичный случай. Студент после лет заучиваний/сдаваний/забываний понял, что нихера не знает, и понял именно тогда, когда надо делать... Ну хорошо, что хоть не диплом. :)))

Могу сказать, что без опыта за 2 недели написать такую прогу нереально.
Кроме того не понятно даже тех. задание, что за цифровой дисплей? Какой тип клавиатуры? Почему Мега128?
I'm on a huge rock, flying through space!
orinoko

Re: Помогите с устройством на ATmega128

Сообщение orinoko »

причём в ТЗ нужна уже нарисованная схема, чтобы знать, что куда подключено, тип применяемых элементов и т.д. А если и этого нет, то это уже, извините, не помощь требуется.
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Re: Помогите с устройством на ATmega128

Сообщение gerasik »

orinoko писал(а):причём в ТЗ нужна уже нарисованная схема, чтобы знать, что куда подключено, тип применяемых элементов и т.д. А если и этого нет, то это уже, извините, не помощь требуется.
Увы это всё что в тз сказано( Сам в шоке
Аватара пользователя
Eugene.Negrobov
Мучитель микросхем
Сообщения: 472
Зарегистрирован: Ср фев 15, 2012 09:00:34
Откуда: Киев

Re: Помогите с устройством на ATmega128

Сообщение Eugene.Negrobov »

Ну, если вообще, то аппарат такой сделать запросто, как 2 байта переслать...
Тут лажа в том, что не зная, как прошивать, в чем и как программировать МК, как работать с периферией, вроде тех же дисплеев и клавиатур... Это почти нереально, тем более за 2 недели(уже меньше).
Смотри, лично у меня от момента, когда появилась мысль поковырять МК и до момента, когда я реально лично написал первые строки прошло... Ух, около года наверное. :shock:
Вот столько нужно, чтобы почитывая всякую фигню подготовить себя морально и физически.

Насчет задания, такую хреновину можно сделать на Tiny2313, если в задании обозначена Mega128- это говорит о том, что писавший задания дурак, и ничего о семействе AVR контроллеров не знает.
Пофигу даже на заоблачные параметры и цену Меги128, она же в tqfp64, а под такую плату сделать не каждый дурак сумеет.
В общем facepalm, напомнило тему такую-же, где студент, не знающий как работает осциллограф попросил написать за него дипломную, где надо было сделать цифровой осциллограф на МК, который будет подключатся к Android смартфону и туда выводить изображение. Это задание ему тоже препад дал. :o
I'm on a huge rock, flying through space!
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Помогите с устройством на ATmega128

Сообщение BOB51 »

Скорее всего есть проработанная методичка-документация и версии стендов на ту мегу в качестве учебных пособий. :)))
Студентов - то не на любительские "игрушки" готовить должны (хоша в этнтом отношении гложет дикое сомненье :))) ).
А насчет освоить конкретный МК из семейства - неделька максимум, ежли само семейство уже отработано плюс распечатка последнего даташита и томик Евстефеева как "опорно-русскоязычный" материал, естественно с методикой быстрого "разбора полетов".
С программой и общей схемотехникой посложнее - ежли ранее отработанные решения - срок минимальный, а ежли "в творческом выбрыке" так... все от литрусиков и вдохновителей зависит - это ежли в известных применениях. 8)
А в области мобильных и инет приложений - учить много надо (без базовой опоры, что энтим студентам на лекциях давать должны).
Там и программы и оборудование и постоянный тренаж требуется, да и материальная база раз в пару лет меняется.
Поползу дремать однако... :sleep:
orinoko

Re: Помогите с устройством на ATmega128

Сообщение orinoko »

gerasik писал(а):
orinoko писал(а):причём в ТЗ нужна уже нарисованная схема, чтобы знать, что куда подключено, тип применяемых элементов и т.д. А если и этого нет, то это уже, извините, не помощь требуется.
Увы это всё что в тз сказано( Сам в шоке
Тут вопрос вот в чём. Перед написанием непосредственно программы нужно иметь перед собой схему. И есть два варианта - либо есть некий студенческий стенд с этой периферией, и тогда нужно знать подключение; либо изделие разрабатывается "с нуля". Для второго варианта есть также три подварианта - схема должна быть спаяна и запущена, либо достаточно, чтобы работало например, в Протеусе, либо просто схема и исходник, а в доказательство работы сказать "мамой клянусь" :)
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Re: Помогите с устройством на ATmega128

Сообщение gerasik »

Необходимо выполнить перевод трехзначного десятичного числа в шестнадцатиричную систему счисления на Atmega128 с клавиатурой и дислеем lm016l
Вот пока что есть пытаюсь сделать вывод чисел с клавиатуры( Выводит крукозяблы
Последний раз редактировалось gerasik Чт май 15, 2014 03:14:56, всего редактировалось 2 раза.
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Re: Помогите с устройством на ATmega128

Сообщение gerasik »

Необходимо выполнить перевод трехзначного десятичного числа в шестнадцатиричную систему счисления на Atmega128 с клавиатурой и дислеем lm016l
Вот пока что есть пытаюсь сделать вывод чисел с клавиатуры( Выводит крукозяблы
Спойлер
.include "m128def.inc"
.cseg
.org 0000
jmp Init
Init:
ldi R16,0x00 ;Ôîðìèðóåì ñòåê, íà÷èíàÿ ñ ÿ÷åéêè ïàìÿòè 0õ400
out SPL,R16 ;Ìëàäøèé áàéò
ldi R17,0x04
out SPH,R17 ;Ñòàðøèé áàéò
ldi r28,0x00 ;Ðåãèñòð Ó - äëÿ çàïèñè íàæàòîé êëàâèøè â ïàìÿòü
ldi r29,0x02

;Âñïîìîãàòåëüíûå ðåãèñòðû:
clr r20
clr r21
clr r22
clr r23

;Èíèöèàëèçèðóåì äèñïëåé
sbi DDRD,5 ;Óñòàíàâëèâàåì íà âûâîä ëèíèþ R/W
sbi DDRD,7 ;Óñòàíàâëèâàåì íà âûâîä ëèíèþ RS
sbi DDRE,2 ;Óñòàíàâëèâàåì íà âûâîä ëèíèþ E
ldi R16,0b00001111 ;Óñòàíàâëèâàåì íà âûâîä ëèíèè DB7…DB4
sts DDRF,R16
cbi PortD,5 ; R/W = 0 ðåæèì çàïèñè â ÆÊ äèñïëåé (Write)
;Çàäåðæêà
clr r13
clr r14
dec R13
brne PC-1
dec R14
brne PC-3
cbi PortD,7 ;RS = 0 - óñòàíîâêà äèñïëåÿ íà ïðèåì êîìàíä
ldi R16,0b0011 ;Çàãðóæàåì DB7 = 0, DB6 = 0, DB5 = 1, DB4 = 1
sts PortF,R16 ;Îòïðàâëÿåì ýòî íà ÆÊ äèñïëåé
sbi PortE,2 ;Âêëþ÷àåì ðåæèì ïðèåìà
clr r13 ;Î÷èùàåì èñïîëüçóåìûé ðåãèñòð
dec r13 ;Óìåíüøàåì íà åäèíèöó
brne pc-1
cbi PortE,2 ;Âûêëþ÷àåì ðåæèì ïðèåìà
;Çàäåðæêà
dec R13
brne PC-1
dec R14
brne PC-3
ldi R16,0b0011 ;Îòïðàâëÿåì DB7=0,DB6=0,DB5=1.DB4=1
sts PortF,R16
sbi PortE,2 ;Âêëþ÷àåì ïðèåì
;Çàäåðæêà
call delay
cbi PortE,2 ;Âûêëþ÷àåì ïðèåì
call delay
ldi R16,0b0011 ;Îòïðàâëÿåì DB7 = 0,DB6 = 0,DB 5= 1, DB4=1
sts PortF,R16
sbi PortE,2
;Çàäåðæêà
call delay
cbi PortE,2
ldi R16,0b0010 ;Óñòàíîâêà 4-áèòíîãî èíòåðôåéñà:
;DB7 = 0, DB6 = 0, DB5 = 1, DB4 = 0
sts PortF,R16 ;Îòïðàâëÿåì
sbi PortE,2 ;Âêëþ÷àåì ïðèåì
;Çàäåðæêà
call delay
cbi PortE,2 ;Âûêëþ÷àåì ïðèåì
ldi R16,0b0010 ;Ïîäòâåðæäåíèå 4-õ áèòíîãî èíòåðôåéñà
;DB7 = 0, DB6 = 0, DB5 = 1, DB4 = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Óñòàíîâêà ñèìâîëüíîé ìàòðèöû 5 õ 7 ïèêñåëåé
ldi R16,0b1000 ;N = 1, F = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Ãàøåíèå äèñïëåÿ
ldi R16,0b0000 ;DB7 = 0, DB6 = 0, DB5 = 0, DB4 =0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0b1000 ;Îòïðàâëÿåì D = 0, C = 0, B = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Óñòàíîâêà ðåæèìà ââîäà
ldi R16,0b0000
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0b0110 ;Îòïðàâëÿåì I/D = 1, S = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Âêëþ÷åíèå èíäèêàòîðà
ldi R16,0b0000
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0b1111 ;Îòïðàâëÿåì D = 1, C = 1, B = 1
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Êîíåö èíèöèàëèçàöèè




/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
call lcd_1st_line
start: ;Âûâîä èíôîðìàöèè íà äèñïëåé

out portC,R26 ;Îòïðàâêà íîìåðà ðàçðÿäà
ld r20,x ;Çàãðóçêà îáðàçà âûâîäèìîãî ñèìâîëà
out portA,R20 ;Îòïðàâêà îáðàçà íà ïîðò
cbi portC,3 ;Ôîðìèðîâàíèå îòðèöàòåëüíîãî ôðîíòà
sbi portC,3
dec r25 ;Çàäåðæêà
brne pc-1
ldi R20,0xFF ;Ãàøåíèå èíäèêàòîðà
out portA,R20
cbi portC,3
sbi portc,3
in R16,pinC ;Çàãðóçêà èç ïîðòà Ñ èíôîðìàöèè î íàæàòèè êëàâè-øè
;Ìàñêè äëÿ ïðåäîòâðàùåíèÿ óñòàíîâêè ëèøíèõ áèòîâ
andi r16,0b11100000
andi r26,0b00001111
or r16,r26 ;Ñîåäèíåíèå ðåãèñòðà îòïðàâêè è ðåãèñòðà ïðèåìà
mov r17,r16 ;Êîïèðîâàíèå ýòîãî êîäà âî âñïîìîãàòåëüíûé ðå-ãèñòð

;Ïðîâåðêà íàëè÷èÿ ñèãíàëà íàæàòîé êëàâèøè
andi r17,0b11100000
brne signal ;Åñëè ïîëó÷åí íå íîëü - ñèãíàë åñòü, åñëè íîëü - íåò
inc r26 ;Ïåðåõîä íà ñëåäóþùèé ðàçðÿä äèñïëåÿ è ñòîëáöà
;êëàâèàòóðû
andi r26,7 ;Îãðàíè÷åíèå - íå áîëüøå 8
jmp start ;Âîçâðàò íà ñòàðò





/////////////////////ïðîâåðêà ñèãíàëà
signal: ;Åñëè ñèãíàë ñ êëàâèàòóðû åñòü:
cpi r16,0x43 ;Ñðàâíèâàåì ïîëó÷åííûé êîä ñ êîäîì êëàâèøè 0
breq nol ;Åñëè êîä ñîâïàë, ïåðåõîä íà çàïèñü îáðàçà, åñëè íå
;ñîâïàë - ïðîâåðÿåì äàëüøå
cpi r16,0x22
breq odin
cpi r16,0x42
breq dva
cpi r16,0x82
breq tri
cpi r16,0x21
breq chetiri
cpi r16,0x41
breq piati
cpi r16,0x81
breq shesti
cpi r16,0x20
breq sem
cpi r16,0x40
breq vosem
ldi r16,0x80
breq deviati;Åñëè íè îäèí êîä íå ñîâïàë - âîçâðàùåíèå íà ñòàðò
inc r26 ;Ïåðåõîä íà ñëåäóþùèé ðàçðÿä äèñïëåÿ\ñòîëáöà
;êëàâèàòóðû
andi r26,7 ;Îãðàíè÷åíèå - íå áîëüøå 8

jmp start

/////////////////////////öèôðû
nol:
ldi r20,30
jmp lcd_print_symbol
odin:
ldi r20,31
jmp lcd_print_symbol
dva:
ldi r20,32
jmp lcd_print_symbol
tri:
ldi r20,33
jmp lcd_print_symbol
chetiri:
ldi r20,34
jmp lcd_print_symbol
piati:
ldi r20,35
jmp lcd_print_symbol
shesti:
ldi r20,36
jmp lcd_print_symbol
sem:
ldi r20,37
jmp lcd_print_symbol
vosem:
ldi r20,38
jmp lcd_print_symbol
deviati:
ldi r20,39
jmp lcd_print_symbol
aaaa:
ldi r20,41
jmp lcd_print_symbol
bbbb:
ldi r20,42
jmp lcd_print_symbol
cccc:
ldi r20,43
jmp lcd_print_symbol
dddd:
ldi r20,44
jmp lcd_print_symbol
eeee:
ldi r20,45
jmp lcd_print_symbol
ffff:
ldi r20,46
jmp lcd_print_symbol
////////////////////////öèôðû

lcd_print_symbol: ;Çàïèñü ñèìâîëà íà ÆÊ äèñïëåé, êîä êîòîðîãî
;çàïèñàí â R20
sbi PortD,7 ;RS = 1 - óñòàíîâêà äèñïëåÿ íà ïðèåì ñèìâîëîâ
mov r16,r20 ;Êîïèðóåì âûâîäèìûé ñèìâîë â R16
andi r16,0xF0 ;Óäàëÿåì ìëàäøóþ òåòðàäó èç R16
swap r16 ;Ìåíÿåì ìåñòàìè òåòðàäû
sts PortF,R16 ;Îòïðàâëÿåì ýòó òåòðàäó íà äèñïëåé
sbi PortE,2 ;Âêëþ÷àåì ïðèåì
;Çàäåðæêà
clr r13
dec r13
brne pc-1
cbi PortE,2 ;Âûêëþ÷àåì ïðèåì
mov r16,r20 ;Ñíîâà êîïèðóåì â R16
andi r16,0x0F ;Óäàëÿåì ñòàðøóþ òåòðàäó
sts PortF,R16 ;Îòïðàâëÿåì åå íà äèñïëåé
sbi PortE,2 ;Âêëþ÷àåì ïðèåì
;Çàäåðæêà
clr r13
dec r13
brne pc-1
cbi PortE,2 ;Âûêëþ÷àåì ïðèåì
ret ;Âûõîä èç ïîäïðîãðàììû
lcd_1st_line:
;Óñòàíîâêà êóðñîðà â ëåâîì âåðõíåì óãëó 0x80
cbi PortD,7 ;RS = 0 - óñòàíîâêà äèñïëåÿ íà ïðèåì êîìàíä
ldi R16,0x8 ;Îòïðàâëÿåì ñòàðøóþ òåòðàäó êîìàíäû
sts PortF,R16 ;Îòïðàâëÿåì åå
sbi PortE,2 ;Àêòèâèðóåì ïðèåì äèñïëååì
call delay ;Çàäåðæêà
cbi PortE,2 ;Çàêðûâàåì ïðèåì
ldi R16,0x0 ;Çàãðóæàåì ìëàäøóþ òåòðàäó êîìàíäû
sts PortF,R16 ; Îîòïðàâëÿåì
sbi PortE,2 ;Àêòèâèðóåì ïðèåì
call delay ;Îæèäàåì
cbi PortE,2 ;Çàâåðøàåì ïðèåì
sbi PortD,7 ;Óñòàíîâêà äèñïëåÿ íà ïðèåì ñèìâîëîâ
ret
lcd_2nd_line:
;Óñòàíîâêà êóðñîðà â íà÷àëå âòîðîé ñòðîêè 0xC0
cbi PortD,7
ldi R16,0xC
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0x0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
sbi PortD,7
ret

delay: ;Ïîäïðîãðàììà çàäåðæêè
clr r14
dec r14
brne pc-1
ret
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Re: Помогите с устройством на ATmega128

Сообщение pcb »

Без проблем.
Какая сумма за энто дело?
В какой срок уложиться?

Личка.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
nirq
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Re: Помогите с устройством на ATmega128

Сообщение nirq »

Препаду налом - дешевле и честнее.
Он тебя учит отмазывает от солдатни, ты его за это наё благодаришь по понятиям.

Совесть...
что есть пытаюсь
Программа состоит из комментариев. А напечатать команды по комментариям сможет уже и обезьяна.
Программа должна быть читаемой. А прочитать читаемую программу сможешь уже и сам. А нечитаемая она никому не нужна, даже если случайно заработает.

Чтобы русские буквы скопировать, внимательно:

1. В окне-источнике переключаем клавиатуру на русский язык.
2. Ctrl+C из окна-источника.
3. Ctrl+V в окно-приёмник.
перевод трехзначного десятичного числа в шестнадцатиричную систему счисления на Atmega128 с клавиатурой и дислеем lm016l
http://www.google.ru/search?q=декомпозиция+задачи
gerasik
Родился
Сообщения: 13
Зарегистрирован: Вт апр 22, 2014 03:04:54

Re: Помогите с устройством на ATmega128

Сообщение gerasik »

nirq писал(а):Препаду налом - дешевле и честнее.
Он тебя учит отмазывает от солдатни, ты его за это наё благодаришь по понятиям.

Совесть...
что есть пытаюсь
Программа состоит из комментариев. А напечатать команды по комментариям сможет уже и обезьяна.
Программа должна быть читаемой. А прочитать читаемую программу сможешь уже и сам. А нечитаемая она никому не нужна, даже если случайно заработает.

Чтобы русские буквы скопировать, внимательно:

1. В окне-источнике переключаем клавиатуру на русский язык.
2. Ctrl+C из окна-источника.
3. Ctrl+V в окно-приёмник.
перевод трехзначного десятичного числа в шестнадцатиричную систему счисления на Atmega128 с клавиатурой и дислеем lm016l
http://www.google.ru/search?q=декомпозиция+задачи
Спасибо, понял как работает.вот что есть с комментами
Спойлерinclude "m128def.inc"
.cseg
.org 0000

Init:


ldi R16,0x00 ;Формируем стек, начиная с ячейки памяти 0х400

out SPL,R16 ;Младший байт
ldi R17,0x04
out SPH,R17 ;Старший байт
;Инициализируем дисплей
sbi DDRD,5 ;Устанавливаем на вывод линию R/W
sbi DDRD,7 ;Устанавливаем на вывод линию RS
sbi DDRE,2 ;Устанавливаем на вывод линию E
ldi R16,0b00001111 ;Устанавливаем на вывод линии DB7…DB4
sts DDRF,R16
cbi PortD,5 ; R/W = 0 режим записи в ЖК дисплей (Write)
;Задержка
clr r13
clr r14
dec R13
brne PC-1
dec R14
brne PC-3
cbi PortD,7 ;RS = 0 - установка дисплея на прием команд
ldi R16,0b0011 ;Загружаем DB7 = 0, DB6 = 0, DB5 = 1, DB4 = 1
sts PortF,R16 ;Отправляем это на ЖК дисплей
sbi PortE,2 ;Включаем режим приема
clr r13 ;Очищаем используемый регистр
dec r13 ;Уменьшаем на единицу
brne pc-1
cbi PortE,2 ;Выключаем режим приема
;Задержка
dec R13
brne PC-1
dec R14
brne PC-3
ldi R16,0b0011 ;Отправляем DB7=0,DB6=0,DB5=1.DB4=1
sts PortF,R16
sbi PortE,2 ;Включаем прием
;Задержка
call delay
cbi PortE,2 ;Выключаем прием
call delay
ldi R16,0b0011 ;Отправляем DB7 = 0,DB6 = 0,DB 5= 1, DB4=1
sts PortF,R16
sbi PortE,2
;Задержка
call delay
cbi PortE,2
ldi R16,0b0010 ;Установка 4-битного интерфейса:
;DB7 = 0, DB6 = 0, DB5 = 1, DB4 = 0
sts PortF,R16 ;Отправляем
sbi PortE,2 ;Включаем прием
;Задержка
call delay
cbi PortE,2 ;Выключаем прием
ldi R16,0b0010 ;Подтверждение 4-х битного интерфейса
;DB7 = 0, DB6 = 0, DB5 = 1, DB4 = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Установка символьной матрицы 5 х 7 пикселей
ldi R16,0b1000 ;N = 1, F = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Гашение дисплея
ldi R16,0b0000 ;DB7 = 0, DB6 = 0, DB5 = 0, DB4 =0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0b1000 ;Отправляем D = 0, C = 0, B = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Установка режима ввода
ldi R16,0b0000
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0b0110 ;Отправляем I/D = 1, S = 0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Включение индикатора
ldi R16,0b0000
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0b1111 ;Отправляем D = 1, C = 1, B = 1
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
;Конец инициализации
;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
.DEF rmp = R16 ;
.EQU pKeyOut = PORTB
.EQU pKeyInp = PINB
.EQU pKeyDdr = DDRB




START:
InitKey:
ldi rmp,0b01110000
out pKeyDdr,rmp
ldi rmp,0b00001111
out pKeyOut,rmp

AnyKey:
ldi rmp,0b00001111 ; PB4..PB6(Col3..Col1)=0, pull-Up ????????? ??????????
; ?? ????? (PB0..PB3, Row4..Row1).
out pKeyOut,rmp ; ????????? ???????? PORTB
in rmp,pKeyInp ; ?????? ????????? ????? (Row4..Row1).
ori rmp,0b11110000 ; ?????????? ??? ?????????????? ???? ? ???. 1
cpi rmp,0b11111111 ; ??? ???? ? ???. 1?
breq NoKey ; ??, ?? ???? ?????? ?? ???? ?? ??????
;
; ????????????? ??????? ??????
;
ReadKey:
ldi ZH,HIGH(2*KeyTable) ; Z ????????? ?? ??????? ????? ??????
ldi ZL,LOW(2*KeyTable)
; ?????? ??????? 1 (Col1)
ldi rmp,0b00111111 ; PB6 = 0
out pKeyOut,rmp
in rmp,pKeyInp ; ?????? ?????
ori rmp,0b11110000 ; ???????????? ??????? ???
cpi rmp,0b11111111 ; ?????? ?????? ? ???? ????????
brne KeyRowFound ; ??????? ??????? ?????? ? ???? ???????
adiw ZL,4 ; ? ???? ??????? ?? ???? ???????, ??????????? Z
; ?? 4 ?????? ??????
; ?????? ??????? 2 (Col2)
ldi rmp,0b01011111 ; PB5 = 0
out pKeyOut,rmp
in rmp,pKeyInp ; ????? ?????? ?????
ori rmp,0b11110000 ; ????? ???????????? ??????? ???
cpi rmp,0b11111111 ; ?????? ?????? ? ???? ????????
brne KeyRowFound ; ??????? ??????? ?????? ? ???? ???????
adiw ZL,4 ; ? ???? ??????? ?? ???? ???????, ??????????? Z
; ?? 4 ?????? ??????
; ?????? ??????? 3 (Col3)
ldi rmp,0b01101111 ; PB4 = 0
out pKeyOut,rmp
in rmp,pKeyInp ; ????????? ?????? ?????
ori rmp,0b11110000 ; ????? ???????????? ??????? ???
cpi rmp,0b11111111 ; ?????? ?????? ? ???? ????????
breq NoKey ; ?????????? ????????????, ??? ?? ?????? ?????? ?? ? ?????
; ?? ????????
KeyRowFound: ; ?????? ???????, ??? ?????? ??????, ??????
; ???? ??????, ? ????? ??????
lsr rmp ; ????? ???. 0 ?????, ??? 0 ??? ???? ??????????
; ? ??????? ????????
brcc KeyFound ; ?????????? ???. 0, ??? ?????? ??? ??????? ???????
adiw ZL,1 ; ??????? ? ????????? ?????? ? ???? ???????
rjmp KeyRowFound ; ????????? ?????
KeyFound: ; ??????? ??????? ??????
lpm r26,z ; ????????? ?? ??????? ??? ?????? ? ??????? R0
rjmp KeyProc ; ?????????? ????????? ??????
NoKey:
rjmp start ; ?? ???? ??????? ??????? ??????
;
; ??????? ????? ?????? ??? ??????????????
;
KeyTable:
.DB 0x0A,0x07,0x04,0x01 ; ?????? ???????, ?????? *, 7, 4 ? 1
.DB 0x00,0x08,0x05,0x02 ; ?????? ???????, ?????? 0, 8, 5 ? 2
.DB 0x0B,0x39,0x06,0x03 ; ?????? ???????, ?????? #, 9, 6 ? 3









//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


















/////////////////////проверка сигнала
KeyProc: ;Если сигнал с клавиатуры есть:
cpi r26,0x00 ;Сравниваем полученный код с кодом клавиши 0
breq nol ;Если код совпал, переход на запись образа, если не совпал - проверяем дальше
cpi r26,0x01
breq odin
cpi r26,0x02
breq dva
cpi r26,0x03
breq tri
cpi r26,0x04
breq chetiri
cpi r26,0x05
breq piati
cpi r26,0x06
breq shesti
cpi r26,0x07
breq sem
cpi r26,0x08
breq vosem
ldi r26,0x39
breq deviati;Если ни один код не совпал - возвращение на старт
ldi r26,0x0A
breq zv
ldi r26,0x0B
breq resh

inc r26 ;Переход на следующий разряд дисплея\столбца
;клавиатуры
andi r26,7 ;Ограничение - не больше 8



/////////////////////////цифры
nol:
ldi r20,48
jmp lcd_print_symbol
odin:
ldi r20,49
jmp lcd_print_symbol
dva:
ldi r20,50
jmp lcd_print_symbol
tri:
ldi r20,51
jmp lcd_print_symbol
chetiri:
ldi r20,52
jmp lcd_print_symbol
piati:
ldi r20,53
jmp lcd_print_symbol
shesti:
ldi r20,54
jmp lcd_print_symbol
sem:
ldi r20,55
jmp lcd_print_symbol
vosem:
ldi r20,56
jmp lcd_print_symbol
deviati:
ldi r20,0x39
jmp lcd_print_symbol
aaaa:
ldi r20,0x41
jmp lcd_print_symbol
bbbb:
ldi r20,0x42
jmp lcd_print_symbol
cccc:
ldi r20,0x43
jmp lcd_print_symbol
dddd:
ldi r20,0x44
jmp lcd_print_symbol
eeee:
ldi r20,0x45
jmp lcd_print_symbol
ffff:
ldi r20,0x46
jmp lcd_print_symbol
zv:
ldi r20,0x2a
jmp lcd_print_symbol
resh:
ldi r20,0x23
jmp lcd_print_symbol
////////////////////////цифры

lcd_print_symbol: ;Запись символа на ЖК дисплей, код которого
;записан в R20
sbi PortD,7 ;RS = 1 - установка дисплея на прием символов
mov r16,r20 ;Копируем выводимый символ в R16
andi r16,0xF0 ;Удаляем младшую тетраду из R16
swap r16 ;Меняем местами тетрады
sts PortF,R16 ;Отправляем эту тетраду на дисплей
sbi PortE,2 ;Включаем прием
;Задержка
clr r13
dec r13
brne pc-1
cbi PortE,2 ;Выключаем прием
mov r16,r20 ;Снова копируем в R16
andi r16,0x0F ;Удаляем старшую тетраду
sts PortF,R16 ;Отправляем ее на дисплей
sbi PortE,2 ;Включаем прием
;Задержка
clr r13
dec r13
brne pc-1
cbi PortE,2 ;Выключаем прием
ret ;Выход из подпрограммы
lcd_1st_line:
;Установка курсора в левом верхнем углу 0x80
cbi PortD,7 ;RS = 0 - установка дисплея на прием команд
ldi R16,0x8 ;Отправляем старшую тетраду команды
sts PortF,R16 ;Отправляем ее
sbi PortE,2 ;Активируем прием дисплеем
call delay ;Задержка
cbi PortE,2 ;Закрываем прием
ldi R16,0x0 ;Загружаем младшую тетраду команды
sts PortF,R16 ; Оотправляем
sbi PortE,2 ;Активируем прием
call delay ;Ожидаем
cbi PortE,2 ;Завершаем прием
sbi PortD,7 ;Установка дисплея на прием символов
ret
lcd_2nd_line:
;Установка курсора в начале второй строки 0xC0
cbi PortD,7
ldi R16,0xC
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
ldi R16,0x0
sts PortF,R16
sbi PortE,2
call delay
cbi PortE,2
sbi PortD,7
ret

delay: ;Подпрограмма задержки
clr r14
dec r14
brne pc-1
ret
Ответить

Вернуться в «Умные мысли»