60 секунд тоолох таймер:

 60 секунд тоолох таймер:

Энэ жишээнд 0-60 тоолдог таймер орсон бөrөөд хоёр ширхэг 7 сегментийн индикатортай, таймерийг зогсоох явуулах товчлууртай (S1), мөн таймерийг rеsеt-лэх товчлууртай (S2) байхаар зохион бүтээгдсэн. Индикацыг динамик байхаар зохион багуулсан бөгөөд Q1 болон Q2 транзисторын тусламжтайгаар индикаторуудыг сонгоно. Кварцын давтамжийг 12 МНz байхаар сонгоё.

ОRG ООН АJМР SТАRТ

ОRG ОЗН                                          Гадны тасалдал 0-н тасалдал үйлчилгээний дэд программ

JNВ Р1.1,SТ_SТ                               S2 товчлуур дарагдсан эсэх

СРL ТСОN.4                                     S1 товчлуур дарагдсан үед хийгдэх үйлдэл буюу

SJМР NЕХТ                                      таймер 0-r явуулах болон зогсоох

SТ_SТ: АСАLL RЕSЕТ                     S2-г дарсан үед таймерийг rеsеt-лэх үйлдэл хийх

NЕХТ:  JNВ РЗ.2,$                             Аль нэг товчлуур эргээд логик “1” болохыг хүлээх

RЕТI

ОRG ОВН

DJNZ RО,ЕND_ТО                             Нэг секунд өнгөртөл таймер 0-н тасалдал үйлчилгээний дэд

МОV RО,ОС8Н                                   программд оруулахгүй байх

DJNZR1,ЕND_ТО МОVR1,ОС8Н

АСАLL INС_SЕС                                 секундыг нэмэгдүүлэх дэд программыг дуудах

ЕND_ТО:

RЕТI

SТАRТ:

АСАLL INIТ                                          Анхны тохируулгын дэд программыг дуудах

WАIТ:   АСАLL СОNVЕRТ_ТIМЕ      секундны утгыг хувиргах дэд программыг дуудах

АСАLL DISРLАY                                 дисплейд өгөгдөл гаргах дэд программыг дуудах

SJМР WАIТ

INIТ:     МОVIЕ,#8ЗН                          Таймер 0 болон гадны тасалдлыг зөвшөөрөх

МОV IР,#О2Н                                     Таймер 0-д давуу эрх олгох

МОV ТМОD,#О2Н                              Таймер 0-г 8 битийн авто-ачааллын горимд шилжүүлэх

МОV ТНО,#ОFАН                              Таймер 0-н тоолох регистерийн ахин ачаалах утгыг

МОV ТLО, #ОFАН                              оноох (ТНО=ТLО=25О)

МОV RО,#ОС8Н                                Нэг секунд тоолуулахад хэрэглэгдэх завсрын тоолох

МОV R1,#ОС8Н                                 регистерүүдэд анхны утга оноох

МОV RЗ,#ООН                                   секундны анхны утга “О”-г оноох

SЕТВ P1.2                                           7 сегментийн индикаторын сонголтын битүүдийг

CLRP1.3                                            тохируулах
RЕТ

INС_SЕС:

МОV А,RЗ                                           секундын утгыг нэгээр нэмэгдүүлээд ВСD код руу хувиргах

АDDА,#О1Н

DАА

СJNЕ А,#6ОН,ЕND_INС                   хэрэв секундны утга “60” болсон бол ахин “О” утгыг оноох

МОV А,#ООН ЕND_INС:

МОV RЗ,А                                           нэмсэн өгөгдлөө эргүүлээд секундын регистерт хадгалах

RЕТ
RЕSЕТ:МОV RЗ,#ООН                     Таймерийг Rеsеt-лэх дэд программ буюу секундын утгыг

СLR ТСОN.4                                       “О” болгоод таймер 0-н тоололтыг зогсоох

RЕТ

СОNVЕRТ_ТIМЕ:

МОV А,RЗ                                           Секундын утгыг аравтын болон нэгжийн оронгоор нь салгаж

АNL А,#ОFН                                         тухайн оронгийн цифр бүрийн 7 сегментийн индикаторт

МОVС А,@А+DРТR                          харгалзах утгыг RОМ-н өгөгдлийн талбараас авч

МОV R4,А                                           дэлгэцийн буферт хийх

МОV А,RЗ

АNL А,#ОFОН

SWАРА

МОVС А,@А+DРТR

МОV R5,А

RЕТ DISРLАY:

СРL P1.2                                             Дэлгэцийн буферт байгаа өгөгдлийг авч 7 сегментийн

СРL Р1.3                                             индикаторт гаргах. Гэхдээ энэ дэд программд нэг удаа

JNВ Р1.2,ТЕN                                    хандахдаа нэгжийн орон юм уу, аравтын орны аль нэгийнх нь

МОV Р2,R4                                         өгөгдлийг гаралтанд бичинэ (динамик индикацтай учир)

SJМР ЕND_DIS ТЕN:     МОV Р2,R5 ЕND_DIS:

RЕТ

ОRG 100H                                          RОМ-н өгөгдлийн талбар

DВ ОFСН

DВ6ОН

DВ ОDАН

DВ ОF2Н

DВ66Н

DВОВ6Н

DВОВЕН

DВОЕОН

 

DВОFЕН

Хариу үлдээх

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Өөрчлөх )

Twitter picture

You are commenting using your Twitter account. Log Out / Өөрчлөх )

Facebook photo

You are commenting using your Facebook account. Log Out / Өөрчлөх )

Google+ photo

You are commenting using your Google+ account. Log Out / Өөрчлөх )

Connecting to %s