44
movwf 0x30
movwf OPTION_REG; movwf TRISB taymerini
sinxronlashtirish sozlamalari; movlw 0xf0 movwf TRISC bcf
STATUS,RP0 chiqishi
uchun portlarni sozlash; holat registrini
bank nol movf PORTC,w ga o'rnatish; belgilar kodini kiritish
va lw 0xf0; svapf 0x30 simvol kodini tanlash; notebook almashish
movf PORTC,w; belgilar kodini kiritish va lw 0xf0; belgilar kodini
tanlash movwf 0x31 swapf 0x31; notebook almashish movf
PORTC,w; belgilar kodini kiritish va lw 0xf0;
belgilar kodini tanlash
movwf 0x32 swapf 0x32; notebook almashish movf PORTC,w;
belgilar kodini kiritish va lw 0xf0; belgilar kodini tanlash movwf
0x33 swapf 0x33; notebook almashish movlw 0x0 movwf PORTB;
port avtobuslarini qayta o'rnatish movlw 0xff movwf PORTC;
bo'shatish ko'rsatkichlari movlw 0x77; skanerlash registrining
dastlabki sozlamalari movwf 0x22 movlw 0xff movwf 0x21; nol
holatidagi hisoblagichni tiklash movwf 0x20; bayroqlarni tiklash
fon: bcf STATUS,RP0; holat registrini nol bank btfsc 0x20.0 ga
o'rnatish; F8 bayrog'ini
tekshirish; f1 skanerlash kodining
modifikatsiyasiga o'tish: btfsc 0x20,1; F9 goto indic bayrog'ini
tekshiring; indikatsiya blokidagi ma'lumotlarni ko'rsatishga o'tish
goto fon tim: bcf INTCON,T0IF; movlw 0xd0 to'ldirish bayrog'ini
tiklash; taymerni qayta o'rnatish movwf TMR0 bsf 0x20, 0;
bayroqni o'rnatish F8 retfie skanerlash: bsf STATUS,C; C bitini
bitta rlf 0x22 ga o'rnatish; skanerlash registrini siljitish
Machine Translated by Google
45
incf 0x21; pozitsiya hisoblagichi o'sishi
movlw 0x3 andwf 0x21; counter yaxlitlash
mod4 movlw 0xee
btfss STATUS,C; c=1 movwf
0x22 bo'lsa, keyingi buyruqni o'tkazib yuborish;
skanerlash registrini qayta yuklash bsf STATUS,C; C bitini bitta bsf
0x20, 1 ga o'rnatish; bcf 0x20.0 ko'rsatkich protsedurasini chaqirish
uchun F9 bayrog'ini o'rnatish; bayroqni tiklash F8 o'zgartirish
skanerlash registriga o'ting f1; fon ko'rsatkichiga qaytish: movlw 0xff
movwf PORTC; o'chirish ko'rsatkichlari bcf 0x20.1; ko'rsatkich bayrog'ini
tiklash F9 movf 0x21,w; ma'lumotlar bufer bazasining bilvosita manzilini
W addwf 0x4 ga yuklash; movf 0x0,w belgisining
bajaruvchi bilvosita
manzilini shakllantirish; W chaqiruvida belgilarni olish; movwf PORTB
etti segmentli kodga o'tkazish protsedurasini chaqirish; 7-segmentli kod
chiqishi movf 0x22,w movwf PORTC; skanerlash kodi chiqishi (chiroq
yoqilgan indikator) movlw 0x30; movwf 0x4 ma'lumotlar buferining bilvosita
asosiy manzilini tiklash
retlw 0x66
retlw 0x5e
goto fon
dc: ; addwf PCL o'tkazish
tartibi
retlw 0x6d
retlw 0x7d
retlw 0x07
retlw 0x7f
retlw 0x6f
retlw 0x77
retlw 0x7c
retlw 0x39
retlw 0x79
retlw 0x71
oxiri
retlw 0x3f
retlw 0x06
retlw 0x5b
retlw 0x4f
Machine Translated by Google
47
PIC16 arxitekturasining asl nusxasi qidiruv jadvalini tashkil etishdir (yuqoriga
qarang). Protsedura chaqirilganda jadvalning asosiy manzili dastur hisoblagichiga,
protsedura chaqirilishidan oldin esa jadvaldagi ofset bo'lgan belgilar kodining qiymati W
ga kiritiladi. Dastur hisoblagichiga kiritilgan natija bilan baza va ofsetni yig'ish
protseduraning birinchi buyrug'i bilan amalga oshiriladi, bu
RETLW K protsedurasidan
qaytish buyruqlaridan iborat jadvalning mos keladigan qatoriga o'tishni keltirib chiqaradi .
Vt ga kiritilgan doimiy K bilan protsedura), bu erda K - etti segmentli kod , ofsetga mos
keladi.
Bundan
tashqari, uzilish vektori uzilish so'rovlarining barcha manbalari uchun
umumiy bo'lib, vektor bo'ylab sakrashdan oldin, so'rovning manbasini dasturiy ravishda
aniqlash kerak. Ushbu misolda faqat bitta so'rov manbai ishlatiladi - taymerning to'lib
ketishi bayrog'i, shuning uchun so'rov manbai aniqlanmagan.
Do'stlaringiz bilan baham: