5.2. KLAVVITANI PIC16874 MIKRONATROLLERGA ulaSH DIAGRAMASI
5.3. KLAVVUTA SOVLOV ALGORITMINING DASTURIY TA'MINOTI.
Dasturni avtomatik rejimda ishga tushirishda RS.4–7 portidagi jumperlardan belgilar
kodini kiritish buyruqlarida to'xtash nuqtalarini o'rnatish tavsiya etiladi. Bu ma'lumotlar
buferiga kerakli belgilar birikmalarini kiritish imkonini beradi.
Simulyatsiya qilingan qurilmaning diagrammasini tuzishda PIC mikrokontrollerlarining
uzilishlar tizimining xususiyati hisobga olingan. Boshqa arxitekturalardan farqli o'laroq,
ushbu arxitekturaning mikrokontrollerlari PB port avtobuslarida signallarni o'zgartirish
uchun uzilishlar tizimida tashqi uzilishga ega (PIC16F874 da, bu RB.4-7 avtobuslari). Bu
xususiyat klaviaturani bosishda uzilish so'rovini yaratish uchun qo'shimcha mantiqiy
sxemalarsiz 4×4 matritsali klaviaturani PB portiga ulash imkonini beradi. Ulanish
diagrammasi rasmda ko'rsatilgan. 25. RT port avtobuslarining bit-bit konfiguratsiyasi
ham klaviatura bilan o'zaro ishlash uchun faqat bitta portdan foydalanish imkonini beradi.
Taqdim etilgan sxemada RB.0–3 shinalari skanerlash kodini chiqarish uchun, RB.4–7
shinalari esa klaviaturaning javob kodini kiritish uchun tuzilgan.
Oldingi dasturdan faqat bitta uzilish so'rovi manbasidan foydalanilgan yetti
segmentli displey blokiga ma'lumot chiqarish dasturidan farqli o'laroq, quyidagi klaviatura
so'rovi dasturi to'rtta uzilish manbasidan foydalanadi: skanerlash registrini o'zgartirish
davrini hisoblaydigan real vaqtda taymer; PB portining avtobuslarida signallarni
o'zgartirishda uzilish; taymer uzilishi, kontaktning sakrashi va operatorning reaktsiya
taymerining uzilishi.
Machine Translated by Google
48
Guruch
.
2
5.
Matr
itsali
k
l
aviaturani
u
la
sh
Machine Translated by Google
49
comreg 0x27 ga teng; ko'rsatmalar reestri
TMR0 va RB.4-7 GIE bitini oÿrnatish orqali global niqobni va TOIE va RBIE bitlarini oÿrnatish
orqali tegishli mahalliy maskalarni tozalashi kerak, GIE bitini oÿrnatish orqali global niqobni
tozalash uchun TMR1 va TMR2 soÿrovlari talab qilinadi, PEIE bitini o'rnatish orqali periferik niqob
va TMR1IE va TMR2IE bitlarini o'rnatish orqali mahalliy niqoblar.
bufpos 0x24 ga teng; skanerlash kodidagi nol pozitsiyali bufer
Dasturlash jarayonida ma'lumotlar xotira kartasining sahifalari bo'ylab maxsus funksiya
registrlarini taqsimlashni ham hisobga olish va ma'lumotlar xotirasi banklarini o'z vaqtida
almashtirish kerak. Shunday qilib, masalan, TRISB yo'nalishi registri birinchi bankda, mos
keladigan PORTB esa nol bankda.
bayroqlar equ 0x20; bayroq registri
harorat 0x25 ga teng; vaqtinchalik ro'yxatga olish
Yuqorida aytib o'tilganidek, PIC16F874 arxitekturasida faqat umumiy uzilish vektori 0x04
mavjud. Shu munosabat bilan, vektor bo'ylab harakatlangandan so'ng, ularning ustuvorlik zanjirini
hisobga olgan holda, mumkin bo'lgan manbalardan so'rov bayroqlarini ketma-ket so'rashni tashkil
qilish kerak. Ko'rib chiqilayotgan dasturda so'rov bayroqlari tim:, bint:, tim1:, tim2: ustuvor yorliq
zanjiri bo'ylab tahlil qilinadi. Shunga ko'ra, real vaqt taymerining so'rovi (teg tim:) eng yuqori
ustuvorlikka ega va operatorning reaktsiya vaqtini kechiktirish taymerining so'rovi (tim2: yorlig'i)
eng past ustuvorlikka ega.
org0x4; umumiy uzilish vektori goto tim
org 0x20
bufscan equ 0x23; skanerlash kodi buferi
PIC16F874 uzilish tizimi, shuningdek, uzilish so'rovlarini guruhli niqoblash (taqiqlash)ning
ikki darajasiga ega: global maskalash va periferik maskalash. Ushbu darajalarning har birida har
qanday individual so'rovni mahalliy maskalash qo'shimcha ravishda mumkin. Shunday qilib,
so'rovlar uchun
skanerlash eku 0x22; registrni skanerlash
offbuf teng 0x28; ma'lumotlar buferi yozish ofset
org0; vektorni tiklash
pos teng 0x21; skanerlash kodidagi nol holatidagi hisoblagich
boshlash
Ro'yxat P=16f874
equ 0x26 hisoblash; kalit kod hisoblagichi
; ramziy nomlarni belgilash
#include p16f874.inc
Machine Translated by Google
ellik
bcf STATUS,RP0; holat registrini bank nol btfsc bayroqlariga
o'rnatish,0; skanerlash kodini o'zgartirish bayrog'ini o'zgartirish f1:
bcf STATUS,RP0; holat registrini bank nol btfsc bayroqlariga
o'rnatish,1; klaviaturada uzilish bayrog'ini tahlil qilish goto dreb f2
tugmasini bosing: bcf STATUS,RP0; holat registrini nol bank btfsc
bayroqlariga o'rnatish,2; bekor qilish vaqtini kechiktirish orqali bayroq
tahlili goto opros f3: bcf STATUS,RP0; holat registrini bank nol btfsc
bayroqlariga o'rnatish,3; operator javob vaqtini kechiktirish bo'yicha
bayroq tahlili goto oper goto fon tim: btfss INTCON,T0IF; overflow
uzilish testi TMR0 goto bint bcf INTCON,T0IF; toshib ketish bayrog'ini
tiklash TMR0 movlw 0xd0; taymerni tiklash
start: clrf flags
clrf offbuf; nol ofset movlw 0x77
movwf skanerlash; skanerlash
registrini yuklash movlw 0x03 movwf pos; nol
holatini hisoblagichni o'rnatish movlw 0x30
movwf 0x4; klaviatura bufer bazasini bilvosita
manzilini o'rnatish movlw 0xd0 movwf TMR0;
dastlabki taymerni sozlash bsf INTCON,GIE; global uzilishni yoqish
bsf INTCON, T0IE; TMR0 bsf INTCON, RBIE da mahalliy uzilishni
yoqish; RB.4-7 bsf INTCON, PEIE da mahalliy uzilishni yoqish;
periferik uzilishlarni yoqish 1 movlw 0x0 bsf STATUS, RP0; holat
registrini birinchi bank bsf PIE1, TMR1IE ga o'rnatish; TMR1 bsf PIE1,
TMR2IE dan periferik uzilishni yoqish; TMR2 movwf OPTION_REG
dan periferik uzilishni yoqish; TMR0 taymer vaqtini belgilash movlw
0xf0
movwf TRISB; kirish uchun RB.4–7 portini va chiqish uchun RB.0–3 portini
sozlash fon: ; fon tsikli
Machine Translated by Google
51
andwf pos; counter yaxlitlash mod4
movlw 0xee btfss STATUS,C; agar C=1
movwf skanerlash bo'lsa, keyingi buyruqni o'tkazib yuborish;
skanerlash registrini qayta yuklash bsf STATUS,C; C bitini bitta
movf skanerlashiga o'rnatish,w; movwf PORTB; joriy skanerlash
kodining chiqishi bcf bayroqlari,0; skanerlash registrini
o'zgartirish bayrog'ini tiklash f1; fon drebga qaytish: bcf
INTCON, RBIE; RB.4–7 movlw 0xff da uzilishni o'chirish;
movwf TMR1H taymerini yuklab oling va boshlang
movwf TMR0
bsf bayroqlari, 0; skanerlash kodini o'zgartirish bayrog'ini
sozlash retfie bint: btfss INTCON,RBIF; RB.4–7 da uzilish
tekshiruvi o'tish tim1 movf scan,w movwf bufscan; skanerlash
kodining qiymatini saqlash movf pos,w movwf bufpos; nol bcf
pozitsiya kodi qiymatini saqlash INTCON, RBIE; RB.4–7 bcf
INTCON,RBIF da mahalliy uzilishni o'chirish; RB.4-7 bsf
bayroqlarida uzilish so'rovi bayrog'ini tiklash, 1; klaviatura
uzilish bayrog'ini o'rnatish retfie tim1: btfss PIR1, TMR1IF;
toshib ketish uzilishini tekshirish TMR1 goto tim2 bcf
PIR1,TMR1IF; TMR1 bsf bayroqlarida uzilish so'rovi bayrog'ini
tiklash, 2; bcf T1CON,TMR1ON;bcf T1CON,TMR1ON; taymerni
to'xtatish TMR1 retfie tim2: bcf PIR1,TMR2IF; TMR2 bsf
bayroqlarida uzilish so'rovi bayrog'ini tiklash,3; operatorning reaktsiya
vaqtining kechikishi bcf T2CON,TMR2ON bo'yicha bayroqni o'rnatish;
TMR2 taymerini to'xtatish retfie o'zgartirish: bsf STATUS,C; C bitini bitta rlf
skanerlashiga o'rnatish; skanerlash registrini shift incf pos; pozitsiya
hisoblagichi o'sishi movlw 0x3
Machine Translated by Google
52
movlw 0xf0
movwf TMR1L
bcf STATUS,C; C bitini rlf bufposini nolga
o'rnatish; shift saqlangan pozitsiya kodini nol rlf
bufpos movf bufpos,w iorwf count; movlw 0x6
bosilgan tugma kodini shakllantirish; ÿ 0Ah
qo'shimcha hisoblash uchun taqqoslash, w va 0x10
movf soni,w
movwf 0x0; bilvosita bufer yozish
bsf T1CON,TMR1ON
bcf bayroqlari,1; klaviaturada uzilish bayrog'ini tiklash goto f2
tugmasini bosing; orqa fonga qaytish: movf bufscan,w movwf
PORTB; movf PORTB,w tugmachasini bosish vaqtida skanerlash
kodining chiqishi; klaviatura javob kodini kiritish movwf temp
swapf temp; javob kodida daftarlarni almashish clrf soni; javob
kodi siklida nol pozitsiyasi hisoblagichini tozalash: incf count ;
javob kodidagi nol pozitsiyasini aniqlash rrf temp btfsc STATUS,C;
c = 0 bo'lsa, keyingi buyruqni o'tkazib yuboring
btfss STATUS,C; c = 1 goto buf bo'lsa keyingi buyruqni o'tkazib
yuborish; buferga ma'lumotlarni yozishga o'tish movf count,w
movwf comreg; buyruq kodini saqlash bsf bayroqlari,4; optimal
buyruq bayrog'ini o'rnatish: movlw 0xf0; ishga tushirish
operatorining javob vaqti kechikish taymeri movwf TMR2 bsf
T2CON,TMR2ON bcf bayroqlari,2; bekor qilish vaqtini kechiktirish orqali
bayroqni tiklash f3; fon bufiga qaytish: movf 0x4,w; bufer yozish manzilini
yaratish addwf offbuf,w movwf 0x4
Machine Translated by Google
53
tegmaslik
Ko'rib chiqilayotgan arxitekturalar uchun dastur matnlarini qadoqlash zichligi va tezligining
qiyosiy tahlili shuni ko'rsatadiki, bir xil algoritmlarni dasturiy ta'minotni amalga oshirish Atmel
ATmega mikrokontrollerlarida samaraliroq. Bu RISC arxitekturasi va uning akkumulyator turi
doirasida PIC16x oilasining mikrokontrollerlarining ko'rsatmalar to'plamining sezilarli darajada
qisqarishi bilan bog'liq bo'lib, bu operandlarning V ishchi registriga oraliq o'tkazilishini talab qiladi.
incf offbuf,w; ofset o'sishi
movwf 0x4; bufer bazasining bilvosita manzilini tiklash; klaviaturalar
bsf bayroqlari, 5; ma'lumotlar bayrog'ini o'rnatish
oxiri
movlw 0x30
fonga o'tish; fonga qaytish
movwf offbuf; ofset saqlash
operator: bsf INTCON, RBIE; RB.4–7 bcf bayroqlarida uzilishni yoqish,3;
operatorning reaktsiya vaqti kechikishi bilan bayroqni tiklash
va 0x3; mod4 taraflama konvolyutsiyasi
Machine Translated by Google
54
Periferik qurilmalarning asosiy mikrokontrollerga tashqi ulanishi avval
muhokama qilinganga o'xshaydi (26-rasm). Asosiy mikrokontroller sifatida 80C51
mikrokontrolleri tanlangan, unga ham matritsali klaviatura, ham yetti segmentli
indikatorlar bloki ulangan. Axborotni kiritish va chiqarish vositalarini bitta qurilmada
birlashtirish natijasida skanerlash kodini o'zgartirish tartibi o'zgardi, bu ko'rsatkichlar
blokiga ma'lumotlarni ajralmas qism sifatida chiqarish tartibini o'z ichiga oladi.
Bundan tashqari, 80C51 mikrokontrolleri ATmega va PIC da ilgari ishlatilgan uchta
apparat taymerlari o'rniga faqat ikkita apparat taymeriga ega. Shu munosabat
bilan, apparat taymerlaridan birining funktsiyalari dasturiy ta'minot taymerida
takrorlanishi kerak. Shaklda. 27 skanerlash kodini o'zgartirish, dasturiy ta'minot
taymerini boshqarish va ma'lumotlar buferi tarkibini ko'rsatkichlar blokiga
chiqarish uchun algoritmning birlashtirilgan versiyasini ko'rsatadi. Dasturiy ta'minot
taymeriga klaviatura kontaktlarining qaytish vaqti uchun taymerning funktsiyalari
ishonib topshirilgan. Shunga ko'ra, mikrokontrollerning ikkita apparat taymerlari
real vaqt taymerining (taymer T/S0) va operatorning reaktsiya vaqtini kechiktirish
taymerining (taymer T/C1) funktsiyalarini amalga oshiradi.
MCS-51 mikrokontrollerlari keng tarqalgan bo'lib, sifat jihatidan o'zgartirilgan
va ko'plab kompaniyalar tomonidan moslashtirilgan, xususan, Atmel, Infineon
(sobiq Siemens) va boshqalar. MCS-151 va MCS-251 kengaytmalarida, ulardan
voz kechish mavjud. batareya
Do'stlaringiz bilan baham: |