Отчёт2 (1056180), страница 2
Текст из файла (страница 2)
in temp, pinD ; çàïèñûâàåì â ÐÎÍ ñîñòîÿíèå âõîäîâ ïîðòà D
cpi temp, $FF ; åñëè íå îäíà èç êíîïîê íå íàæàòà òî â ðåçóëüòàòå ýòîãî ñðàâíåíèÿ áóäåò óñòàíîâëåí ôëàã íóëÿ
breq NOTHING ; åñëè ôëàã íóëÿ áóäåò óñòàíîâëåí, òî ïåðåéòè ïî ìåòêå, èíà÷å - äàëüøå ïî ïðîãðàììå:
mov key, keyboard1 ; ïîäãîòàâëèâàåì ìëàäøèé áàéò ÷èñëà, âûáðàííîãî íàæàòèåì ñîîòâåòñòâóþùåé êíîïêè, ê ðàçäåëåíèþ ðàçðÿäîâ
rcall DIVIDE ; âûçûâàåì ïîäïðîãðàììó ðàçäåëÿþùóþ ðàçðÿäû äåñÿòè÷íîãî ÷èñëà çàïèñàííîãî â ÐÎÍ "key"
cpi keyboard1, $17 ; ñðàâíèâàåì ñîäåðæèìîå ÐÎÍ ñ ìëàäøèì áàéòîì ÷èñëà äíÿ ðîæäåíèÿ
breq IMAGE1 ; åñëè ýòè ÷èñëà ðàâíû, òî ïåðåõîäèì ïî ìåòêå, èíà÷å:
cpi keyboard1, $08 ; ñðàâíèâàåì ñîäåðæèìîå ÐÎÍ ñ ìëàäøèì áàéòîì ÷èñëà ìåñÿöà ðîæäåíèÿ
breq IMAGE1 ; åñëè ýòè ÷èñëà ðàâíû, òî ïåðåõîäèì ïî ìåòêå, èíà÷å:
mov R18, key ; çàïèñûâàåì ÷èñëî åäèíèö â ÷èñëå ìëàäøåãî áàéòà âûáðàííîãî ÷èñëà â ïðîìåæóòî÷íûé 18 ÐÎÍ
mov R19, temp ; çàïèñûâàåì ÷èñëî äåñÿòêîâ â ÷èñëå ìëàäøåãî áàéòà âûáðàííîãî ÷èñëà â ïðîìåæóòî÷íûé 19 ÐÎÍ
mov key, keyboard2 ; ïîäãîòàâëèâàåì ñòàðøèé áàéò ÷èñëà ê ðàçäåëåíèþ ðàçðÿäîâ
rcall DIVIDE ; âûçûâàåì ïîäïðîãðàììó ðàçäåëÿþùóþ ðàçðÿäû äåñÿòè÷íîãî ÷èñëà çàïèñàííîãî â ÐÎÍ "key"
;ïîäãîòîâêà ê âûâîäó ÷èñåë íà èíäèêàòîðû:
mov temp2, temp ; çàïèñûâàåì â ÐÎÍ "temp2" ÷èñëî äåñÿòêîâ ñòàðøåãî áàéòà ãîäà ðîæäåíèÿ
rcall TRANSLATE ; âûçûâàåì ïðîãðàììó ïåðåâîäà ÷èñåë â êîä ñåìèñåãìåíòíîãî èíäèêàòîðà
mov R28, kod ; çàïèñûâàåì êîä äëÿ ñåìèìåãìåíòíîãî èíäèêàòîðà ñòàðøåãî ðàçðÿäà ãîäà â ïðîìåæóòî÷íûé ðíãèñòð ÐÎÍ
mov temp2, key ; çàïèñûâàåì â ÐÎÍ "temp2" ÷èñëî åäèíèö ñòàðøåãî áàéòà ãîäà ðîæäåíèÿ
rcall TRANSLATE ; âûçûâàåì ïðîãðàììó ïåðåâîäà ÷èñåë â êîä ñåìèñåãìåíòíîãî èíäèêàòîðà
mov R29,kod ; çàïèñûâàåì êîä äëÿ ñåìèìåãìåíòíîãî èíäèêàòîðà òðåòüåãî ðàçðÿäà ãîäà â ïðîìåæóòî÷íûé ðíãèñòð ÐÎÍ
mov temp2, R19 ; çàïèñûâàåì â ÐÎÍ "temp2" ÷èñëî äåñÿòêîâ ìëàäøåãî áàéòà ãîäà ðîæäåíèÿ
rcall TRANSLATE ; âûçûâàåì ïðîãðàììó ïåðåâîäà ÷èñåë â êîä ñåìèñåãìåíòíîãî èíäèêàòîðà
mov R30, kod ; çàïèñûâàåì êîä äëÿ ñåìèìåãìåíòíîãî èíäèêàòîðà âòîðîãî ðàçðÿäà ãîäà â ïðîìåæóòî÷íûé ðíãèñòð ÐÎÍ
mov temp2, R18 ; çàïèñûâàåì â ÐÎÍ "temp2" ÷èñëî åäèíèö ìëàäøåãî áàéòà ãîäà ðîæäåíèÿ
rcall TRANSLATE ; âûçûâàåì ïðîãðàììó ïåðåâîäà ÷èñåë â êîä ñåìèñåãìåíòíîãî èíäèêàòîðà
ldi opros, 5 ; óñòàíàâëèâàåì êîëè÷åñòâî öèêëîâ âûâîäà ãîäà äî ñëåäóþùåãî îïðîñà êëàâèàòóðû
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GOYEAR:
; âûâîä ñòàðøåãî ðàçðÿäà ãîäà íà ïåðâûé èíäèêàòîð
out portC, R28 ; âûâîä ñòàðøåãî ðàçðÿäà ãîäà ñ âûõîäîâ ïîðòà C
ldi led, $FE ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü ïåðâûé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; âûâîä òðåòüåãî ðàçðÿäà ãîäà íà âòîðîé èíäèêàòîð
out portC, R29 ; âûâîä òðåòüåãî ðàçðÿäà ãîäà ñ âûõîäîâ ïîðòà C
ldi led, $FD ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü âòîðîé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; âûâîä âòîðîãî ðàçðÿäà ãîäà íà òðåòèé èíäèêàòîð
out portC, R30 ; âûâîä âòîðîãî ðàçðÿäà ãîäà ñ âûõîäîâ ïîðòà C
ldi led, $FB ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü òðåòèé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; âûâîä ìëàäøåãî ðàçðÿäà ãîäà íà ÷åòâ¸ðòûé èíäèêàòîð
out portC, kod ; âûâîä ìëàäøåãî ðàçðÿäà ãîäà ñ âûõîäîâ ïîðòà C
ldi led, $F7 ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü ÷åòâ¸ðòûé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
dec opros
brne GOYEAR ; ïåðåõîä ïî "íå ðàâíî",òåì ñàìûì îáåñïå÷èâàåòñÿ íåïðåðûâíûé âûâîä âûáðàííîãî ÷èñëà äî ñëåäóþùåãî îïðîñà êëàâèàòóðû
ret ; âîçâðàùåíèå èç ïîäïðîãðàììû IMAGE
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
NOTHING:
ldi opros, $FF ; óñòàíàâëèâàåì êîëè÷åñòâî öèêëîâ ïðîñòîÿ äî ñëåäóþùåãî îïðîñà êëàâèàòóðû
NOTHING1:
dec opros ; äåêðåìåíò ñîäåðæèìîãî ÐÎÍ
brne NOTHING1 ; ïåðåéòè ïî "íå ðàâíî", òåì ñàìûì ïðîèñõîäèò çàäåðæêà äî ñëåäóþùåãî îáðàùåíèÿ ê êëàâèàòóðå
ret ; âîçâðàùåíèå èç ïîäïðîãðàììû IMAGE
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
IMAGE1:
;ïîäãîòîâêà ê âûâîäó ÷èñåë íà èíäèêàòîðû:
mov temp2, temp ; çàïèñûâàåì â ÐÎÍ "temp2" ÷èñëî äåñÿòêîâ áàéòà äíÿ/ìåñÿöà ðîæäåíèÿ
rcall TRANSLATE ; âûçûâàåì ïðîãðàììó ïåðåâîäà ÷èñåë â êîä ñåìèñåãìåíòíîãî èíäèêàòîðà
mov R28, kod ; çàïèñûâàåì êîä äëÿ ñåìèìåãìåíòíîãî èíäèêàòîðà ñòàðøåãî ðàçðÿäà äíÿ/ìåñÿöà â ïðîìåæóòî÷íûé ðåãèñòð ÐÎÍ
mov temp2, key ; çàïèñûâàåì â ÐÎÍ "temp2" ÷èñëî åäèíèö áàéòà äíÿ/ìåñÿöà ðîæäåíèÿ
rcall TRANSLATE ; âûçûâàåì ïðîãðàììó ïåðåâîäà ÷èñåë â êîä ñåìèñåãìåíòíîãî èíäèêàòîðà
ldi opros, 10 ; óñòàíàâëèâàåì êîëè÷åñòâî öèêëîâ ïðîñòîÿ äî ñëåäóþùåãî îïðîñà êëàâèàòóðû
cpi keyboard1, $08 ; ñðàâíèâàåì ñîäåðæèìîå ÐÎÍ ñ áàéòîì ìåñÿöà ðîæäåíèÿ
breq IMAGE2
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GODAY:
; âûâîä ñòàðøåãî ðàçðÿäà äíÿ íà ïåðâûé èíäèêàòîð
out portC, R28 ; âûâîä ñòàðøåãî ðàçðÿäà äíÿ ñ âûõîäîâ ïîðòà C
ldi led, $FE ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü ïåðâûé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; âûâîä òðåòüåãî ðàçðÿäà äíÿ íà âòîðîé èíäèêàòîð
out portC, kod ; âûâîä ñòàðøåãî ðàçðÿäà äíÿ ñ âûõîäîâ ïîðòà C
ldi led, $FD ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü âòîðîé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
dec opros
brne GODAY ; ïåðåõîä ïî "íå ðàâíî",òåì ñàìûì îáåñïå÷èâàåòñÿ íåïðåðûâíûé âûâîä âûáðàííîãî ÷èñëà äî ñëåäóþùåãî îïðîñà êëàâèàòóðû
ret ; âîçâðàùåíèå èç ïîäïðîãðàììû IMAGE
IMAGE2:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
GOMONTH:
; âûâîä ñòàðøåãî ðàçðÿäà ìåñÿöà íà ïåðâûé èíäèêàòîð
out portC, R28 ; âûâîä ñòàðøåãî ðàçðÿäà ìåñÿöà ñ âûõîäîâ ïîðòà C
ldi led, $FB ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü òðåòèé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; âûâîä òðåòüåãî ðàçðÿäà ìåñÿöà íà âòîðîé èíäèêàòîð
out portC, kod ; âûâîä ñòàðøåãî ðàçðÿäà ìåñÿöà ñ âûõîäîâ ïîðòà C
ldi led, $F7 ; óêàçûâàåì èíäèêàòîð äëÿ âûâîäà (çäåñü ÷åòâ¸ðòûé)
out portB, led ; ïðîãðàììèðóåì âûõîäû ïîðòà B äëÿ ðàáîòû ïåðâîãî èíäèêàòîðà
rcall DELAY ; âûçûâàåì âðåìåííóþ çàäåðæêó äëÿ òîãî ÷òîáû ÷åëîâå÷åñêèé ãëàç ìîã âîñïðèíèìàòü èíôîðìàöèþ, îòîáðàæàåìóþ íà èíäèêàòîðå
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
dec opros
brne GOMONTH ; ïåðåõîä ïî "íå ðàâíî",òåì ñàìûì îáåñïå÷èâàåòñÿ íåïðåðûâíûé âûâîä âûáðàííîãî ÷èñëà äî ñëåäóþùåãî îïðîñà êëàâèàòóðû
ret ; âîçâðàùåíèå èç ïîäïðîãðàììû IMAGE
;---------------------------------------------------------------------------------------
Скриншоты основных этапов работы программы
Рис.1 Инициализация портов C и B на вывод и порта D на ввод
Рис.2 установка выходов порта C для отображение «1»
Рис.3 вывод «1» на первом индикаторе
Рис.4 выполнение подпрограммы задержки отображения числа
Рис.5 установка выводов порта C для отображения «0»
Рис.6 вывод «0» на третьем индикаторе















