Anda di halaman 1dari 18

BAHAGIAN TEKNIK DAN VOKASIONAL

KEMENTERIAN PENDIDIKAN MALAYSIA


ARAS 5 & 6, BLOK E14, KOMPLEKS E,
PUSAT PENTADBIRAN KERAJAAN
PERSEKUTUAN
62604 PUTRAJAYA

KOLEJ VOKASIONAL SEBERANG


PERAI
NOTA KULIAH 04
SEMESTER SEMESTER 2 DVM SESI 2 TAHUN 2021/2022

JABATAN JABATAN TEKNOLOGI ELEKTRIK & ELEKTRONIK

PROGRAM DIPLOMA TEKNOLOGI ELEKTRONIK / DVM

KOD / KURSUS DEB2323 BASIC MICROCONTROLLER


KOMPETENSI 4.0 PERFORM REAL TIME CONTROL : TIMERS

4.1 Know Timer registers


KOMPETENSI 4.2 Understand the register used for timer in PIC.
UNIT 4.3 Apply C program for timer in PIC

1. Interpret the concept and main features of microcontroller according to internal


architecture. (C3, PLO1)
HASIL
2. Construct analogue and digital interfacing methods based on basic concepts
PEMBELAJARAN
and terminology. (P3, PLO2)
3. Implement the application of microcontroller using digital devices. (A2, PLO10)

NO KOD DEB2323/PP 04/PP 04-JAN 2022


MUKA 01 DARIPADA 16

1
Special Function Register
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)

2
● RP1, RP0 - Bits pilih mendaftar bank. Ia digunakan untuk terus menangani.

R
Bank R
P
Active P1
0
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:

3
Timer0 / WDT prescaler, pemasa TMR0, sampukan luaran dan tarik-up di PORTB.

● 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).

PS PS
WDT TMR0 PS1
0 2
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

5
Jadual 2-2

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!

Delay Calculation for 1 second

Here, My fclk = 20MHz (You can put your board’s fclk)

Prescaler = 256 (It is based on PS0 – PS2 bits in OPTION_REG)

TMR0 = 0. (My TMR0’s value will be 0)

Desire Delay (Tout = 1 second) So Fout = 1 (Tout = 1/Fout)

Apply these values to that above formula.

Count = 20000000 / (4*256*256*1)

Count = 76.2939 (approximately 76).

Delay Calculation for 3 second

Here, My fclk = 20MHz (You can put your board’s fclk)

Prescaler = 256 (It is based on PS0 – PS2 bits in OPTION_REG)

TMR0 = 0. (My TMR0’s value will be 0)

Desire Delay (Tout = 1 second) So Fout = 1 (Tout = 1/Fout)

Apply these values to that above formula.

Count = 20000000 / (4*256*256*1/3)

Count = 229 (approximately 76).

Sampukan Sistem Registers

6
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).

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.

7
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

● GIE - Global Sampukan bit - kawalan semua sumber sampukan mungkin


serentak.
o 1 - Membolehkan semua sampukan membuka tabir.
o 0 - Melumpuhkan semua sampukan.

8
● 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.

9
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.

10
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.

11
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.

12
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.

13
14
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.

15
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.

16
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

17
daftar FSR, dan kandungannya disimpan dalam daftar INDF itu. Perbezaan antara
langsung dan tidak langsung menangani digambarkan dalam rajah 2-18 di bawah:

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

18

Anda mungkin juga menyukai