Помогите с устройством на ATmega128
Помогите с устройством на ATmega128
Необходимо разработать устройство для перевода трехзначного числа десятеричной системы счисления в шеснадцатиричную. На Atmega128 c клавиатурой и цифровым дисплеем.
- Реклама
Re: Помогите с устройством на ATmega128
А зачем для преобразования трехзначного целого в hex мегу 128ю ставить?
даже при "полной" клаве в 16 кноп???

даже при "полной" клаве в 16 кноп???
Re: Помогите с устройством на ATmega128
Что б я знал) Курсач... Можешь помочь?(BOB51 писал(а):А зачем для преобразования трехзначного целого в hex мегу 128ю ставить?
даже при "полной" клаве в 16 кноп???![]()
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Помогите с устройством на ATmega128
Вариант раз (помогите сделать): чтобы помочь, нужно конкретно знать в каком месте проблема, что именно не получается (ответ "все не получается" не принимается или подразумевает переход к варианту два).
Вариант два (нужно сделать): это в другой раздел.
Вариант два (нужно сделать): это в другой раздел.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Re: Помогите с устройством на ATmega128
Такой курсач надо бы самому писать, или в "стол заказов" ( Есть работа http://radiokot.ru/forum/viewforum.php?f=53 ).gerasik писал(а):Что б я знал) Курсач... Можешь помочь?(BOB51 писал(а):А зачем для преобразования трехзначного целого в hex мегу 128ю ставить?
даже при "полной" клаве в 16 кноп???![]()
Я работаю токмо на ассемблере и под макет, а мега128 ноне уж слишком дорогое удовольсвие для "просто поиграться".
- Реклама
Re: Помогите с устройством на ATmega128
Вот мне ещё и на ассемблере код программы написать надо, а с чего начать разрабатывать не знаю, да и с ассемблером туговато(BOB51 писал(а): Я работаю токмо на ассемблере и под макет, а мега128 ноне уж слишком дорогое удовольсвие для "просто поиграться".
Re: Помогите с устройством на ATmega128
Сапсем плох однако...
А хоть чего знаеш-то, студенто?
В инете сканов умных книг весьма много сейчас
Токхейм Р.
Основы цифровой электроники: Пер. с англ.-М.:
Мир, 1988.-392 с, ил.
Двухтомник Искусство схемотехники Хоровиц/Хилл, 4-х томник курс цифровой электроники от Й. Янсена, Тищенки - Микроэвм своими руками, ну и по АВРкам - так вообще немеряно...
Могу литературки подкинуть - на Вашу флешку...
Касательно ассемблера - нормальный язык... ну немного "нудотный" и приближен к конкретному железу, но работать вполне сносно.

А хоть чего знаеш-то, студенто?
В инете сканов умных книг весьма много сейчас
Токхейм Р.
Основы цифровой электроники: Пер. с англ.-М.:
Мир, 1988.-392 с, ил.
Двухтомник Искусство схемотехники Хоровиц/Хилл, 4-х томник курс цифровой электроники от Й. Янсена, Тищенки - Микроэвм своими руками, ну и по АВРкам - так вообще немеряно...
Могу литературки подкинуть - на Вашу флешку...
Касательно ассемблера - нормальный язык... ну немного "нудотный" и приближен к конкретному железу, но работать вполне сносно.
Re: Помогите с устройством на ATmega128
Боюсь мне не осилить столько литературы за 2-3 недели.(BOB51 писал(а):Сапсем плох однако...![]()
А хоть чего знаеш-то, студенто?![]()
В инете сканов умных книг весьма много сейчас
Токхейм Р.
Основы цифровой электроники: Пер. с англ.-М.:
Мир, 1988.-392 с, ил.
Двухтомник Искусство схемотехники Хоровиц/Хилл, 4-х томник курс цифровой электроники от Й. Янсена, Тищенки - Микроэвм своими руками, ну и по АВРкам - так вообще немеряно...
Могу литературки подкинуть - на Вашу флешку...
Касательно ассемблера - нормальный язык... ну немного "нудотный" и приближен к конкретному железу, но работать вполне сносно.
- Eugene.Negrobov
- Мучитель микросхем
- Сообщения: 472
- Зарегистрирован: Ср фев 15, 2012 09:00:34
- Откуда: Киев
Re: Помогите с устройством на ATmega128
Типичный случай. Студент после лет заучиваний/сдаваний/забываний понял, что нихера не знает, и понял именно тогда, когда надо делать... Ну хорошо, что хоть не диплом.
Могу сказать, что без опыта за 2 недели написать такую прогу нереально.
Кроме того не понятно даже тех. задание, что за цифровой дисплей? Какой тип клавиатуры? Почему Мега128?
Могу сказать, что без опыта за 2 недели написать такую прогу нереально.
Кроме того не понятно даже тех. задание, что за цифровой дисплей? Какой тип клавиатуры? Почему Мега128?
I'm on a huge rock, flying through space!
-
orinoko
Re: Помогите с устройством на ATmega128
причём в ТЗ нужна уже нарисованная схема, чтобы знать, что куда подключено, тип применяемых элементов и т.д. А если и этого нет, то это уже, извините, не помощь требуется.
Re: Помогите с устройством на ATmega128
Увы это всё что в тз сказано( Сам в шокеorinoko писал(а):причём в ТЗ нужна уже нарисованная схема, чтобы знать, что куда подключено, тип применяемых элементов и т.д. А если и этого нет, то это уже, извините, не помощь требуется.
- Eugene.Negrobov
- Мучитель микросхем
- Сообщения: 472
- Зарегистрирован: Ср фев 15, 2012 09:00:34
- Откуда: Киев
Re: Помогите с устройством на ATmega128
Ну, если вообще, то аппарат такой сделать запросто, как 2 байта переслать...
Тут лажа в том, что не зная, как прошивать, в чем и как программировать МК, как работать с периферией, вроде тех же дисплеев и клавиатур... Это почти нереально, тем более за 2 недели(уже меньше).
Смотри, лично у меня от момента, когда появилась мысль поковырять МК и до момента, когда я реально лично написал первые строки прошло... Ух, около года наверное.
Вот столько нужно, чтобы почитывая всякую фигню подготовить себя морально и физически.
Насчет задания, такую хреновину можно сделать на Tiny2313, если в задании обозначена Mega128- это говорит о том, что писавший задания дурак, и ничего о семействе AVR контроллеров не знает.
Пофигу даже на заоблачные параметры и цену Меги128, она же в tqfp64, а под такую плату сделать не каждый дурак сумеет.
В общем facepalm, напомнило тему такую-же, где студент, не знающий как работает осциллограф попросил написать за него дипломную, где надо было сделать цифровой осциллограф на МК, который будет подключатся к Android смартфону и туда выводить изображение. Это задание ему тоже препад дал.
Тут лажа в том, что не зная, как прошивать, в чем и как программировать МК, как работать с периферией, вроде тех же дисплеев и клавиатур... Это почти нереально, тем более за 2 недели(уже меньше).
Смотри, лично у меня от момента, когда появилась мысль поковырять МК и до момента, когда я реально лично написал первые строки прошло... Ух, около года наверное.
Вот столько нужно, чтобы почитывая всякую фигню подготовить себя морально и физически.
Насчет задания, такую хреновину можно сделать на Tiny2313, если в задании обозначена Mega128- это говорит о том, что писавший задания дурак, и ничего о семействе AVR контроллеров не знает.
Пофигу даже на заоблачные параметры и цену Меги128, она же в tqfp64, а под такую плату сделать не каждый дурак сумеет.
В общем facepalm, напомнило тему такую-же, где студент, не знающий как работает осциллограф попросил написать за него дипломную, где надо было сделать цифровой осциллограф на МК, который будет подключатся к Android смартфону и туда выводить изображение. Это задание ему тоже препад дал.
I'm on a huge rock, flying through space!
Re: Помогите с устройством на ATmega128
Скорее всего есть проработанная методичка-документация и версии стендов на ту мегу в качестве учебных пособий.
Студентов - то не на любительские "игрушки" готовить должны (хоша в этнтом отношении гложет дикое сомненье
).
А насчет освоить конкретный МК из семейства - неделька максимум, ежли само семейство уже отработано плюс распечатка последнего даташита и томик Евстефеева как "опорно-русскоязычный" материал, естественно с методикой быстрого "разбора полетов".
С программой и общей схемотехникой посложнее - ежли ранее отработанные решения - срок минимальный, а ежли "в творческом выбрыке" так... все от литрусиков и вдохновителей зависит - это ежли в известных применениях.
А в области мобильных и инет приложений - учить много надо (без базовой опоры, что энтим студентам на лекциях давать должны).
Там и программы и оборудование и постоянный тренаж требуется, да и материальная база раз в пару лет меняется.
Поползу дремать однако...
Студентов - то не на любительские "игрушки" готовить должны (хоша в этнтом отношении гложет дикое сомненье
А насчет освоить конкретный МК из семейства - неделька максимум, ежли само семейство уже отработано плюс распечатка последнего даташита и томик Евстефеева как "опорно-русскоязычный" материал, естественно с методикой быстрого "разбора полетов".
С программой и общей схемотехникой посложнее - ежли ранее отработанные решения - срок минимальный, а ежли "в творческом выбрыке" так... все от литрусиков и вдохновителей зависит - это ежли в известных применениях.
А в области мобильных и инет приложений - учить много надо (без базовой опоры, что энтим студентам на лекциях давать должны).
Там и программы и оборудование и постоянный тренаж требуется, да и материальная база раз в пару лет меняется.
Поползу дремать однако...
-
orinoko
Re: Помогите с устройством на ATmega128
Тут вопрос вот в чём. Перед написанием непосредственно программы нужно иметь перед собой схему. И есть два варианта - либо есть некий студенческий стенд с этой периферией, и тогда нужно знать подключение; либо изделие разрабатывается "с нуля". Для второго варианта есть также три подварианта - схема должна быть спаяна и запущена, либо достаточно, чтобы работало например, в Протеусе, либо просто схема и исходник, а в доказательство работы сказать "мамой клянусь"gerasik писал(а):Увы это всё что в тз сказано( Сам в шокеorinoko писал(а):причём в ТЗ нужна уже нарисованная схема, чтобы знать, что куда подключено, тип применяемых элементов и т.д. А если и этого нет, то это уже, извините, не помощь требуется.
Re: Помогите с устройством на ATmega128
Необходимо выполнить перевод трехзначного десятичного числа в шестнадцатиричную систему счисления на Atmega128 с клавиатурой и дислеем lm016l
Вот пока что есть пытаюсь сделать вывод чисел с клавиатуры( Выводит крукозяблы
Вот пока что есть пытаюсь сделать вывод чисел с клавиатуры( Выводит крукозяблы
Последний раз редактировалось gerasik Чт май 15, 2014 03:14:56, всего редактировалось 2 раза.
Re: Помогите с устройством на ATmega128
Необходимо выполнить перевод трехзначного десятичного числа в шестнадцатиричную систему счисления на 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
Без проблем.
Какая сумма за энто дело?
В какой срок уложиться?
Личка.
Какая сумма за энто дело?
В какой срок уложиться?
Личка.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Re: Помогите с устройством на ATmega128
Препаду налом - дешевле и честнее.
Он тебя учит отмазывает от солдатни, ты его за это наё благодаришь по понятиям.
Совесть...
Программа должна быть читаемой. А прочитать читаемую программу сможешь уже и сам. А нечитаемая она никому не нужна, даже если случайно заработает.
Чтобы русские буквы скопировать, внимательно:
1. В окне-источнике переключаем клавиатуру на русский язык.
2. Ctrl+C из окна-источника.
3. Ctrl+V в окно-приёмник.
Он тебя учит отмазывает от солдатни, ты его за это наё благодаришь по понятиям.
Совесть...
Программа состоит из комментариев. А напечатать команды по комментариям сможет уже и обезьяна.что есть пытаюсь
Программа должна быть читаемой. А прочитать читаемую программу сможешь уже и сам. А нечитаемая она никому не нужна, даже если случайно заработает.
Чтобы русские буквы скопировать, внимательно:
1. В окне-источнике переключаем клавиатуру на русский язык.
2. Ctrl+C из окна-источника.
3. Ctrl+V в окно-приёмник.
http://www.google.ru/search?q=декомпозиция+задачиперевод трехзначного десятичного числа в шестнадцатиричную систему счисления на Atmega128 с клавиатурой и дислеем lm016l
Re: Помогите с устройством на ATmega128
Спасибо, понял как работает.вот что есть с комментамиnirq писал(а):Препаду налом - дешевле и честнее.
Он тебя учит отмазывает от солдатни, ты его за это наё благодаришь по понятиям.
Совесть...
Программа состоит из комментариев. А напечатать команды по комментариям сможет уже и обезьяна.что есть пытаюсь
Программа должна быть читаемой. А прочитать читаемую программу сможешь уже и сам. А нечитаемая она никому не нужна, даже если случайно заработает.
Чтобы русские буквы скопировать, внимательно:
1. В окне-источнике переключаем клавиатуру на русский язык.
2. Ctrl+C из окна-источника.
3. Ctrl+V в окно-приёмник.
http://www.google.ru/search?q=декомпозиция+задачиперевод трехзначного десятичного числа в шестнадцатиричную систему счисления на Atmega128 с клавиатурой и дислеем lm016l
Спойлер
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


