2.3. ALGORITMNING DASTURIY TA'MINOT TA'MINOTI
INT0 ga ruxsat bering
Ha
Machine Translated by Google
22
jmp inte0; tashqi uzilish bo'yicha filial int0 .org 0x12;
taymer 2 uzilish vektori (TimeO taymer) jmp tim2; taymer
mosligi o'tish 2 .org 0x18; taymer 1 uzilish vektori
(skanerlash davri taymer) jmp tim1; taymer o'yinida sakrash 1 .org 0x1e;
taymer 0 uzilish vektori (taymer TimeD) jmp tim0; taymer match sakrash
0 start: ; apparat muhitini ishga tushirish ldi bayroqlari, 0x40; blokirovka
bayrog'ini o'rnatish F6 (INT0ni yoqish) ldi skanerlash, skanerlash0;
skanerlash registrini ishga tushirish ldi pos, 0x00; gorizontal holat
hisoblagichni ishga tushirish ldi xl,base; klaviatura bufer bazasini ishga
tushirish ldi xh, 0x00 ldi o'chirilgan, 0x00; klaviatura buferini ishga tushirish
ofset ldi temp, past(ramend); stek ko'rsatkichini ishga tushirish spl, temp
ldi temp, high(ramend) out sph, temp ldi temp, 0xf0; port yo'nalishi
registrini o'rnatish PE out ddre, temp ldi temp , 0xfe; port yo'nalishi
registrini sozlash PD chiqish ddrd, temp ldi temp, 0x92; timsk, temp
tomonidan mahalliy uzilishlarni yoqish; tcnt2, 0 va tcnt1a ldi temp, 0x7f
taymerlarida mos; solishtirish registrlariga yuklash ocr0, 2 va ocr1ah,l out
ocr0, temp; taqqoslash konstantalari ldi temp, 0xff; ocr2 tashqari, temp;
ldi temp, 0x2f; ocr1al tashqari, temp; ldi temp, 0x0; out ocr1ah, temp ldi
temp, 0x08; sozlash boshqaruv registrlarini tccr0, temp; taymerlar tcnt2,
0 tasodifan tccr2 dan qayta o'rnatish uchun, temp; ocr2 da konstantalar
bilan, 0 ldi temp, 0x09; tcnt1 boshqaruv registrini tccr1b ni ishga tushirish
va chiqarish uchun sozlash, temp; ocr1a seidagi konstanta bilan tasodifan
qayta o'rnatish; global uzilishni yoqish; fon dasturi tsikli
Machine Translated by Google
23
tccr0 tashqari, temp
lsl rkl;
lsl rkl
lsrtemp;
brcc summasi;
m3: sbrc bayroqlari, 3; jmp ProcScan F3 bayroq
tahlili; protseduraga o'tish
mov bufp, pos; saqlash pos
rjmpfon; fon tsiklining boshiga qaytish
eimskdan tashqari, temp; INT0 cbr bayroqlarida uzilishni
o'chirish, 0x40; F6 blokirovkalash bayrog'ini tiklash (INT0 ga reaktsiyani taqiqlash)
reti; protseduradan qaytish
fon: sbrc bayroqlari, 0; bayroqni tahlil qilish F0
jmp ProcTimeD; m1 protsedurasiga o'tish: sbrc
bayroqlari, 1; ajralish bayrog'i F1 jmp ProcKeyb;
protseduraga o'tish
haroratda, portda; klaviatura javob kodini kiritish
sbr bayroqlari, 0x1; F0 bayrog'ini o'rnatish
mov bufs, skanerlash; skanerlashni saqlash
mov rkl, bufp; saqlangan nol holatini yo'naltirish va o'zgartirish
skanerlash kodida
m2: sbrc bayroqlari, 2; ajralish bayrog'i F2 jmp
ProcOper; protseduraga o'tish
tccr2 tashqari, temp
cbr bayroqlari, 0x1; toza bayroq F0
jmp m1
ProcKeyb: clr vpos; klaviatura javob kodidagi joylashuv hisoblagichini qayta o'rnating
sbr bayroqlari, 0x4; F2 reti bayrog'ini
o'rnatish; inte0 protsedurasidan qaytish: ldi
temp, 0x0; niqob kodini tiklash
porte, bufs; saqlangan skanerlash kodi chiqishi
tim0: ldi temp, 0x00; taymerni to'xtatish TimeD
ProcTimeD: ldi temp, 0x1; TimeD taymerini ishga tushiring
slr: ; vertikal holatni aniqlash sikli
sbr bayroqlari, 0x2; F1 reti bayrog'ini
o'rnatish; tim1 protsedurasidan qaytish: sbr
bayroqlari,0x8; F3 reti bayrog'ini o'rnatish; tim2
protsedurasidan qaytish: ldi temp, 0x00;
taymerni to'xtatish TimeO
tccr0 tashqari, temp
Machine Translated by Google
24
cbr bayroqlari, 0x1; aniq bayroq F1
jmp m2
eimskdan tashqari, temp; INT0 modifida uzilishni o'chirish:
lsl skanerlash; skanerlash kodini o'zgartirish
soni: inc pos; gorizontal holatda hisoblagich o'sishi
summa: yoki rkl, vpos; kalit kodini yaratish
codc: mov rkk, rkl; buyruq kodini saqlash
cpi rkl, 0x0a; kodni 0ah bilan taqqoslash
inc vpos;
andi off, 0x03; mod4 ofset konvolyutsiyasi
sbr bayroqlari, 0x10; F4 strtim bayrog'ini
o'rnatish: ldi temp, 0x1; start taymeri TimeO
eimskdan tashqari, temp; INT0 orqali uzilishni yoqish, skanerlash;
sbr bayroqlari, 0x20; bayroqni o'rnatish F5
jmp strtim
ldi temp, 0x0; niqob kodini tiklash
brcc soni
rjmp slr
ldi xh, 0x00
ProcOper: sbr bayroqlari, 0x40; o'lchamlari INT0 (F6 bayrog'ini o'rnatish)
cbr bayroqlari, 0x4; F2 bayrog'ini
tiklash jmp m3
andi pos, 0x03; gorizontal holat hisoblagichining mod4 andi bayroqlari bilan
konvolyutsiyasi, 0xf7; F3 jmp fon bayrog'ini tiklash
inc o'chirilgan; tarafkashlik kuchayishi
ProcScan: sbrs bayroqlari, 0x6; bayroqni tahlil qilish
F6 jmp modif; ldi temp, 0x1; niqob kodini
yaratish
brsh kodek; sakrash agar ÿ xl
qo'shish, o'chirish; klaviatura buferiga yozish uchun manzil yaratish
tccr2 tashqari, temp
inc skanerlash
ldi xl, tayanch; bufer asosiy qiymatini tiklash
stx, rkl; klaviatura buferiga kalit kodini yozing
Machine Translated by Google
25
Do'stlaringiz bilan baham: |