o'chirish, Obyektni sudrab olib borish, Xususiyatlar tahrirlash, Obyektni o'chirish, Soat
yo'nalishi bo'yicha aylantirish, Soat miliga teskari aylantirish, 180 gradusga aylantirish, X
oynasi, Y ko'zgu , Yoyish , Child sahifasiga o'tish, Model yordamini ko'rsatish, Ma'lumotlar
jadvalini ko'rsatish, Loyiha Explorerda ko'rsatish, Paket taqsimotini ko'rsatish, Tez nuqta
ma'lumotlari, Diagnostik sozlash, Qurilma yaratish, Paket, O'sish, kamaytirish, almashtirish.
4 × 4 matritsali klaviatura bilan mikrokontrollerning o'zaro ta'sir qilish algoritmining mumkin
bo'lgan varianti 3-rasmda ko'rsatilgan. 7. Klaviaturani skanerlash PE.4-7 portining chiqish
avtobuslariga ulangan matritsaning gorizontal avtobuslari bo'ylab amalga oshiriladi (4-rasmga
qarang). Skanerlash kodini o'zgartirish muddati mikrokontrollerning apparat taymerining to'lib ketishi
bilan belgilanadi. Klaviatura chiqish signallari PE.0-3 portining kirish shinalariga ulangan vertikal
matritsali shinalardan olinadi.
o'n olti
Machine Translated by Google
Gur
uch.
6.
T
ahr
irl
ash
menyus
i
17
Machine Translated by Google
3
Ha
Yo'q
Boshlash
2
o'n
skanerlash davri.
ProcScan
Yo'q
6
Chiqish
F1=1
F3=1
Initializatsiya
Oxiri
5
7
ProcTimeD
Yo'q
F0 = 1
to'qqiz
bitta
Bayroqlarning boshlang'ich qiymati nolga o'rnatiladi, F6 = 1 bundan mustasno, buning natijasida F3
bayrog'i bitta qiymatga o'rnatilguncha yoki tugatish belgisi shakllanmaguncha tizim fon tsiklida bo'ladi (10
cho'qqi). . F0-F3 bayroqlarining bitta qiymati dasturning tegishli protseduraga o'tishini keltirib chiqaradi, uning
bajarilishi paytida bayroq nolga qaytariladi. Ushbu algoritmda bular ProcTimeD, ProcKeyb, ProcOper,
ProcScan protseduralari. F6 bayrog'i fon tsiklida tahlil qilinmaydi, uning maqsadi ProcScan protsedurasi
ichidagi tugmani bosishga javobni yoqish (F6 = 1) yoki o'chirish (F6 = 0)dir.
Algoritmning 2, 4, 6, 8 cho'qqilarida tegishli F0–F3 bayroqlari tahlil qilinadi, ularga ko'ra tizimning ishlash
vaqti bo'linadi. Bayroqlar tizimdagi muayyan hodisalarga qarab o'rnatiladi. Bunday holda, F0 INT0 uzilishi
bilan, F1 - klaviatura kontaktining o'tish vaqtining kechikish taymerini to'xtatib, F2 - operatorning reaktsiya
vaqtini kechiktirish taymerini, F3 - shakl taymerini uzib qo'yish orqali o'rnatiladi.
Yo'q
F2=1
Ha
Yo'q
Ha
sakkiz
bitta
ProcOper
Ha
ProcKeyb
4
Ha
bitta
Guruch. 7. Fon tsikli
o'n sakkiz
Machine Translated by Google
F0 := 0
BSP := (RSP)
F0–F3 bayroqlarini o'rnatadigan uzilishlar xizmatining tartiblari rasmda ko'rsatilgan. 8,
bu erda quyidagi belgilar qo'llaniladi:
F1 := 1
Chiqish
F6 := 1
Shaklda. 9-rasmda INT0 va INTTS uzilish protseduralarida o'rnatilgan F0 va F2
bayroqlari bilan chaqiriladigan ProcTimeD va ProcOper protseduralarining grafik
diagrammalari ko'rsatilgan. Birinchi tartib qaytish taymerini yuklaydi va ishga tushiradi,
ikkinchisi esa keyingi tugmachalarni bosish uzilishlariga imkon beradi.
Oldindan ko'rib chiqilgan sxemaga qo'shimcha ravishda, sxemada quyidagi mnemonik
belgilar qo'llaniladi: SVP - klaviatura javob kodidagi nol pozitsiyasi hisoblagichi; ASS –
mikrokontroller protsessor yadrosining akkumulyatori; SLP - to'g'ri mantiqiy siljishning
ishlashi uchun mnemonik kod; S – kengaytirilgan bit; RKK - kalit kod registri; BDB -
ma'lumotlar bufer bazasi; SB - ma'lumotlar buferiga kirishda joriy ofset; RK - buyruq kodlari
registri; TimeO - vaqtni kechiktirish taymer
F2 := 1
F3 := 1
ProcOper
Chiqish
INTTS
F2 := 0
Shaklda. 10-rasmda F1 bayrog'i bilan chaqiriladigan ProcKeyb protsedurasining grafik
diagrammasi ko'rsatilgan. Bu bayroq INTTD uzilish tartibida o'rnatiladi, bu esa qaytish
taymerining to'lib ketishi bilan chaqiriladi. Hisobda
Boshlanish vaqtiD
Chiqish
RS - skanerlash registri; BS - skanerlash kodi buferi; RSP – pozitsiya hisoblagichi registrlari;
BSP - joylashuv hisoblagich kodi buferi. Buferlar tugma bosilgan paytdagi kompyuter va
RPN ning joriy holatini saqlash uchun mo'ljallangan.
operator reaktsiyalari.
INT0
BS := (RS)
Chiqish
ProcTimeD
Chiqish
INTTD
F0 := 1
INTOP
Chiqish
F6 := 0
Guruch. 9. Bayroqlar
bilan chaqiriladigan protseduralar
Guruch. 8. Interrupt protseduralari
o'n to'qqiz
Machine Translated by Google
Yo'q
o'n uch
RS va RSP. Birinchisining mazmuni davriy ravishda chapga siljiydi va RPN tarkibi +1 ga oshiriladi va shaxsiy
kompyuterdagi har bir siljish bilan 4-modda yaxlitlanadi. INT0-dagi uzilishga javob, kompyuter va RSP qiymatlari
o'zgarmagan holda tor vaqt oralig'ida yoqiladi. Bundan tashqari, F6 bayrog'i operator reaktsiya vaqtining kechikishi
oxirigacha takroriy uzilishlarni bloklaydi.
RK := (RKK)
Klaviaturadan kiritilgan ma'lumotlar raqamli (0 dan 9 gacha) va boshqaruvga (Ah dan Fh gacha) bo'linadi.
Ikkinchisi buyruq kodlari sifatida tasniflanadi va ma'lumotlar buferiga joylashtirilgan raqamlar kodlaridan farqli o'laroq,
RKga kiritiladi. Bufer chuqurligi SB qayta hisoblash moduliga teng va ishlab chiquvchi tomonidan tanlanadi
ACC := (RE 3-0)
C = 0
F1 := 0
bitta
12
buyruqlar, tegishli ogohlantirish bayroqlari F4 va F5 boshqa tizim protseduralari uchun o'rnatiladi.
ACC := SLP (ACC)
o'n to'rt
F5 := 1
(RKK) > 9
SPV := 0
SPV := (SPV) + 1
ProcScan protsedurasining grafik diagrammasi rasmda ko'rsatilgan. 11. F3 bayrog'i bilan chaqiriladigan
protsedurada registrlarning mazmuni o'zgartiriladi
Sent :=( (Sat) + 1)mod4
PE 7-4 := (BS)
Ha
7
Yo'q
4
[BBD + SB] := (RKK)
(misolda modul to'rtta). 0 dan 9 gacha raqamlarni kiritish natijalari asosida yoki
RKK := (RSP) * 4 + (SPV)
o'n besh
Boshlanish vaqtiO
ProcKey
bitta
F4 := 1
Chiqish
2
sakkiz
bitta
3
o'n
5
o'n bir
6
Ha
Guruch. 10. Klaviaturada ovoz berish
20
Machine Translated by Google
Guruch. 11. Skanerlash
21
Quyida ATmega 128 mikrokontrollerlarining ko'rsatmalar to'plamida assembler tilida yozilgan dastur
keltirilgan.ATmega mikrokontrollerlari uchun dasturlarni kompilyatsiya qilish uchun ISIS muhiti sozlamalarida
AVRASM2 assemblerini belgilang. /* Interrupt rejimida so'rovnoma 4x4 matritsali klaviatura *
AVRAssembler1.asm */
Yo'q
Velosipedni o'tkazib yuborish
F6=1
ProcScan
RE 3-0 := (Kompyuter)
Chiqish
INT0 ni o‘chirib qo‘ying
RSP := ((RSP) + 1) mod4
.o'z ichiga "m128def.inc"; ramziy o'zgaruvchilar va konstantalar ta'rifi .def temp = r16; registrni
ushlab turish .def scan = r18; skanerlash kodi registri .def pos = r19; skanerlash kodidagi nol
holati hisoblagichi .def flags = r20; bayroq registri .def off = r21; klaviatura buferi ofset .def bufs =
r22; skanerlash kodi bufer registri .def bufp = r23; skanerlash kodidagi nol pozitsiyali bufer
registr .def vpos = r24; Klaviatura javob kodidagi nol pozitsiyasi hisoblagichi .def rkl = r25; kalit
kodi .def rkk = r17; buyruq kodi registri .equ base = 0x60; klaviatura bufer bazasi .equ scan0 =
0xee; skanerlash kodining boshlang'ich qiymati .cseg .org 0x00 jmp start; uzilish vektor zonasi
bypass .org 0x02; tashqi uzilish vektori int0
F3 := 0
RS := SCL(RS)
Do'stlaringiz bilan baham: |