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
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
OPTION_REG Daftar
Fig.2-2
3
Timer0 / WDT prescaler, pemasa TMR0, sampukan luaran dan tarik-up di PORTB.
Fig.2-3
Fig.2-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
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!
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.
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.
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.
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
10
PIE2 Daftar
11
PIR1 Daftar
12
PIR2 Daftar
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).
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
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.
18