Menu English Ukrainian Russia Laman Utama

Perpustakaan teknikal percuma untuk penggemar dan profesional Perpustakaan teknikal percuma


ENSIKLOPEDIA ELEKTRONIK RADIO DAN KEJURUTERAAN ELEKTRIK
Perpustakaan percuma / Skim peranti radio-elektronik dan elektrik

Apakah PIC? Ensiklopedia elektronik radio dan kejuruteraan elektrik. Ensiklopedia elektronik radio dan kejuruteraan elektrik

Perpustakaan teknikal percuma

Ensiklopedia elektronik radio dan kejuruteraan elektrik / Pengawal mikro

Komen artikelKomen artikel

pengenalan. PIC16CXX ialah mikropengawal 8-bit dengan seni bina RISC yang dihasilkan oleh Teknologi Microchip. Keluarga mikropengawal ini dicirikan oleh harga yang rendah, penggunaan kuasa yang rendah dan kelajuan tinggi.

Pengawal mikro mempunyai program EEPROM terbina dalam, RAM data dan tersedia dalam pakej 18 dan 28 pin.

PIC OTP ialah pengawal boleh atur cara pengguna sekali yang direka untuk produk yang diuji dan lengkap sepenuhnya yang tidak akan mengalami perubahan kod selanjutnya. Pengawal ini boleh didapati dalam bekas plastik murah dengan jenis pratetap pengayun luaran - kuarza atau RC.

Untuk program penyahpepijatan dan prototaip, versi pengawal dengan pemadaman ultraviolet tersedia. Pengawal ini membenarkan sejumlah besar kitaran tulis/padam dan mempunyai masa pemadaman yang sangat singkat - biasanya 1-2 minit.

Walau bagaimanapun, harga pengawal sedemikian jauh lebih tinggi daripada yang boleh diprogramkan sekali, jadi tidak menguntungkan untuk memasangnya dalam produk bersiri.

Untuk produk yang programnya boleh menukar atau mengandungi mana-mana bahagian pembolehubah, jadual, parameter penentukuran, kunci, dsb., pengawal PIC16C84 yang boleh dipadam secara elektrik dan boleh diprogram semula tersedia. Ia juga mengandungi ROM data boleh atur cara elektrik. Ini betul-betul pengawal yang akan kami gunakan untuk eksperimen.

Untuk memanfaatkan sepenuhnya artikel ini, anda memerlukan komputer peribadi serasi PC IBM, pengaturcara yang disambungkan ke port selari komputer, cip PIC16C84, papan pembangunan, 8 LED dengan perintang, bekalan kuasa +5 V dan soket untuk cip.

Kami akan menaip cebisan kecil program untuk PIC, memasangnya, menulisnya ke dalam cip dan kemudian memerhatikan hasilnya pada LED. Kami akan menggunakan mnemonik asas MICROCHIP dalam artikel ini supaya anda boleh menggunakan contoh dan penyenaraian aplikasi lain dengan lebih mudah yang disertakan dalam Buku Panduan Kawalan Terbenam.

KELUARGA PIC16CXX Kami akan memulakan penerangan terperinci tentang keluarga litar mikro PIC dengan ciri dan kelebihan yang membezakan mikropengawal ini daripada yang lain. Untuk aplikasi keselamatan maklumat, setiap PIC mempunyai bit keselamatan yang boleh diprogramkan untuk menghalang membaca kod program dan ROM data. Apabila pengaturcaraan, kod atur cara pertama kali ditulis, diperiksa untuk ketepatan rakaman, dan kemudian bit privasi ditetapkan. Jika anda cuba membaca litar mikro dengan set bit privasi, maka untuk PIC16C5X, 8 bit kod yang lebih tinggi akan dibaca sebagai 0, dan 4 bit yang lebih rendah akan menjadi 12 bit arahan yang diacak. Untuk PIC16C84, begitu juga, 7 bit yang paling ketara akan dibaca sebagai sifar, dan 7 bit yang paling tidak ketara akan mewakili 14 bit arahan yang dikacau. ROM data boleh atur cara elektrik PIC16C84 tidak boleh dibaca apabila bit keselamatan ditetapkan. Rajah 1 menunjukkan semua mikropengawal yang dihasilkan pada masa ini dan memberikan ciri ringkasnya. (Rajah di muka surat 2-1) Pengawal mikro keluarga PIC mempunyai sistem arahan yang sangat cekap, hanya terdiri daripada 35 arahan. Semua arahan dilaksanakan dalam satu kitaran, dengan pengecualian cawangan bersyarat dan arahan yang mengubah pembilang program, yang dilaksanakan dalam 2 kitaran. Satu kitaran pelaksanaan arahan terdiri daripada 4 tempoh jam. Oleh itu, pada frekuensi 4 MHz, masa pelaksanaan arahan ialah 1 μsec. Setiap arahan terdiri daripada 14 bit, dibahagikan kepada kod operasi dan operan (manipulasi dengan daftar, sel memori dan data langsung adalah mungkin). Sistem arahan mikropengawal PIC16CXX dibentangkan dalam Rajah 2. (Jadual 7.2 di halaman 2-569) Kelajuan tinggi pelaksanaan arahan dalam PIC dicapai dengan menggunakan seni bina Harvard dwi-bas dan bukannya bas tunggal tradisional Von Neumann. seni bina. Seni bina Harvard adalah berdasarkan satu set daftar dengan bas yang berasingan dan ruang alamat untuk arahan dan data. Set daftar bermaksud bahawa semua objek perisian, seperti port I/O, lokasi memori dan pemasa, adalah daftar perkakasan yang dilaksanakan secara fizikal.

Memori data (RAM) untuk PIC16CXX mempunyai lebar 8 bit, memori program (PROM) mempunyai lebar 12 bit untuk PIC16C5X dan 14 bit untuk PIC16CXX. Menggunakan seni bina Harvard membolehkan anda mencapai prestasi kelajuan tinggi bagi operasi bit, bait dan daftar. Di samping itu, seni bina Harvard membenarkan pelaksanaan saluran paip arahan, apabila arahan semasa dilaksanakan serentak dan yang seterusnya dibaca. Dalam seni bina tradisional Von Neumann, arahan dan data dihantar melalui satu bas yang dikongsi atau berganda, dengan itu mengehadkan kemungkinan saluran paip. Rajah 3 menunjukkan gambar rajah blok struktur dwi-bas PIC16CXX. (Rajah B di halaman 2-536) Seperti yang anda boleh lihat, komponen fizikal dan logik dalaman yang membentuk PIC16CXX adalah serupa dengan mana-mana mikropengawal lain yang mungkin anda gunakan setakat ini. Oleh itu, menulis program untuk PIC tidak lebih sukar daripada mana-mana pemproses lain. Logik, dan hanya logik...

Sudah tentu, seni bina Harvard dan lebar arahan yang besar memungkinkan untuk membuat kod untuk PIC jauh lebih padat daripada mikropengawal lain dan dengan ketara meningkatkan kelajuan pelaksanaan program.

SET DAFTAR PIC Semua objek perisian yang boleh digunakan oleh PIC adalah daftar fizikal. Untuk memahami cara PIC berfungsi, anda perlu memahami daftar yang dimilikinya dan cara bekerja dengan setiap satu daripadanya. Rajah 4 menunjukkan semua daftar PIC16C84. (Rajah 3.7.1 pada halaman.

2-541) Mari kita mulakan dengan satu set daftar operasi. Set ini terdiri daripada daftar pengalamatan tidak langsung (f0), daftar pemasa/pembilang (f1), pembilang program (f2), daftar kata status (f3), daftar pemilihan (f4), dan daftar I/O (f5). , f6).

Anda amat perlu memahami cara menggunakan daftar ini, kerana ia mewakili sebahagian besar objek boleh atur cara mikropengawal. Memandangkan kami kebanyakannya perlu memahami "cara mengawal" dan bukannya "bagaimana ia dilakukan secara dalaman", kami telah memasukkan contoh yang sangat mudah yang menunjukkan kemungkinan penggunaan setiap daftar.

f0...DAFTAR ALAMAT TIDAK LANGSUNG IND0 Daftar pengalamatan tidak langsung f0 tidak wujud secara fizikal. Ia menggunakan daftar pilih f4 untuk secara tidak langsung memilih salah satu daripada 64 daftar yang mungkin.

Sebarang arahan yang menggunakan f0 sebenarnya mengakses daftar data yang ditunjuk oleh f4.

f1...DAFTAR PEMASA/KAUNTER TMR0 Daftar pemasa/kaunter TMR0 boleh ditulis dan dibaca seperti daftar lain. TMR0 boleh ditambah dengan isyarat luaran yang digunakan pada pin RTCC, atau dengan frekuensi dalaman yang sepadan dengan kekerapan arahan.

Kegunaan utama pemasa/kaunter adalah untuk mengira bilangan peristiwa luaran dan mengukur masa. Isyarat daripada sumber luaran atau dalaman juga boleh dibahagi terlebih dahulu menggunakan pembahagi boleh atur cara yang dibina ke dalam PIC.

f2...PAKAUN PROGRAM PCL Pembilang program (PC) digunakan untuk menjana urutan alamat sel ROM program yang mengandungi arahan 14-bit. PC mempunyai kapasiti 13-bit, yang membolehkan anda menangani terus sel ROM 8Kx14. Walau bagaimanapun, untuk PIC16C84, hanya 1K sel tersedia secara fizikal. 8 bit PC yang lebih rendah boleh ditulis dan dibaca melalui daftar f2, 5 bit yang lebih tinggi dimuatkan dari daftar PCLATCH, yang mempunyai alamat 0Ah.

f3...DAFTAR KATA STATUS Daftar kata status adalah serupa dengan daftar PSW yang terdapat dalam kebanyakan mikropemproses. Ia mengandungi bit pembawa, perpuluhan dan sifar, serta bit mod dayakan dan bit paging.

f4...DAFTAR PEMILIHAN FSR Seperti yang telah dinyatakan, daftar pemilihan FSR digunakan bersama dengan daftar pengalamatan tidak langsung f0 untuk memilih secara tidak langsung salah satu daripada 64 daftar yang mungkin. Secara fizikal, 36 daftar RAM pengguna digunakan, terletak di alamat 0Ch-2Fh dan 15 daftar perkhidmatan, terletak di pelbagai alamat.

f5, f6... I/O DAFTAR PORTA, PORTB Daftar f5 dan f6 sepadan dengan dua port I/O yang tersedia pada PIC16C84. Port A mempunyai 5 bit PA4-PA0, yang boleh diprogramkan secara individu sebagai input atau output menggunakan daftar TRISA, yang mempunyai alamat 85h. Port B mempunyai 8 bit PB7-PB0 dan diprogramkan menggunakan daftar TRISB dengan alamat 86h. Tugas 1 dalam bit daftar TRIS memprogram bit port yang sepadan sebagai input. Apabila membaca port, keadaan segera output dibaca; apabila menulis ke port, penulisan berlaku dalam daftar penimbal.

f8, f9... EPROM REGISTERS EEDATA, EEADR PIC16C84 mempunyai ROM terbina dalam boleh diprogram semula secara elektrik bersaiz 64 bait, yang boleh dibaca dan ditulis menggunakan daftar data EEDATA dan daftar alamat EEADR. Menulis bait baharu berlangsung kira-kira 10 ms dan dikawal oleh pemasa terbina dalam. Kawalan menulis dan membaca dijalankan melalui daftar EECON1, yang mempunyai alamat 88h. Untuk kawalan tambahan ke atas rakaman, gunakan daftar EECON2, yang mempunyai alamat 89h.

DAFTAR TUJUAN AM Daftar tujuan am ialah RAM statik yang terletak di alamat 0Ch-2Fh. Sebanyak 16 sel RAM boleh digunakan dalam PIC84C36.

DAFTAR KHAS W, INTCON, PILIHAN Akhir sekali, mari kita lihat daftar PIC khas. Ini termasuk daftar kerja W, digunakan dalam kebanyakan arahan sebagai daftar penumpuk, dan daftar INTCON dan OPTION. Daftar sampukan INTCON (alamat 0Bh) digunakan untuk mengawal mod sampukan dan mengandungi bit pemboleh sampukan daripada pelbagai sumber dan bendera sampukan. Daftar mod OPTION (alamat 81h) digunakan untuk menetapkan sumber isyarat untuk praskala dan pemasa/kaunter, serta untuk menetapkan nisbah pembahagian praskala, pinggir aktif isyarat untuk RTCC dan input gangguan. Di samping itu, menggunakan daftar OPTION, perintang beban untuk bit port B yang diprogramkan sebagai input boleh didayakan.

WATCH TIMER WDT Pemasa pengawas WDT direka untuk mengelakkan akibat bencana daripada kegagalan program rawak. Ia juga boleh digunakan dalam aplikasi yang berkaitan dengan pemasaan, seperti pengesan nadi yang terlepas. Idea menggunakan pemasa pengawas adalah untuk menetapkan semula secara tetap di bawah kawalan program atau pengaruh luar sebelum tamat masanya tamat dan pemproses ditetapkan semula. Jika program berjalan seperti biasa, arahan tetapan semula pengawas CLRWDT hendaklah dilaksanakan secara kerap untuk mengelakkan pemproses daripada ditetapkan semula. Jika mikropemproses secara tidak sengaja melangkaui atur cara (contohnya, disebabkan gangguan kuat dalam litar bekalan kuasa) atau tersekat di beberapa bahagian program, arahan tetapan semula pemasa pengawas kemungkinan besar tidak akan dilaksanakan dalam masa yang mencukupi, dan tetapan semula pemproses yang lengkap akan berlaku, memulakan semua fungsi, mendaftar dan membawa sistem ke dalam keadaan berfungsi.

Pemasa pengawas dalam PIC16C84 tidak memerlukan sebarang komponen luaran dan berjalan pada pengayun RC terbina dalam, dan penjanaan tidak berhenti walaupun tiada kelajuan jam pemproses. Tempoh pemasa pengawas biasa ialah 18 ms. Anda boleh menyambungkan praskala kepada pemasa pengawas dan meningkatkan tempohnya sehingga 2 saat.

Satu lagi fungsi pemasa pengawas adalah untuk menghidupkan pemproses daripada mod kuasa rendah, di mana pemproses ditukar dengan arahan SLEEP. Dalam mod ini, PIC16C84 menggunakan arus yang sangat sedikit - kira-kira 1 µA. Anda boleh bertukar daripada mod ini kepada mod pengendalian sama ada melalui peristiwa luaran dengan menekan butang, dengan mencetuskan penderia atau dengan pemasa pengawas.

PENJANA JAM Bagi mikropengawal keluarga PIC, adalah mungkin untuk menggunakan empat jenis penjana jam: Resonator kuarza XT HS resonator kuarza frekuensi tinggi LP resonator kuarza penggunaan mikro RC rantai RC Jenis penjana jam yang digunakan ditentukan dalam proses aplikasi pengaturcaraan litar mikro itu. Jika pilihan XT, HS dan LP ditentukan, resonator kuarza atau seramik atau sumber jam luaran disambungkan kepada litar mikro, dan jika pilihan RC ditentukan, perintang dan kapasitor disambungkan. Sudah tentu, seramik dan, terutamanya, resonator kuarza adalah lebih tepat dan stabil, tetapi jika ketepatan pemasaan yang tinggi tidak diperlukan, penggunaan penjana RC boleh mengurangkan kos dan dimensi peranti.

LITAR TETAP SEMULA Pengawal mikro keluarga PIC menggunakan litar set semula kuasa hidup dalam kombinasi dengan pemasa mula penjana, yang membolehkan dalam kebanyakan situasi dilakukan tanpa perintang dan kapasitor tradisional.

Hanya sambungkan input MCLR ke sumber kuasa. Jika bunyi impuls atau lonjakan mungkin berlaku semasa menghidupkan kuasa, lebih baik menggunakan perintang siri 100-300 Ohm. Jika kuasa meningkat dengan sangat perlahan (lebih perlahan daripada 70 ms), atau anda berjalan pada kelajuan jam yang sangat rendah, maka anda perlu menggunakan litar tetapan semula perintang dan kapasitor tradisional.

DARI TEORI KE AMALI...

Kami secara ringkas berkenalan dengan elemen utama yang membentuk keluarga PIC mikropengawal. Sekarang mari kita beralih kepada latihan praktikal.

Kami akan menulis program pendek, memasangnya, menulisnya ke dalam litar mikro dan melihat apa yang berlaku.

Untuk ini kita memerlukan perkara berikut: - Cip PIC16C84; - Penghimpun MPALC; - Pengaturcara PROPIC; - bekalan kuasa DC atau AC 18-36 V; - papan roti dengan peranti paparan.

Gambarajah skematik peranti petunjuk, yang akan kami gunakan untuk menunjukkan operasi arahan PIC16C84 utama, ditunjukkan dalam Rajah 5. (anda perlu melukis) Seperti yang anda lihat, peranti itu hanya terdiri daripada 8 LED dengan pengehad arus perintang dan elemen penetapan frekuensi. Setiap pin keluarga PIC mikropengawal boleh terus mengawal LED tanpa penguat tambahan.

Apakah PIC?

Mari kita mulakan dengan penerangan tentang kod asas yang akan digunakan dalam contoh kita. Apabila anda mula menulis kod untuk projek anda, bahagian pengepala (semua kod sehingga baris dengan ungkapan ORG 0) harus mengambil kira spesifikasi aplikasi anda. Bahagian pengepala mentakrifkan nama logik untuk semua sumber yang digunakan dalam projek - port, pembolehubah bit dan bait serta daftar. Pengepala kami juga menetapkan port I/O, supaya semua bit port A dan B akan ditetapkan sebagai output selepas melaksanakan arahan berikut: MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB Apabila kuasa dihidupkan, PIC16C84 menetapkan semua bit port A dan B untuk memasukkan dan mula melaksanakan program dari alamat 000h. Kod asas ditunjukkan dalam Rajah 6. (perlu melukis) Sesuatu seperti ini: ; Contoh kod asas untuk program demo; SENARAI P=16C84, E=2 ; ; Bahagian Tajuk ; ; perihalan daftar operasi TMR0 EQU 01j PC EQU 02j STATUS EQU 03j FSR EQU 04j ; I/O mendaftar CNTRLPORT EQU 05h DATAPORT EQU 06h ; Sel RAM CALAR EQU 0Ch DIGIT EQU 0Dh ; daftar bit STATUS C EQU 0j DC EQU 1j Z EQU 2j PD EQU 3j HINGGA EQU 4j RP EQU 5j ; daftar kawalan TRISA EQU 85j TRISB EQU 86j ; perkataan permulaan untuk port input/output INITA EQU B'00000000' INITB EQU B'00000000' ; ; Bahagian kerja; ; permulaan kod boleh laku ORG 0 GOTO BEGIN ; ORG 100j MULAKAN MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB ; ; Tampal kod contoh di sini; TAMAT ; Rujuk kembali Rajah 4 seperti yang diperlukan semasa kita membincangkan kod asas. Pertama, semua baris bermula dengan tanda ";" dilihat oleh penghimpun sebagai ulasan. Mari kita beralih kepada ungkapan TMR0. Kami memberitahu pemasang bahawa setiap kali perkataan TMR0 ditemui, ia mesti menggantikan nilai 01h (01 perenambelasan). Perkataan "EQU" bermaksud kesamarataan. Oleh itu, kami memberikan TMR0 nilai 1j. Seperti yang dapat dilihat dari Rajah 4, daftar TMR0 sebenarnya mempunyai alamat 1h. Anda boleh menggunakan 01h setiap kali anda ingin menangani daftar TMR0, tetapi ia akan menjadi lebih sukar untuk nyahpepijat kerana anda perlu ingat bahawa 01h bermakna RTCC pada setiap masa. Anda juga mungkin mempunyai data yang sama dengan 01h. Menggunakan nama simbolik menghapuskan kekaburan dan menjadikan teks sumber lebih mudah dibaca. Anda juga boleh melihat ungkapan untuk mentakrifkan daftar PC, STATUS dan FSR. Nama PC sepadan dengan alamat pendaftaran 02h, nama STATUS sepadan dengan alamat pendaftaran 03h, nama FSR untuk mendaftar alamat 04h, dan seterusnya. Kami juga menetapkan nama untuk port I/O, CNTRLPORT (05j) dan DATAPORT (06j). Sel RAM juga boleh mempunyai nama. Kami memilih nama "SCRATCH" untuk sel dengan alamat 0Ch dan "DIGIT" untuk sel dengan alamat 0Dh. Jika anda membaca teks ini hingga akhir, anda akan melihat bahawa kami tidak menggunakan PC secara langsung di mana-mana, walaupun nama ini ditakrifkan. Tiada kesilapan dalam hal ini - anda boleh menentukan nama dan kemudian tidak menggunakannya, walaupun, sudah tentu, anda tidak boleh menggunakan nama jika ia belum ditakrifkan sebelum ini. Jangan terlalu risau tentang perkara ini - tugas pemasang ialah menyemak teks untuk memastikan semua peraturan dipenuhi dan anda akan mendapat mesej ralat jika sesuatu tidak sepadan. Anda bukan sahaja boleh menamakan daftar, tetapi juga bit individu dalam daftar. Beri perhatian kepada bahagian yang menentukan daftar STATUS. Rajah 7 menunjukkan daftar STATUS terdiri daripada. (Rajah 3.9.1 di halaman 2-544) Simbol C diberikan nilai 0j, kerana C atau CARRY ialah bit sifar bagi perkataan status STATUS. Setiap kali kita perlu menyemak bit CARRY (bit 0), kita akan menggunakan aksara "C" yang telah ditetapkan. Bila-bila masa kami ingin mengakses bit 2, atau bit ZERO, kami akan menggunakan aksara "Z" dan bukannya 02h. Anda boleh menentukan struktur lengkap bit daftar, walaupun anda tidak menggunakan kesemuanya. Kini jelas kepada kita bagaimana daftar diterangkan, dan kita boleh beralih kepada kod boleh laku. Sebelum kita mula melaksanakan kod, kita mesti menetapkan ungkapan ORG 0. Ini adalah petunjuk kepada pemasang bahawa kod yang mengikuti ungkapan ini bermula pada alamat EEPROM sifar. Ungkapan "ORG" digunakan untuk meletakkan segmen kod pada alamat yang berbeza dalam saiz EEPROM. Ungkapan ORG lain diletakkan sebelum label BEGIN, yang mempunyai alamat 100h, seperti yang ditentukan oleh ungkapan ORG 100h. Kod boleh laku mesti berakhir dengan arahan END, yang bermaksud bahawa tiada arahan boleh laku mengikuti arahan ini. Apabila kuasa dihidupkan, PIC16C84 pergi ke alamat 000h. Arahan pertama yang akan dilaksanakan oleh pemproses ialah arahan GOTO BEGIN, yang akan memindahkan kawalan ke alamat 100j dan kerja selanjutnya akan diteruskan dari alamat ini. BEGIN ialah nama label yang boleh dipilih pengguna (label mesti sentiasa bermula pada kedudukan baris pertama) yang digunakan oleh pemasang sebagai rujukan alamat. Semasa operasi, pemasang menentukan lokasi label BEGIN dan ingat bahawa jika nama ini ditemui semula, alamat label akan diganti. Arahan CALL dan GOTO menggunakan label untuk rujukan dalam teks sumber. Sekarang mari kita lihat arahan berikut yang dilaksanakan oleh pemproses. Perintah MOVLW INITA memuatkan daftar kerja W dengan nilai yang diberikan kepada nama INITA. Nilai ini dinyatakan dalam pengepala dan bersamaan dengan B'00000000', iaitu, 00j. Aksara B' bermaksud bahawa data adalah dalam format binari. Anda boleh menulis 0 (perpuluhan) atau 0h (perenambelasan) di tempat yang sama dan mendapatkan hasil yang sama. Perwakilan binari adalah lebih mudah untuk digunakan dalam kes di mana operasi dengan bit dalam daftar dijangka. Perintah MOVWF TRISA berikut memuatkan nilai daripada daftar kerja W ke dalam daftar kawalan konfigurasi port A TRISA. Menetapkan sedikit daftar ini kepada 0 menentukan bahawa bit port A yang sepadan ialah output. Dalam kes kami, semua bit port A ditetapkan oleh output. Ambil perhatian bahawa port A hanya mempunyai 5 bit, dan 3 bit tertinggi nilai yang ditulis pada daftar TRISA, yang juga mempunyai 5 bit, tidak digunakan. Jika kami mahu, sebagai contoh, untuk menetapkan bit paling tidak ketara port A sebagai input, kami akan menetapkan nilai INITA dalam bahagian perihalan daftar kepada B'00000001'. Jika, semasa program berjalan, kita perlu mentakrifkan semula penetapan bit port individu, contohnya, semasa penghantaran dua arah, maka adalah paling mudah untuk menetapkan semua perkataan konfigurasi yang diperlukan dalam bahagian penerangan, seperti yang kita lakukan untuk INITA dan INITB . Dua arahan seterusnya MOVLW INITB dan MOVWF TRISB mentakrifkan konfigurasi port B. Kami boleh menjimatkan wang dengan tidak menulis arahan MOVLW INITB, kerana dalam kes kami INITB juga 0j. Walau bagaimanapun, kami tidak melakukan ini kerana ia boleh membawa kepada ralat yang sukar dikesan jika kami kemudiannya perlu menukar tugasan sedikit pun. Daripada menukar hanya satu bit dalam satu port, dua bit dengan nombor yang sama dalam dua port akan berubah. Oleh itu, sehingga program selesai, adalah tidak digalakkan untuk membuat penjimatan sedemikian, walaupun pada akhirnya, pada peringkat pengoptimuman kod, pengulangan sedemikian boleh dialih keluar. Apa yang telah kita lakukan? 1. Menggunakan baris EQU, kami memberitahu pemasang nama simbolik yang akan kami gunakan. 2. Kami telah menetapkan vektor tetapan semula pada alamat 000h. 3. Kami menetapkan alamat permulaan pelaksanaan program daripada label BEGIN pada alamat 100h. 4. Kami telah mengkonfigurasi semua bit port A dan B sebagai output. Sekarang kita boleh memasukkan kod contoh antara kepala dan penghujung kod asas kita dan bukannya baris yang diulas "Masukkan kod contoh di sini." Kami akan menggantikan baris ini dengan arahan sebenar, memasang program yang terhasil, menulisnya ke dalam litar mikro, menggerakkan litar mikro ke papan roti dengan peranti petunjuk dan lihat apa yang berlaku. PROGRAM PERTAMA Untuk program pertama, kita hanya memerlukan tiga arahan: MOVLW k MOVWF f GOTO k Kami telah pun menggunakan arahan ini dalam pengepala kod asas kami. Perintah MOVLW memuatkan bait literal atau pemalar ke dalam daftar kerja W. Perintah MOVWF berikut memindahkan bait daripada daftar kerja W ke daftar f yang ditentukan. Arahan GOTO memindahkan kawalan ke alamat k. Program berikut menulis nilai 01010101 ke daftar kerja W dan kemudian mengeluarkan kandungannya ke port B. Selepas memulakan program ini, anda akan melihat empat LED bercahaya. MOVLW B'01010101' ;muat 01010101 ke dalam daftar W MOVWF DATAPORT ;tulis W ke port B (DATAPORT) GOTO $ ;gelung selamanya Arahan pemasang "$" bermaksud nilai semasa pembilang atur cara (PC). Oleh itu, arahan GOTO $ bermaksud pergi ke tempat kami berada sekarang. Kitaran ini tidak berkesudahan kerana tiada cara (selain gangguan) untuk keluar daripadanya. Arahan GOTO $ sering digunakan untuk menghentikan kod semasa menyahpepijat. ASSEMBLY Kami akan menggunakan pemasang makro MPALC, kerana ia diedarkan secara bebas oleh MICROCHIP dan mengandungi semua keupayaan yang kami perlukan. Jika anda lebih suka menggunakan pemasang lain, gunakan penerangannya untuk memasang program kami. Baris arahan untuk menjalankan pemasang makro MPALC adalah sangat mudah: MPALC <source_text> [options] dengan <source_text> ialah nama fail yang mengandungi teks sumber yang mesti dipasang, dan terdapat banyak pilihan. Penerangan lengkap tentang pilihan diberikan oleh pemasang menggunakan pilihan /? Pada mulanya, kita tidak perlu menentukan satu pilihan. Satu-satunya perkara yang masih perlu kita lakukan ialah menunjukkan jenis pemproses yang program kita ditulis dan jenis ralat yang harus dihasilkan oleh pemasang. Ini dilakukan menggunakan arahan pemasang LIST (Gamb. 6). Sambungan fail sumber lalai ialah .ASM. Sambungan lain mesti dinyatakan dengan jelas. Jadi, ambil fail EXAMPLE.ASM, yang mengandungi teks yang ditunjukkan dalam Rajah 6, dan jalankan pemasang: MPALC EXAMPLE Hasil daripada pemasang, fail dicipta dengan sambungan berikut: * Fail objek OBJ * Fail penyenaraian LST * Ralat ERL dan fail amaran * Fail simbol SYM Fail objek dicipta dalam format heksadesimal dan mengandungi kod yang mesti ditulis pada cip. Fail penyenaraian mengandungi penyenaraian lengkap program bersama dengan kod but. Fail ralat dan amaran merekodkan semua ralat dan amaran yang berlaku semasa proses pemasangan. Mereka juga terdapat dalam fail penyenaraian. Jadual label simbolik, ditulis pada fail simbolik, bertujuan untuk kerja selanjutnya dengan penyahpepijat. Selepas memproses atur cara kami, penghimpun sepatutnya menghasilkan mesej "Tiada ralat ditemui oleh penghimpun," bermakna tiada ralat ditemui. Fail ralat tidak sepatutnya dibuat. Jika pemasang anda menjana sebarang mesej ralat atau fail EXAMPLE.OBJ, EXAMPLE.LST dan EXAMPLE.SYM tidak dibuat, semak semula sama ada anda melakukan semuanya dengan betul. PENGATURCARAAN Kini anda mempunyai fail objek EXAMPLE.OBJ, yang mesti ditulis pada cip. Rakaman dijalankan menggunakan pengaturcara dan program PROPIC. Baris arahan untuk melancarkan program PROPIC adalah serupa dengan baris untuk melancarkan pemasang: PROPIC <object_file> [options] dengan <object_file> ialah nama fail objek yang dicipta oleh pemasang, dan pilihan menentukan mod rakaman dalam cip. Senarai pilihan dipaparkan menggunakan /? Seperti dalam kes pemasang, pada mulanya kita tidak perlu menentukan satu pilihan. Ambil pengaturcara, sambungkan kabelnya ke penyambung port pencetak (ke port pencetak pertama jika mesin anda mempunyai 2 atau 3 port pencetak dipasang).

Apakah PIC? Apakah PIC?

Ambil sumber kuasa 18...36 V DC atau AC, mampu memberikan arus sehingga 100 mA dan sambungkannya kepada pengaturcara. Sediakan cip PIC16C84, tetapi jangan masukkannya ke dalam soket pengaturcara lagi. Sekarang anda boleh memulakan pengaturcara:

CONTOH PROPIC { di sini anda perlu memasukkan cara program pengaturcara berfungsi. } Kini anda mempunyai litar mikro yang diprogramkan dan anda boleh melihat bagaimana ia akan berfungsi. UJIAN

Ambil papan roti dan pasang di atasnya litar yang ditunjukkan dalam Rajah 5. Tiada bahagian kritikal dalam litar ini. Semua perintang boleh mempunyai sisihan daripada nilai nominal +-30%, LED - mana-mana dengan arus undian tidak lebih daripada 10 mA. Untuk memasang cip PIC16C84, gunakan soket. Untuk kuasa litar kami, anda boleh menggunakan bekalan kuasa yang sama yang anda gunakan semasa memprogramkan litar mikro. Anda juga boleh menggunakan bekalan kuasa makmal 5 V. Dalam kes ini, penstabil KR142EH5A, jambatan diod dan kapasitor elektrolitik tidak diperlukan, dan voltan 5 V dibekalkan ke titik 2 pada litar.

Selepas litar dipasang, periksa dengan teliti sama ada semuanya dipasang dengan betul, LED dipasang dalam kekutuban yang betul, dan kuasa kepada litar mikro dibekalkan ke kaki yang betul dan dalam polariti yang betul. Ambil cip yang diprogramkan, masukkan ke dalam soket pada papan roti dan hidupkan kuasa. 4 LED harus menyala (setiap yang lain). Program pertama anda berfungsi! SET PERINTAH PIC

Memandangkan anda telah mempelajari cara memasang atur cara, tuliskannya ke dalam litar mikro dan ujinya pada papan roti, kita boleh meneruskan untuk menerangkan keseluruhan set arahan untuk keluarga PIC mikropengawal. Kami akan terus memberi tumpuan kepada PIC16C84, walaupun hampir semua yang akan kami bincangkan terpakai kepada mikropengawal lain dalam keluarga PIC. Semasa penerangan berlangsung, kami akan menyusun atur cara pendek untuk lebih memahami cara arahan tertentu berfungsi. Anda boleh memasukkan program ini ke dalam kod asas, memasangnya, menulisnya ke dalam litar mikro, dan, memasukkan litar mikro ke dalam papan roti, lihat cara ia berfungsi. Jika pada titik seterusnya semuanya jelas kepada anda, anda tidak perlu mencubanya, tetapi teruskan ke titik seterusnya. TIDAK

Mari mulakan penerangan kami dengan arahan NOP. Sukar untuk melihat output arahan ini kerana ia tidak melakukan apa-apa. Arahan ini biasanya digunakan dalam gelung kelewatan masa atau untuk memperhalusi masa pelaksanaan bahagian tertentu program. CLRW

Perintah ini mengosongkan daftar kerja W. Mari tambah satu baris pada contoh kita dan lihat bahawa semua LED menyala.

MOVLW B'01010101' ;muat 01010101 ke dalam daftar W

CLRW ;kosongkan daftar W

MOVWF DATAPORT ;tulis W ke port B (DATAPORT)

GOTO $ ;gelung selamanya CLRF f

CLRF lakukan untuk mana-mana daftar apa yang CLRW lakukan untuk daftar kerja W. Perintah berikut akan menetapkan port B kepada 0h.

CLRF DATAPORT ;kosongkan port B (DATAPORT) SUBWF f,d ADDWF f,d

Tolak daftar kerja W daripada mana-mana daftar f. Perintah ini juga menetapkan bendera CARRY, DIGIT CARRY, dan ZERO dalam daftar STATUS. Selepas melaksanakan arahan, anda boleh menyemak atribut ini dan menentukan sama ada hasilnya adalah sifar, positif atau negatif. Simbol d selepas koma bermaksud alamat di mana keputusan arahan akan diletakkan. Jika d=0, maka hasilnya diletakkan dalam daftar kerja W, dan jika d=1, maka hasilnya ditulis ke daftar f yang digunakan dalam perintah.

Dalam contoh kami, nilai 0FFh dimuatkan ke dalam daftar SCRATCH, dan nilai 01h ke dalam daftar W. Perintah SUBWF kemudiannya dilaksanakan dan hasilnya dipaparkan pada LED.

MOVLW 0FFh ;muatkan 0FFh ke dalam daftar W

MOVWF SCRATCH ;muat kandungan W ke dalam daftar SCRATCH

MOVLW 01h ;muat 01h ke dalam daftar W

SUBWF SCRATCH,0 ;lakukan penolakan LED harus memaparkan 11111110, di mana 1 sepadan dengan LED gelap dan 0 kepada LED menyala.

Arahan ADDWF berfungsi dengan cara yang sama, menambah daftar kerja W ke mana-mana daftar f dan menetapkan ciri yang sama. Contoh berikut menunjukkan pengendalian arahan ADDWF.

MOVLW 0j ;muat 0 ke dalam daftar W

MOVWF SCRATCH ;muat kandungan W ke dalam daftar SCRATCH

MOVLW 1h ;muat 01h ke dalam daftar W

ADDWF SCRATCH,0 ;lakukan penambahan LED harus memaparkan 00000001.

Sila ambil perhatian bahawa nilai FFh dalam contoh penolakan didahului dengan "0". Simbol "0" dalam pemasang bermaksud bahawa ia adalah nombor, bukan label. Jika tiada simbol 0, maka pemasang akan mula mencari label dengan nama FFh, yang tidak wujud dalam program ini dan, oleh itu, ralat akan berlaku. Aksara "h" berikutan nilai 0FF bermakna nilai ditentukan dalam format perenambelasan. SUBLW k ADDLW k

Kedua-dua arahan ini berfungsi sama seperti yang diterangkan di atas, kecuali operasi dilakukan antara daftar kerja W dan pemalar bait yang dinyatakan dalam arahan. Arahan SUBLW menolak daftar kerja W daripada pemalar k, dan arahan ADDLW menambah daftar kerja W kepada pemalar k. Arahan ini juga menetapkan bendera CARRY, DIGIT CARRY dan ZERO. Hasil arahan diletakkan dalam daftar kerja W. Contoh berikut akan mengurangkan CALAR sebanyak 5.

MOVLW 0FFh ;muatkan 0FFh ke dalam daftar W

MOVWF SCRATCH ;muat kandungan W ke dalam daftar SCRATCH

SUBLW 05h ;tolak 5 daripada daftar kerja

MOVWF SCRATCH ;muat kandungan baharu SCRATCH LED seharusnya memaparkan 11111010. DECF f,d INCF f,d

Arahan DECF mengurangkan daftar yang ditentukan sebanyak 1, dan INCF menambah daftar yang ditentukan sebanyak 1. Hasilnya boleh diletakkan semula ke dalam daftar yang ditentukan (untuk d=1) atau ke dalam daftar kerja W (untuk d=0). Hasil daripada melaksanakan arahan ini, atribut ZERO boleh ditetapkan dalam daftar STATUS. Berikut ialah contoh menggunakan arahan ini:

MOVLW 0FFh ;muatkan 0FFh ke dalam daftar W

MOVWF SCRATCH ;muat kandungan W ke dalam daftar SCRATCH

DECF SCRATCH,0 ;kurangkan SCRATCH sebanyak 1

Contoh ini akan meningkatkan SCRATCH daripada 0 kepada 1.

CALAR CLRF ;CALAR jelas

INCF SCRATCH,0 ;naikkan SCRATCH sebanyak 1 IORWF f,d ANDWF f,d XORWF f,d

Ketiga-tiga arahan ini melaksanakan operasi logik ATAU, DAN, dan ATAU EKSKLUSIF. Operasi penambahan logik OR paling kerap digunakan untuk menetapkan bit individu dalam daftar. Bit ini kemudiannya dibersihkan dengan operasi pendaraban DAN logik. Apabila operasi EKSKLUSIF ATAU dilakukan pada bit yang sama, hasilnya ialah 0. Oleh itu, operasi EKSKLUSIF ATAU sering digunakan untuk menyemak status (ditetapkan atau dikosongkan) bit tertentu dalam sebuah daftar. Prosedur berikut akan menetapkan bit 1 pada port B menggunakan arahan IORWF:

CLRF DATAPORT ;clear port B

MOVLW B'00000010'; tetapkan topeng dalam daftar W

IORWF DATAPORT,1 ;setkan bit dalam port B menggunakan mask W

GOTO $ ;gelung selamanya LED harus menunjukkan 00000010. Sekarang mari kita set semula 2 bit menggunakan arahan ANDWF:

MOVLW B'11111111' ;muatkan 0FFj ke dalam daftar W

MOVWF DATAPORT ; tetapkan semua bit dalam port B

MOVLW B'00000101'; tetapkan topeng dalam daftar W

ANDWF DATAPORT,1 ;kosongkan bit dalam port B menggunakan mask W

GOTO $ ;gelung selamanya LED harus menunjukkan 00000101.

Katakan kami menggunakan daftar SCRATCH dan ingin tahu sama ada ia sama dengan nilai 04h. Ini adalah kes yang mudah untuk menggunakan arahan XORWF:

MOVLW 04h ;muat 04h ke dalam daftar W

MOVWF SCRATCH ;muat daftar W ke SCRATCH

XORWF SCRATCH,0 ;semak kesamaan W dan SCRATCH Oleh kerana SCRATCH dan W adalah sama, hasil operasi XORWF adalah sifar (semua LED dihidupkan). Daftar STATUS akan menetapkan bit ZERO, yang kemudiannya boleh disemak dan diproses oleh program sebenar. IORLW k ANDLW k XORLW k

Ketiga-tiga arahan ini melakukan tindakan yang sama seperti yang diterangkan di atas, kecuali operasi dilakukan antara daftar kerja W dan topeng yang dinyatakan dalam arahan. Hasil arahan diletakkan dalam daftar kerja W. Contohnya:

MOVLW 0FFh ;muatkan 0FFh ke dalam daftar W

ANDLW 040h ;tinggalkan bit ke-6 LED akan menunjukkan 01000000.

MOVLW 10h ;muat 10h ke dalam daftar W

IORLW 09h ;set bit 0 dan 3 LED akan menunjukkan 00011001.

MOVLW B'00100000' ;muat 40j ke dalam daftar W

XORLW B'11111111' ;terbalikkan W LED akan menunjukkan 11011111. MOVF f,d

Perintah ini digunakan terutamanya untuk memindahkan daftar ke daftar kerja W (d=0). Jika anda menetapkan d=1, maka arahan ini akan memuatkan daftar ke dalam dirinya sendiri, tetapi bit SIFAR dalam daftar STATUS akan ditetapkan mengikut kandungan daftar. Sebagai contoh, kami ingin memuatkan daftar SCRATCH 0Fh, dan kemudian memuatkan daftar SCRATCH ke dalam daftar kerja W.

MOVLW 0Fh ;muat 0Fh ke dalam daftar kerja W

MOVWF SCRATCH ;muat daftar W ke SCRATCH

CLRW ; jelas W

MOVF SCRATCH,0 ;muat SCRATCH ke dalam daftar W Jika semasa pelaksanaan program kita ingin menyemak daftar SCRATCH untuk sifar, kita boleh melaksanakan arahan berikut:

MOVF SCRATCH,1 Bit ZERO daftar STATUS akan ditetapkan jika keadaannya benar (SCRATCH = 0j). COMF f,d

Perintah ini menyongsangkan mana-mana daftar yang diberikan. Apabila d=0, hasilnya dimasukkan ke dalam daftar kerja W, dan apabila d=1, kandungan daftar yang ditentukan diterbalikkan. Sebagai contoh, mari terbalikkan nilai 01010101:

MOVLW B'01010101' ;muat 01010101 ke dalam daftar W

MOVWF SCRATCH ;muat daftar W ke SCRATCH

COMF COMF,0 ;terbalikkan SCRATCH LED akan menunjukkan 10101010. DECFSZ f,d INCFSZ f,d

Sebaik sahaja anda mempunyai sedikit pengalaman dengan pemasang PIC, anda akan menggunakan arahan ini dengan kerap. Apabila d=1, perintah DECFSZ berkurangan satu, dan INCFZ menambah daftar yang ditentukan sebanyak satu dan melangkau perintah seterusnya jika daftar menjadi sifar. Apabila d=0, hasilnya ditulis ke daftar W dan arahan seterusnya dilangkau jika daftar kerja W menjadi sifar. Arahan ini digunakan untuk menjana kelewatan masa, pembilang, gelung, dsb. Berikut ialah contoh biasa menggunakan gelung: MULAKAN

MOVLW 0FFh ;muat FFh ke dalam daftar W

MOVWF SCRATCH ;muatkan W daftar ke dalam SCRATCH LOOP

DECFSZ SCRATCH,1 ;kurangkan SCRATCH sebanyak 1

GOTO LOOP ;dan kembali sehingga = 0

MOVF DIGIT ;muat DIGIT daftar ke W

MOVWF DATAPORT ;output kepada LED

DIGIT DECF,1 ;turunkan DIGIT daftar sebanyak 1

GOTO START ;pergi ke permulaan Akibatnya, LED akan berkelip pada frekuensi yang berbeza. LED tertib rendah akan berkelip paling kerap, dan LED tahap tinggi akan berkelip paling sedikit. Pada frekuensi jam 4 MHz, kekerapan berkelip bagi LED peringkat tinggi ialah kira-kira 8 Hz, dan setiap yang berikutnya akan berkelip dua kali lebih kerap. Sekarang mari kita fikirkan bagaimana kita melakukannya. Perintah DECFSZ di sini berfungsi dalam gelung kelewatan yang terdiri daripada dua arahan - DECFSZ dan GOTO LOOP. Memandangkan kami sebelum ini memuatkan daftar SCRATCH dengan nilai 0FFj, gelung ini akan dilaksanakan 255 kali sehingga SCRATCH menjadi sifar. Pada frekuensi jam 4 MHz ini memberikan kelewatan 1 µsec/arahan * 2 arahan * 255 = 510 µsec. Kami tidak menulis apa-apa ke daftar DIGIT terlebih dahulu, jadi sebarang nilai boleh ada, yang merupakan output kepada LED pada laluan pertama. Kemudian daftar DIGIT dikurangkan sebanyak 1 dan kitaran diulang dari awal. Akibatnya, daftar DIGIT berulang melalui semua nilai dalam 256 kitaran, i.e. dalam kira-kira 130 ms.

Kod yang sama boleh digunakan dengan arahan INCFSZ, menggantikan nilai yang dimuatkan ke dalam daftar SCRATCH dari FFh ​​ke 0h. LED akan berkelip dengan cara yang sama jika anda menggantikan arahan DECF dengan arahan INCF. SWAPF f,d

Perintah ini menukar gigitan dalam mana-mana daftar. Seperti arahan lain, apabila d=0 hasilnya ditulis ke daftar kerja W, dan apabila d=1 ia kekal dalam daftar. Berikut ialah contoh mudah menggunakan arahan ini:

MOVLW B'00001111' ;muatkan 0Fh ke dalam daftar W

MOVWF SCRATCH ;muat daftar W ke SCRATCH

SWAPF SCRATCH,0 ;tukar nibbles LED akan menunjukkan 11110000. RRF f,d RLF f,d

Terdapat dua arahan anjakan dalam pemasang PIC - anjakan kanan melalui bit CARRY mana-mana daftar RRF dan anjakan kiri melalui bit CARRY mana-mana daftar RRF. Seperti arahan lain, apabila d=0 hasil anjakan ditulis ke daftar W, dan apabila d=1 ia kekal dalam daftar. Arahan anjakan digunakan untuk melaksanakan operasi darab dan bahagi, untuk pemindahan data bersiri, dan untuk tujuan lain. Dalam semua kes, bit yang dialihkan daripada daftar 8-bit ditulis ke bit CARRY dalam daftar STATUS, dan bit CARRY ditulis ke hujung daftar yang lain, bergantung pada arah peralihan. Apabila beralih ke kiri, RLF CARRY ditulis pada bit paling ketara dalam daftar, dan apabila beralih ke kanan, RRF CARRY ditulis pada bit paling ketara dalam daftar.

STATUS CLRF ;daftar STATUS jelas

MOVLW 0FFh ;muatkan 0FFh ke dalam daftar W

MOVWF SCRATCH ;muat daftar W ke SCRATCH

RRF SCRATCH,0 ;shift right LED seharusnya menunjukkan 01111111 kerana CARRY dimuatkan ke dalam bit yang paling ketara. Sekarang mari kita alihkannya ke kiri:

STATUS CLRF ;daftar STATUS jelas

MOVLW 0FFH ; muatkan 0FFh ke dalam daftar W

MOVWF SCRATCH ;muat daftar W ke SCRATCH

RLF SCRATCH,1 ;shift left LED seharusnya menunjukkan 11111110. BCF f,b BSF f,b

Perintah bit BCF yang jelas dan set BSF bit digunakan untuk bekerja dengan bit individu dalam daftar. Parameter b bermaksud bilangan bit yang menjalankan operasi, dan boleh mengambil nilai dari 0 hingga 7. Mari cuba hidupkan LED menggunakan arahan BCF:

MOVLW 0FFh ;muatkan 0FFh ke dalam daftar W

MOVWF DATAPORT ;matikan LED

BCF DATAPORT,7 ;clear bit 7 dalam port B

GOTO $ ;gelung selama-lamanya Ini akan menghidupkan LED sepadan dengan bit 7. Ingat bahawa kami melakukan perkara yang sama menggunakan topeng dan arahan ANDWF. Perbezaannya ialah arahan ANDWF dan IORWF memerlukan pembentukan awal topeng dan menyimpannya dalam beberapa daftar, tetapi pada masa yang sama ia mampu menetapkan atau mengosongkan beberapa bit secara serentak. Arahan BCF dan BSF beroperasi dengan hanya satu bit. Di samping itu, arahan BCF dan BSF tidak mengubah daftar status STATUS, jadi ia sering digunakan dalam kes di mana semakan daftar status berikutnya tidak diperlukan. BTFSC f,b BTFSS f,b

Arahan lompat bersyarat BTFSC dan BTFSS menyemak keadaan bit tertentu dalam mana-mana daftar dan, bergantung pada keputusan, langkau arahan seterusnya atau tidak. Perintah BTFSC melangkau arahan jika bit yang ditentukan jelas, dan arahan BTFSS melangkau arahan jika ia ditetapkan. Berikut ialah contoh mudah:

MOVLW 0FFh ;muatkan 0FFh ke dalam daftar W

MOVWF DATAPORT ;matikan LED

MOVLW B'00000001' ;muat 01j ke dalam daftar W

MOVWF SCRATCH ;muatkan W daftar ke dalam SCRATCH LOOP

BTFSS CNTRLPORT,0 ;tandakan bit 0 dalam CNTRLPORT

GOTO LOOP ;tunggu sehingga bit 0 ditetapkan

BCF DATAPORT,7 ;hidupkan LED

GOTO $ ;gelung selamanya Contoh ini menyemak bit 0 port A (pin 17 cip) dan, jika pin ini ditetapkan tinggi, menghidupkan LED. Cuba gantikan BTFSS dengan BTFSC dalam contoh ini. LED akan dihidupkan apabila bit 0 port A menjadi rendah.

Terdahulu kami menyebut keupayaan untuk menyemak bit status dalam daftar STATUS. Ini juga dilakukan menggunakan arahan BTFSS dan BTFSC:

;Menyemak bit CARRY

STATUS BTFSS,C ;jika C ditetapkan, langkau GOTO

PERGI DI MANA_PERLU ; Bit ZERO disemak dengan cara yang sama:

;Menyemak bit ZERO

STATUS BTFSS,Z ;jika Z ditetapkan, langkau GOTO

PERGI DI MANA_PERLU ; Adalah selamat untuk mengatakan bahawa anda akan menggunakan contoh ini dengan kerap. CALL k PULANG

Kedua-dua arahan ini direka bentuk untuk berfungsi dengan subrutin. Arahan CALL digunakan untuk pergi ke subprogram pada alamat yang dinyatakan dalam arahan, dan arahan RETURN digunakan untuk kembali daripada subprogram. Kedua-dua arahan dilaksanakan dalam 2 kitaran. Alamat di mana perintah CALL berada disimpan dalam daftar tersusun khas yang dipanggil timbunan. Daftar ini tidak boleh diakses untuk akses dan hanya digunakan untuk panggilan subrutin dan pemulangan. Kedalaman timbunan, i.e. bilangan daftar khas ialah 8. Oleh itu, tidak lebih daripada 8 panggilan subrutin bersarang boleh dibuat daripada program utama. Selepas kembali dari subrutin, pelaksanaan diteruskan dengan arahan seterusnya selepas CALL. Daftar W dan daftar STATUS tidak disimpan semasa memanggil subrutin, jadi jika perlu, ia boleh disimpan di lokasi memori yang berasingan. Berikut ialah contoh mudah menggunakan subrutin: MULA

BSF DATAPORT,7 ;matikan LED

CALL TURNON ;panggilan subrutin

GOTO START ;pergi ke permulaan TURNON

BCF DATAPORT,7 ;hidupkan LED

RETURN ;return from subroutine Akibatnya, LED akan berkelip pada frekuensi kira-kira 150 kHz. RETLW k RETFIE

Terdapat dua lagi arahan yang direka untuk kembali daripada subrutin. Perintah RETLW mengembalikan pemalar yang dinyatakan dalam arahan ini dalam daftar kerja W, dan arahan RETFIE membolehkan gangguan. Perintah RETLW sering digunakan untuk membuat jadual nilai. Biarkan daftar kerja W mengandungi offset dari permulaan jadual. Kemudian anda boleh mendapatkan elemen yang dikehendaki menggunakan prosedur berikut:

MOVLW 02j ;set offset

CALL SHOWSYM ;panggilan subrutin

MOVWF DATAPORT ;elemen jadual output ke port B

GOTO $ ;gelung selamanya SHOWSYM

ADDWF PC ;kira mengimbangi jadual

RETLW 0AAh ;elemen jadual pertama

RETLW 0BBh ;elemen jadual ke-2

RETLW 0CCh ;elemen ke-3 jadual LED hendaklah memaparkan 10111011. PERINTAH KHAS

Kami hanya perlu menyebut dua arahan khas - CLRWDT dan SLEEP. Perintah CLRWDT bertujuan untuk menetapkan semula pemasa pengawas, yang tujuannya telah kita bincangkan. Perintah ini mesti ada dalam bahagian program sedemikian sehingga masa pelaksanaan program antara dua arahan CLRWDT bersebelahan tidak melebihi pemasa pengawas. Perintah SLEEP bertujuan untuk meletakkan pemproses ke dalam mod penggunaan kuasa rendah. Selepas melaksanakan arahan ini, penjana jam pemproses dimatikan dan pemproses boleh ditukar kembali ke mod pengendalian sama ada melalui input tetapan semula, atau dengan pengendalian pemasa pengawas, atau dengan gangguan. KESIMPULAN

Artikel ini tidak mendakwa sebagai penerangan lengkap tentang keupayaan mikropengawal PIC16C84. Untuk melakukan ini, anda harus membaca penerangan teknikalnya. Juga untuk memahami semua keupayaan pemasang MPALC, arahan makro, pilihan, dsb. Ia akan berguna untuk anda membaca manualnya. Untuk menetapkan semua pilihan yang diperlukan dengan betul, anda harus membaca arahan untuk menggunakan pengaturcara. Contoh penggunaan mikropengawal akan memberi anda asas yang kukuh untuk projek bebas. Jika anda mempunyai sebarang pertanyaan, anda boleh menghubungi pusat sokongan serantau untuk produk MICROCHIP di alamat: Moscow, tambak Rubtsovskaya. 3 pejabat 502, tel. (095)-263-9930 Mereka akan sentiasa bersedia untuk menjawab semua soalan anda. Anda juga boleh mendapatkan versi baharu perisian, contoh aplikasi dan maklumat bantuan tentang BBS serantau dengan menghubungi (095)-162-8405

BBS mikro AD

Penerbitan: N. Bolshakov, rf.atnn.ru

Lihat artikel lain bahagian Pengawal mikro.

Baca dan tulis berguna komen pada artikel ini.

<< Belakang

Berita terkini sains dan teknologi, elektronik baharu:

Balai cerap astronomi tertinggi di dunia dibuka 04.05.2024

Meneroka angkasa dan misterinya adalah tugas yang menarik perhatian ahli astronomi dari seluruh dunia. Dalam udara segar di pergunungan tinggi, jauh dari pencemaran cahaya bandar, bintang dan planet mendedahkan rahsia mereka dengan lebih jelas. Satu halaman baharu dibuka dalam sejarah astronomi dengan pembukaan balai cerap astronomi tertinggi di dunia - Balai Cerap Atacama Universiti Tokyo. Balai Cerap Atacama, yang terletak pada ketinggian 5640 meter di atas paras laut, membuka peluang baharu kepada ahli astronomi dalam kajian angkasa lepas. Tapak ini telah menjadi lokasi tertinggi untuk teleskop berasaskan darat, menyediakan penyelidik dengan alat unik untuk mengkaji gelombang inframerah di Alam Semesta. Walaupun lokasi altitud tinggi memberikan langit yang lebih jelas dan kurang gangguan dari atmosfera, membina sebuah balai cerap di atas gunung yang tinggi memberikan kesukaran dan cabaran yang besar. Walau bagaimanapun, walaupun menghadapi kesukaran, balai cerap baharu itu membuka prospek yang luas kepada ahli astronomi untuk penyelidikan. ...>>

Mengawal objek menggunakan arus udara 04.05.2024

Perkembangan robotik terus membuka prospek baharu bagi kami dalam bidang automasi dan kawalan pelbagai objek. Baru-baru ini, saintis Finland membentangkan pendekatan inovatif untuk mengawal robot humanoid menggunakan arus udara. Kaedah ini menjanjikan untuk merevolusikan cara objek dimanipulasi dan membuka ufuk baharu dalam bidang robotik. Idea untuk mengawal objek menggunakan arus udara bukanlah perkara baru, tetapi sehingga baru-baru ini, melaksanakan konsep sedemikian masih menjadi cabaran. Penyelidik Finland telah membangunkan kaedah inovatif yang membolehkan robot memanipulasi objek menggunakan jet udara khas sebagai "jari udara". Algoritma kawalan aliran udara, yang dibangunkan oleh pasukan pakar, adalah berdasarkan kajian menyeluruh tentang pergerakan objek dalam aliran udara. Sistem kawalan jet udara, yang dijalankan menggunakan motor khas, membolehkan anda mengarahkan objek tanpa menggunakan fizikal ...>>

Anjing tulen jatuh sakit tidak lebih kerap daripada anjing tulen 03.05.2024

Menjaga kesihatan haiwan peliharaan kita adalah aspek penting dalam kehidupan setiap pemilik anjing. Walau bagaimanapun, terdapat andaian umum bahawa anjing baka tulen lebih terdedah kepada penyakit berbanding anjing campuran. Penyelidikan baru yang diketuai oleh penyelidik di Texas School of Veterinary Medicine dan Sains Bioperubatan membawa perspektif baru kepada soalan ini. Kajian yang dijalankan oleh Projek Penuaan Anjing (DAP) terhadap lebih daripada 27 anjing pendamping mendapati bahawa anjing baka tulen dan campuran secara amnya berkemungkinan sama untuk mengalami pelbagai penyakit. Walaupun sesetengah baka mungkin lebih terdedah kepada penyakit tertentu, kadar diagnosis keseluruhan adalah hampir sama antara kedua-dua kumpulan. Ketua doktor haiwan Projek Penuaan Anjing, Dr. Keith Creevy, menyatakan bahawa terdapat beberapa penyakit terkenal yang lebih biasa dalam baka anjing tertentu, yang menyokong tanggapan bahawa anjing baka tulen lebih terdedah kepada penyakit. ...>>

Berita rawak daripada Arkib

Telefon Pintar Poco X5 Pro 08.02.2023

Jenama Poco, yang dimiliki oleh syarikat China Xiaomi, memperkenalkan telefon pintar Poco X5 dan Poco X5 Pro. Item baharu tergolong dalam kategori harga sederhana, menampilkan nisbah prestasi kepada harga yang menarik untuk ramai pengguna.

Poco X5 Pro ialah pengganti kepada telefon pintar Poco X4 Pro 5G yang diperkenalkan lebih setahun lalu. Peningkatan utama daripada pendahulunya ialah penggunaan pemproses Snapdragon 6G 778nm dengan grafik Adreno 642L, yang jauh lebih pantas daripada cip Snapdragon 695 yang terdapat dalam X4 Pro. Jumlah RAM telefon pintar LPDDR4X baharu ialah 6 atau 8 GB, kapasiti pemacu kilat UFS 2.2 ialah 128 atau 256 GB. Peranti ini menjalankan Android 12 dengan MIUI 14 untuk Poco.

Juga, telefon pintar menerima paparan yang lebih baik. Parameter utamanya adalah sama seperti model Poco X4 Pro: ia ialah panel AMOLED 6,67 inci dengan resolusi 2400 x 1080 piksel (FHD +) dan kadar penyegaran 120 Hz. Walau bagaimanapun, tidak seperti pendahulunya, produk baharu ini menyediakan kedalaman warna 10-bit dengan liputan 100 peratus ruang warna DCI-P3. Kecerahan maksimum paparan ialah 900 cd / m2, sambil menggunakan mekanisme PWM dengan frekuensi 1920 Hz. Gorilla Glass 5 melindungi paparan daripada calar.

Modul kamera utama dilengkapi dengan penderia 108MP 1/1,52 inci, yang dilengkapi dengan modul sudut ultra lebar 8MP dengan medan pandangan 120° dan penderia makro 2MP. Resolusi kamera hadapan ialah 16 megapiksel.

Spesifikasi Poco X5 Pro juga termasuk penyesuai wayarles Wi-Fi 6 dan Bluetooth 5.2, modul IR, cip NFC, port USB-C dan bicu audio 3,5mm. Bateri 5000mAh menyokong pengecasan 67W.

Sebaliknya, telefon pintar Poco X5 dibina pada cip Snapdragon 695 bersama-sama dengan 6 atau 8 GB RAM dan pemacu kilat dengan kapasiti 128 atau 256 GB. Memori boleh dikembangkan dengan slot kad sehingga 1TB.

Paparan 5-inci Poco X6,67 mempunyai resolusi FHD+ dan kadar penyegaran 120Hz. Paparan mempunyai kecerahan maksimum 1200 cd/m2 dan juga menyediakan perwakilan warna 8-bit. Gorilla Glass 3 digunakan untuk melindungi skrin daripada calar.

Kamera belakang telefon pintar termasuk penderia utama 48 megapiksel, penderia 8 megapiksel dengan optik sudut ultra lebar (118 °) dan penderia 2 megapiksel untuk fotografi makro. Di bahagian hadapan ialah kamera swafoto 13MP. Bateri peranti mempunyai kapasiti yang sama seperti Poco X5 Pro, tetapi kuasa pengecasan ialah 33W. Walau bagaimanapun, dengan pengecas 33W, ia hanya mengambil masa 0 minit untuk mengecas bateri daripada 100 hingga 68%.

Spesifikasi Poco X5 juga termasuk penyesuai Wi-Fi 5, Bluetooth 5.1, bicu audio fon kepala 3,5mm, transceiver IR dan cip NFC.

Poco X5 6/128 GB ialah $250, Poco X5 8/256 GB ialah $300. Poco X5 Pro bermula pada $300 untuk model asas 6/128GB, manakala Poco X5 Pro 8/256GB berharga $350.

Berita menarik lain:

▪ Penjajahan Venus

▪ Penjejak belanjawan dengan Bluetooth untuk memantau kanak-kanak

▪ Cendawan boleh menyelamatkan manusia

▪ Satelit untuk mencipta bintang tiruan

▪ Tomato menghasilkan vitamin D

Suapan berita sains dan teknologi, elektronik baharu

 

Bahan-bahan menarik Perpustakaan Teknikal Percuma:

▪ Bahagian tapak telefon. Pemilihan artikel

▪ mereka membaca artikel tentang rasuah kepada Klimych, dan dia secara sembunyi-sembunyi mengangguk pada Peter. Ungkapan popular

▪ artikel Dari manakah ular mendapat racunnya? Jawapan terperinci

▪ artikel Melissa officinalis. Legenda, penanaman, kaedah aplikasi

▪ artikel Suis optosisimistor beban berkuasa. Ensiklopedia elektronik radio dan kejuruteraan elektrik

▪ pasal Saudara jauh pawagam. eksperimen fizikal

Tinggalkan komen anda pada artikel ini:

Имя:


E-mel (pilihan):


Komen:





Semua bahasa halaman ini

Laman utama | Perpustakaan | artikel | Peta Laman | Ulasan laman web

www.diagram.com.ua

www.diagram.com.ua
2000-2024