Anda di halaman 1dari 16

BAHAGIAN TEKNIK DAN VOKASIONAL

KEMENTERIAN PENDIDIKAN MALAYSIA


ARAS 5 & 6, BLOK E14, KOMPLEKS E,
PUSAT PENTADBIRAN KERAJAAN
KOLEJ VOKASIONAL TAWAU
NOTA KULIAH 04
PERSEKUTUAN
62604 PUTRAJAYA

SEMESTER SEMESTER 2 DVM SESI 2020/2021

JABATAN JABATAN TEKNOLOGI  ELEKTRIK & ELEKTRONIK

PROGRAM DIPLOMA TEKNOLOGI ELEKTRONIK / DVM

KOD / KURSUS DEB 2333 MICRO CONTROLLER AND EMBEDDED SYSTEM

KOMPETENSI 4.0 PERFORM REAL TIME CONTROL : TIMERS

4.1 Carry out programmable timers in the MCU’s


KOMPETENSI
4.2 Carry out interrupt interval and density constraints
UNIT

1. Describe concept and main features of microcontroller according to internal


architecture. (C2, PLO1)
HASIL
2. Construct application and operating system for microcontrollers using programming
PEMBELAJARAN
language. (C3, PLO3)
3. Select digital systems and analog interfacing methods based on lab sheet. (P4, PLO2)

NO KOD
MUKA 01 DARIPADA
 KOD JPK

Special Function Register


1
Ciri-ciri dan Fungsi daftar fungsi khas boleh dibahagikan kepada dua kategori:

● Core (CPU) mendaftarkan - mengawal dan memantau operasi dan proses dalam
pemproses pusat. Walaupun terdapat hanya beberapa daripada mereka, kuat kuasa
keseluruhan pengawal mikro bergantung kepada kandungannya.
● Peripheral SFRs- mengawal operasi peranti persisian (modul komunikasi bersiri, A / D
converter dan lain-lain). Setiap satu daripada daftar ini terutamanya khusus untuk satu
litar dan oleh itu mereka akan diterangkan bersama-sama dengan litar mereka berada
dalam kawalan.

Teras (CPU) daftar mikropengawal PIC16F887 yang diterangkan dalam bab ini. Sejak bit
mereka mengawal beberapa litar yang berbeza dalam cip, ia tidak mungkin untuk
mengklasifikasikan mereka ke dalam beberapa kumpulan khas. Ini bit dinyatakan bersama-sama
dengan proses yang mereka kuasai.

STATUS Daftar

Rajah. 2-1 STATUS Mendaftar

The STATUS daftar mengandungi: status aritmetik W daftar, status RESET dan bank pilih bit
untuk ingatan data. Seseorang itu perlu berhati-hati semasa menulis nilai kepada daftar ini kerana
jika anda melakukan kesilapan, keputusan mungkin berbeza daripada yang dijangkakan. Sebagai
contoh, jika anda cuba untuk membersihkan semua bit menggunakan STATUSCLRF, arahan
hasilnya dalam daftar yang akan 000xx1xx bukannya dijangka 00000000. kesilapan itu berlaku
kerana beberapa bit daftar ini ditetapkan atau dibuang mengikut perkakasan sebagai juga kerana
bit 3 dan 4 boleh dibaca sahaja. Untuk sebab-sebab ini, jika ia diperlukan untuk menukar
kandungannya (contohnya, untuk menukar bank aktif), ia adalah disyorkan untuk menggunakan
hanya arahan yang tidak menjejaskan mana-mana bit Status (C, DC dan Z). Rujuk kepada
"Instruction Set Ringkasan".

● IRP - pilihan pelanggan Bit mendaftar bank. Ia digunakan untuk tidak langsung
menangani.
o 1 - Bank 0 dan 1 adalah aktif (lokasi memori 00H-FFH)
o 0 - Banks 2 dan 3 adalah aktif (lokasi memori 100H-1FFh)
● RP1, RP0 - Bits pilih mendaftar bank. Ia digunakan untuk terus menangani.

Bank R R

2
Active P0 P1
Bank0 0 0
Bank1 1 0
Bank2 0 1
Bank3 1 1
Jadual 2-1

● TO - Masa muncul bit.


o 1 - Selepas kuasa pada atau selepas melaksanakan CLRWDT arahanyang mengeset
pemasa watch-dog atau arahan SLEEP yang menetapkan mikropengawal dalam
mod-penggunaan rendah.
o 0 - Selepas watch-dog pemasa tamat masa telah berlaku.
● PD - Power-down bit.
o 1 - Selepas kuasa pada atau selepas melaksanakan CLRWDT arahanyang mengeset
pemasa jam tangan-anjing.
o 0 - Selepas melaksanakan SLEEP arahanyang menetapkan mikropengawal dalam
mod-penggunaan rendah.
● Z - Zero bit
o 1 - Hasil operasi aritmetik atau logik adalah sifar.
o 0 - Hasil operasi aritmetik atau logik adalah berbeza daripada sifar.
● DC - Digit carry / meminjam bit berubah semasa penambahan dan penolakan jika
"limpahan" atau "meminjam" keputusan yang berlaku.
o 1 - A dibawa keluar dari 4 pesanan rendah sedikit hasil yang telah berlaku.
o 0 - Tiada dibawa keluar dari 4 pesanan rendah sedikit hasil yang telah berlaku.
● C - Carry / Meminjam bitberubah semasa penambahan dan penolakan jika "limpahan"
atau "meminjam" keputusan yang berlaku, iaitu jika hasilnya adalah lebih besar daripada
255 atau kurang daripada 0.
o 1 - A dibawa keluar dari yang paling penting sedikit hasil yang telah berlaku.
o 0 - Tiada dibawa keluar dari bit yang paling penting hasilnya telah berlaku.

OPTION_REG Daftar

Fig.2-2

The OPTION_REG daftar mengandungi pelbagai bit kawalan untuk mengkonfigurasi: Timer0 /
WDT prescaler, pemasa TMR0, sampukan luaran dan tarik-up di PORTB.

3
● RBPU - Port B Tarik Membolehkan bit.
o 1 - PORTB tarik-up dilumpuhkan.
o 0 - PORTB tarik-up didayakan.

Fig.2-3

● INTEDG - Interrupt Edge Pilih bit.


o 1 - Ganggu pada kenaikan pinggir pin RB0 / INT.
o 0 - Ganggu pada jatuh tepi pin RB0 / INT.

Fig.2-4

● T0CS - TMR0 Clock Sumber Pilih bit.


o 1 - Peralihan pada TOCKI pin.
o 0 - Dalaman jam kitaran arahan (Fosc / 4).

Fig.2-5

4
● T0SE - TMR0 Sumber Edge Pilih bit memilih tepi nadi (semakin meningkat atau jatuh)
dikira oleh pemasa TMR0 melalui pin RA4 / T0CKI.
o 1 - Kenaikan peralihan tinggi ke rendah pada TOCKI pin.
o 0 - Kenaikan peralihan rendah hingga tinggi pada TOCKI pin.

Fig.2-6

● PSA- bit Prescaler Tugasan memberikan prescaler (hanya satu wujud) untuk pemasa
atau pemantau pemasa.
o 1 - Prescaler diberikan kepada WDT.
o 0 - Prescaler diberikan kepada TMR0.

Fig.2-7

PS2, PS1, PS0 Prescaler Kadar Pilih bit

Prescaler Kadar dipilih dengan menggabungkan ketiga-tiga bit. Diterangkan, seperti yang
ditunjukkan dalam jadual di bawah, kadar prescaler bergantung kepada sama ada prescaler
ditugaskan (TMR0) atau menonton anjing timer (WDT).

WDT TMR0 PS0 PS1 PS2


1: 1 1: 2 0 0 0
1: 2 1: 4 1 0 0
1: 4 1: 8 0 1 0
1: 8 1:16 1 1 0
1:32 1:64 1 0 1
1:64 1: 128 0 1 1
1: 128 1: 256 1 1 1
Jadual 2-2

5
Dalam usaha untuk mencapai 1: 1 Kadar prescaler apabila pemasa TMR0 mengira sehingga
denyutan, prescaler harus diberikan kepada WDT. Hasil daripada ini, pemasa TMR0 tidak
menggunakan prescaler, tetapi terus mengira denyutan yang dihasilkan oleh pengayun, yang
merupakan matlamat!

Sampukan Sistem Registers

Apabila permintaan sampukan tiba ia tidak bermakna sampukan yang secara automatik akan
berlaku, kerana ia juga mesti didayakan oleh pengguna (dari dalam program ini). Oleh kerana
itu, terdapat bit khas yang digunakan untuk membolehkan atau melumpuhkan sampukan. Ia
adalah mudah untuk mengenali bit ini dengan IE yang terkandung dalam nama-nama mereka
(bermaksud Sampukan). Selain itu, setiap sampukan dikaitkan dengan sedikit lain yang dipanggil
bendera yang menunjukkan bahawa permintaan sampukan telah tiba tidak kira sama ada ia
dibolehkan atau tidak. Mereka juga mudah dikenali oleh dua huruf terakhir yang terkandung
dalam names- mereka IF (Interrupt Bendera).

Seperti yang dapat dilihat, segala-galanya adalah berdasarkan idea yang mudah dan berkesan.
Apabila permintaan sampukan tiba, sedikit bendera itu akan ditubuhkan pertama.

Rajah. 2-8 Mengganggu Sistem Registers

Jika IE bit yang sesuai tidak ditetapkan (0), acara ini akan benar-benar diabaikan. Jika tidak,
sampukan berlaku! Dalam kes beberapa sumber sampukan didayakan, ia adalah perlu untuk
mengesan yang aktif sebelum rutin bermula pelaksanaan sampukan. Pengesanan sumber
dilakukan dengan memeriksa bit bendera.

Ia adalah penting untuk memahami bahawa bit bendera tidak secara automatik dibersihkan,
tetapi oleh perisian semasa pelaksanaan rutin sampukan. Jika butiran ini diabaikan, sampukan
lain akan berlaku serta-merta setelah kembali ke program itu, walaupun tiada lagi permintaan
untuk pelaksanaannya! Ringkasnya, bendera serta IE bit kekal ditetapkan.

Semua mengganggu sumber tipikal mikropengawal PIC16F887 yang ditunjukkan pada halaman
seterusnya. Nota beberapa perkara:

● GIE bit - membolehkan semua sampukan membuka tabir dan melumpuhkan semua
mengganggu serentak.
● PEIE bit - membolehkan semua sampukan periferal membuka tabir dan melumpuhkan
semua sampukan periferal (ini tidak melibatkan Timer TMR0 dan pelabuhan B
mengganggu sumber).

6
Untuk membolehkan sampukan disebabkan oleh perubahan keadaan logik pada port B, ia adalah
perlu untuk membolehkan ia untuk setiap bit secara berasingan. Dalam kes ini, bit yang IOCB
daftarmempunyai fungsi untuk mengawal bit IE.

Rajah. 2-9 Interrupt SFRs

INTCON Mendaftar

The INTCON daftar mengandungi pelbagai membolehkan dan bit bendera TMR0 daftar
limpahan, perubahan PORTB dan luaran sampukan INT pin.

Rajah. 2-10 INTCON Daftar

7
● GIE - Global Sampukan bit - kawalan semua sumber sampukan mungkin serentak.
o 1 - Membolehkan semua sampukan membuka tabir.
o 0 - Melumpuhkan semua sampukan.
● PEIE - Peripheral Interrupt Membolehkan bit bertindak serupa dengan GIE, tetapi
kawalan sampukan yang dibolehkan oleh persisian. Ia bermakna bahawa ia tidak
memberi kesan kepada sampukan dicetuskan oleh pemasa TMR0 atau dengan menukar
kerajaan pada port B atau pin RB0 / INT.
o 1 - Membolehkan semua sampukan periferal membuka tabir.
o 0 - Melumpuhkan semua sampukan periferal.
● T0IE - TMR0 Limpahan Sampukanbit kawalansampukan yang dibolehkan oleh
TMR0 limpahan.
o 1 - Membolehkan sampukan TMR0 itu.
o 0 - Melumpuhkan sampukan TMR0 itu.
● INTE - RB0 / INT Interrupt Luar Membolehkanbit kawalansampukan disebabkan
oleh perubahan keadaan logik pada pin RB0 / IN (sampukan luaran).
o 1 - Membolehkan sampukan luaran INT.
o 0 - Melumpuhkan sampukan luaran INT.
● RBIE - RB Port Tukar Sampukanbit.Apabila dikonfigurasikan sebagai input, port pin
B boleh menyebabkan sampukan dengan menukar keadaan logik mereka (tidak kira sama
ada ia adalah peralihan rendah highto- atau sebaliknya, hakikat bahawa sesuatu yang
berubah hanya perkara-perkara). Bit ini menentukan sama ada sampukan adalah berlaku
atau tidak.
o 1 - Membolehkan sampukan port perubahan B.
o 0 - Melumpuhkan sampukan port perubahan B.
● T0IF - TMR0 Limpahan Interrupt Flag bit mendaftar pemasa TMR0 mendaftar
limpahan, apabila mengira bermula dari sifar.
o 1 - TMR0 daftar telah melimpah (bit mesti dibersihkan dalam perisian).
o 0 - TMR0 daftar tidak melimpah keluar.
● INTF - RB0 / INT Luar Interrupt Flag sedikit perubahan daftar-daftar keadaan logik
pada pin RB0 / INT.
o 1 - INT sampukan luar telah berlaku (mesti dibersihkan dalam perisian).
o 0 - The INT sampukan luaran tidak berlaku.
● RBIF - RB Port Tukar Interrupt Flag sedikit mendaftarkan perubahan keadaan logik
beberapa input pin port B.
o 1 - Sekurang-kurangnya salah satu daripada pelabuhan B umum tujuan pin I / O
telah berubah negeri. Setelah membaca PORTB, RBIF (bendera bit) mesti
dibersihkan dalam perisian.
o 0 - Tiada pelabuhan B umum tujuan pin I / O telah berubah negeri.

8
PIE1 Daftar

The PIE1 daftar mengandungi periferal sampukan membolehkan bit.

Rajah. 2-11 PIE1 mendaftar

● Adie - A / D Converter Sampukan bit.


o 1 - Membolehkan sampukan ADC.
o 0 - Melumpuhkan sampukan ADC.
● RCIE - EUSART Menerima Sampukan bit.
o 1 - Membolehkan EUSART menerima sampukan.
o 0 - Melumpuhkan EUSART menerima sampukan.
● TXIE - EUSART Transmit Sampukan bit.
o 1 - Membolehkan sampukan EUSART penghantar.
o 0 - Melumpuhkan sampukan EUSART penghantar.
● SSPIE - Master Synchronous Serial Port (MSSP) Sampukan bit - membolehkan
permintaan sampukan yang akan dijana selepas setiap pemindahan data melalui segerak
modul komunikasi bersiri (SPI atau mod I2C).
o 1 - Membolehkan sampukan MSSP ini.
o 0 - Melumpuhkan sampukan MSSP ini.
● CCP1IE - CCP1 Sampukan bit membolehkan permintaan sampukan yang akan dijana
di dalam modul CCP1 digunakan untuk pemprosesan isyarat PWM.
o 1 - Membolehkan sampukan CCP1 itu.
o 0 - Melumpuhkan sampukan CCP1 itu.
● TMR2IE - TMR2 ke PR2 Perlawanan Interrupt sedikit Membolehkan
o 1 - Membolehkan TMR2 ke PR2 Perlawanan sampukan.
o 0 - Melumpuhkan TMR2 ke PR2 Perlawanan sampukan.
● TMR1IE - TMR1 Limpahan Sampukan bit membolehkan permintaan sampukan yang
akan dijana selepas setiap pemasa TMR1 mendaftar limpahan, iaitu apabila pengiraan
undi bermula dari sifar.
o 1 - Membolehkan TMR1 limpahan sampukan.
o 0 - Melumpuhkan TMR1 limpahan sampukan.

9
PIE2 Daftar

The PIE2 Daftar juga mengandungi pelbagai mengganggu membolehkan bit.

Rajah. 2-12 PIE2 Daftar

● OSFIE - Oscillator Fail Sampukan bit.


o 1 - Membolehkan pengayun gagal sampukan.
o 0 - Melumpuhkan pengayun gagal sampukan.
● C2IE - Comparator C2 Sampukan bit.
o 1 - Membolehkan Comparator C2 sampukan.
o 0 - Melumpuhkan Comparator C2 sampukan.
● C1IE - Comparator C1 Sampukan bit.
o 1 - Membolehkan Comparator C1 sampukan.
o 0 - Melumpuhkan Comparator C1 sampukan.
● EEIE - EEPROM Tulis Operasi Sampukan bit.
o 1 - Membolehkan EEPROM menulis operasi sampukan.
o 0 - Melumpuhkan EEPROM menulis operasi sampukan.
● BCLIE - Bus Collision Sampukan bit.
o 1 - Membolehkan bas perlanggaran sampukan.
o 0 - Melumpuhkan bas perlanggaran sampukan.
● ULPWUIE - Ultra Low-Power bangun tidur Sampukan bit.
o 1 - Membolehkan Ultra Low-Power sampukan bangun tidur.
o 0 - Melumpuhkan Ultra Low-Power sampukan bangun tidur.
● CCP2IE - CCP2 Sampukan bit.
o 1 - Membolehkan CCP2 sampukan.
o 0 - Melumpuhkan CCP2 sampukan.

10
PIR1 Daftar

The PIR1 daftar mengandungi bit bendera sampukan.

Rajah. 2-13 PIR1 Daftar

● Adif - A / D Converter Interrupt Flag bit.


o 1 - A / D penukaran selesai (bit mesti dibersihkan dalam perisian).
o 0 - A / D penukaran tidak siap atau belum bermula.
● Rcif - EUSART Menerima Interrupt Flag bit.
o 1 - EUSART The menerima penampan penuh. Bit dibersihkan dengan membaca
daftar RCREG itu.
o 0 - EUSART The menerima penampan tidak penuh.
● TXIF - EUSART Transmit Interrupt Flag bit.
o 1 - EUSART penghantar penampan kosong. Bit dibersihkan dengan menulis
kepada daftar TXREG itu.
o 0 - The EUSART penghantar penampan penuh.
● SSPIF - Master Synchronous Port Siri (MSSP) Mengganggu Flag bit.
o 1 - MSSP mengganggu keadaan semasa data menghantar / menerima telah
berlaku. Keadaan ini berbeza bergantung kepada MSSP mod operasi (SPI atau
I2C) sedikit ini mesti dibersihkan dalam perisian sebelum kembali dari rutin
perkhidmatan sampukan.
o 0 - Tiada syarat MSSP sampukan telah berlaku.
● CCP1IF - CCP1 Interrupt Flag bit.
o 1 - CCP1 keadaan sampukan telah berlaku (CCP1 adalah unit untuk menangkap,
membandingkan dan menjana isyarat PWM). Bergantung pada mod operasi,
menangkap atau membandingkan perlawanan telah berlaku. Dalam kedua-dua
kes, bit mesti dibersihkan dalam perisian. Sedikit ini tidak digunakan dalam mod
PWM.
o 0 - Tiada syarat CCP1 sampukan telah berlaku.
● TMR2IF - Timer2 ke PR2 Interrupt Flag bit
o 1 - TMR2 (8-bit daftar) untuk perlawanan PR2 telah berlaku. Bit ini mesti
dibersihkan dalam perisian sebelum kembali dari rutin perkhidmatan sampukan.
o 0 - Tiada TMR2 perlawanan PR2 telah berlaku.
● TMR1IF - Timer1 Limpahan Interrupt Flag bit
o 1 - TMR1 daftar telah melimpah. Bit ini mesti dibersihkan dalam perisian.
o 0 - The TMR1 daftar tidak melimpah keluar.

11
PIR2 Daftar

The PIR2 daftar mengandungi bit bendera sampukan.

Rajah. 2-14 PIR2 mendaftar

● OSFIF - Oscillator Fail Interrupt Flag bit.


o 1 - Sistem pengayun gagal dan input jam telah ditukar kepada INTOSC pengayun
dalaman. Bit ini mesti dibersihkan dalam perisian.
o 0 - Sistem pengayun beroperasi seperti biasa.
● C2IF - Comparator C2 Interrupt Flag bit.
o 1 - Comparator output C2 telah berubah (bit C2OUT). Bit ini mesti dibersihkan
dalam perisian.
o 0 - Comparator output C2 tidak berubah.
● C1IF - Comparator C1 Interrupt Flag bit.
o 1 - Comparator output C1 telah berubah (bit C1OUT). Bit ini mesti dibersihkan
dalam perisian.
o 0 - Comparator output C1 tidak berubah.
● EEIF - EE Tulis Operasi Interrupt Flag bit.
o 1 - EEPROM menulis selesai. Bit ini mesti dibersihkan dalam perisian.
o 0 - EEPROM menulis tidak siap atau belum bermula.
● BCLIF - Bus Collision Interrupt Flag bit.
o 1 - A perlanggaran bas telah berlaku dalam MSSP apabila dikonfigurasikan untuk
memasuki mod Master I2C. Bit ini mesti dibersihkan dalam perisian.
o 0 - Tiada perlanggaran bas telah berlaku.
● ULPWUIF - Ultra Kuasa rendah bangun tidur Interrupt Flag bit.
o 1 - keadaan bangun tidur telah berlaku. Bit ini mesti dibersihkan dalam perisian.
o 0 - Tiada syarat bangun tidur telah berlaku.
● CCP2IF - CCP2 Interrupt Flag bit.
o 1 - CCP2 keadaan sampukan telah berlaku (unit untuk menangkap,
membandingkan dan menjana isyarat PWM). Bergantung pada mod operasi,
menangkap atau membandingkan perlawanan telah berlaku. Dalam kedua-dua
kes, bit mesti dibersihkan dalam perisian. Sedikit ini tidak digunakan dalam mod
PWM.
o 0 - Tiada syarat CCP2 sampukan telah berlaku.

12
PCON mendaftar

The PCON daftar mengandungi hanya dua bit bendera digunakan untuk membezakan antara:
kuasa-on semula, semula coklat keluar, Badan Pengawas Timer Reset dan reset luar (melalui
MCLR pin).

Rajah. 2-15 PCON mendaftar

● ULPWUE - Ultra Low-Power bangun tidur Membolehkan bit


o 1 - Ultra Low-Power bangun tidur yang aktif.
o 0 - Ultra Low-Power bangun tidur kurang upaya.
● SBOREN - Perisian BOR sedikit Membolehkan
o 1 - Brown keluar Reset aktif.
o 0 - Brown keluar Reset aktif.
● POR - Power-on Status Reset bit
o 1 - Tiada Power-on set semula telah berlaku.
o 0 - Power-on set semula telah berlaku. Sedikit ini mesti ditetapkan dalam perisian
selepas Reset Power-on berlaku.
● BOR - Brown keluar Reset Status bit
o 1 - reset No Brown keluar telah berlaku.
o 0 - reset Brown keluar telah berlaku. Sedikit ini mesti ditetapkan dalam perisian
selepas Reset Brown keluar berlaku.

PCL dan PCLATH Catat

Saiz memori program ini daripada PIC16F887 adalah 8K. Oleh itu, ia mempunyai 8192 lokasi
untuk program menyimpan. Atas sebab ini kaunter rancangan tidak kurang 13-bit luas (2 ^ 13 =
8192). Supaya kandungan beberapa lokasi boleh diubah dalam perisian semasa operasi,
alamatnya mesti boleh diakses melalui beberapa SFR. Oleh kerana semua SFRs 8-bit luas, daftar
ini adalah "buatan" dicipta dengan membahagikan 13 bit ke dalam dua daftar yang bebas:
PCLATH dan PCL.

Jika pelaksanaan program ini tidak menjejaskan kaunter program ini, nilai daftar ini secara
automatik dan sentiasa incremented 1, 1, 1, 1 ... Dengan cara itu, program ini dilaksanakan hanya
kerana ia adalah arahan written- oleh arahan, diikuti dengan kenaikan alamat tetap.

13
Rajah. 2-16 PCL dan PCLATH Registers

Jika kaunter program itu berubah dalam perisian, maka terdapat beberapa perkara yang perlu
diingat untuk mengelakkan masalah:

● Lapan bit rendah (bait yang rendah) datang dari PCL mendaftar yang boleh dibaca dan
ditulis, manakala lima bit atas datang daripada daftar PCLATH adalah ditulis sahaja.
● The PCLATH daftar dibersihkan pada mana-mana set semula.
● Dalam bahasa himpunan, nilai kaunter program yang ditandakan dengan PCL, tetapi ia
jelas merujuk kepada 8 bit yang lebih rendah sahaja. Seseorang itu perlu berhati-hati
apabila menggunakan"ADDWFPCL"arahan. Ini adalah suruhan lompat yang menetapkan
lokasi sasaran dengan menambah beberapa nombor untuk alamat semasa. Ia sering
digunakan apabila melompat ke dalam jadual atau cawangan program jadual look-up
untuk membacanya. Masalah timbul jika alamat semasa adalah seperti yang punca Selain
menukar beberapa bit milik bait yang lebih tinggi daftar PCLATH itu. Adakah anda
melihat apa yang sedang berlaku?
● Melaksanakan apa-apa arahan kepada daftar PCL serentak menyebabkan Prog bit
Counter ram akan digantikan dengan kandungan daftar PCLATH itu. Walau
bagaimanapun, daftar PCL mempunyai akses kepada bit hanya 8 lebih rendah hasil
arahan dan melompat berikut akan menjadi benar-benar tidak betul. Masalah ini
diselesaikan dengan menetapkan arahan tersebut di alamat yang berakhir dengan xx00h.
Ini membolehkan program untuk melompat sehingga 255 lokasi. Jika lompatan lagi
dilaksanakan oleh arahan ini, daftar PCLATH mesti incremented oleh 1 untuk setiap
daftar limpahan PCL.
● Pada panggilan subrutin atau pelaksanaan melompat (arahan CALL dan
GOTO),mikropengawal dapat menyediakan hanya 11-bit menangani. Atas sebab ini, sama
dengan RAM yang dibahagikan dalam "bank", ROM dibahagikan dalam empat "muka
surat" dalam saiz 2K setiap satu. Arahan tersebut dilaksanakan dalam laman ini tanpa
sebarang masalah. Cubalah, kerana pemproses disediakan dengan 11-bit alamat dari
program ini, ia mampu untuk menangani mana-mana lokasi dalam 2Kb. Rajah 2-17
bawah menggambarkan keadaan ini sebagai melompat ke alamat subrutin PP1.
● Walau bagaimanapun, jika satu subrutin atau alamat melompat tidak berada dalam
halaman yang sama dengan lokasi dari mana melompat, dua "hilang" - bit yang lebih
tinggi perlu disediakan dengan menulis kepada daftar PCLATH itu. Ia digambarkan
dalam rajah 2-17 di bawah sebagai melompat ke alamat subrutin PP2.

14
Rajah. 2-17 Registers PCLATH

Dalam kedua-dua kes, apabila subrutin mencapai arahan MEMULANGKAN, RETLW atau
RETFIE (untuk kembali ke program utama), mikropengawal akan berterusan pelaksanaan
program dari mana ia berhenti kerana alamat kembali ditolak dan disimpan ke atas timbunan
yang, seperti yang dinyatakan, terdiri daripada daftar yang 13-bit.

Tidak langsung menangani

Selain mengarahkan menangani ianya logik dan jelas dengan sendirinya (ia adalah mencukupi
untuk menentukan alamat beberapa daftar untuk membaca kandungannya), pengawal mikro ini
mampu untuk melaksanakan tidak langsung menangani dengan cara INDF dan FSR mendaftar.
Ia kadang-kadang jauh memudahkan penulisan program. Keseluruhan prosedur diaktifkan kerana
daftar INDF bukan salah satu yang benar (dari segi fizikal tidak wujud), tetapi hanya
menyatakan daftar yang beralamat terletak dalam daftar FSR. Oleh kerana itu, menulis atau
membaca daripada daftar INDF sebenarnya bermaksud menulis atau membaca daripada daftar
yang beralamat terletak dalam daftar FSR. Dalam erti kata lain, alamat daftar yang 'dinyatakan
dalam daftar FSR, dan kandungannya disimpan dalam daftar INDF itu. Perbezaan antara
langsung dan tidak langsung menangani digambarkan dalam rajah 2-18 di bawah:

15
Seperti yang dapat dilihat, masalah dengan "hilang bit menangani" diselesaikan dengan
"pinjaman" daripada daftar lain. Kali ini, ia adalah sedikit ketujuh yang dipanggil IRP daripada
daftar status.

Rajah. 2-18 Langsung dan Tidak Langsung menangani

16

Anda mungkin juga menyukai