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

Pengaturcara mikropengawal PIC pemula. Ensiklopedia elektronik radio dan kejuruteraan elektrik

Perpustakaan teknikal percuma

Ensiklopedia elektronik radio dan kejuruteraan elektrik / Radio amatur pemula

Komen artikel Komen artikel

[ralat berlaku semasa memproses arahan ini]

Berdasarkan pengalaman saya sendiri mula mempelajari pengaturcaraan mikropengawal, saya akan cuba memberi beberapa nasihat praktikal tentang menulis program dalam assembler. Semua contoh pengaturcaraan di bawah diberikan berhubung dengan pengawal Pic bagi keluarga Microchip sederhana, sebagai yang paling sesuai untuk memulakan pembangunan, kerana seni binanya yang agak ringkas dan sistem arahan pemasang yang ringkas.

Program yang dicadangkan boleh digunakan dalam bentuk makro siap sedia (subrutin lengkap). Ia tidak terikat pada pengawal tertentu, jadi data daripada lembaran data harus diambil kira semasa memohon.

1. Penggunaan limpahan pemasa mengganggu TMR0 (RTCC)

Mari kita ambil kekerapan jam - Ftact. = 4,096 MHz (kuarza standard). Maka masa kitaran ialah tc = 1 / Ftact. * 4 = 0,97656 µs

INI_TMR ; permulaan mod gangguan daripada RTCC
bsf STATUS,RP0 ; pilih bank 1
movlw b'00000100'
movwf PILIHAN ; prescaler untuk RTCC 1: 32
bcf STATUS,RP0 ; bank 0
movlw b'10100000'
movwf INTCON ; Gangguan RTCC didayakan
movlw .96; memuat naik nombor awal 96 ke RTCC
movwf TMR0

Dapatkan masa gangguan:
ti = tc * 32 * (256 - 96 = 160)
ti = 0,97656 * 32 * 160 = 5 µs = 000 ms

Sekarang, jika anda memasukkan gelung tak terhingga ke dalam mana-mana program (yang dipanggil gelung tunggu sampukan), dan menterjemah penghujung program ke gelung ini, kami akan mendapat rujukan masa sebanyak 5 ms. Dan selepas gangguan itu, atur cara akan kembali ke alamat yang ditunjukkan oleh vektor sampukan (lebih kerap ia adalah 04h). Untuk apa yang boleh digunakan - lihat di bawah.

Jadi:

;
0
MULA ; program bermula selepas
; hidupkan kuasa
org 04j ; dan ini ialah alamat vektor gangguan, di mana
utama ; program utama akan dijalankan
;
MULA ; ini biasanya di mana ini wajib
INI_TMR ; sialisasi port, mod, daftar, dsb.
INI_PORTS
gelung
goto-gelung; dan ini adalah gelung yang tidak berkesudahan
;----------------------------------------------------------------

utama
; Seterusnya ialah badan program utama,
; di mana adalah perlu untuk mencipta rutin perkhidmatan gangguan daripada RTCC,
; dipanggil dengan arahan CALL:

ServTMR
btfsc INTCON,RTIF ; semak bendera pencetus gangguan RTCC dan
hubungi SET_TMR ; jika ya, mulakan TMR0 semula
kembali; jika "tidak" - kembali ke tempat ServTMR memanggil masuk
; utama program utama
;
SET_TMR movlw .96
movwf TMR0 ; muat naik nombor 96 lagi
bcf INTCON,RTIF ; tetapkan semula bendera pencetus
retfie ; kembali dengan membolehkan gangguan kepada ServTMR, dan
; kemudian ke program utama utama

Contoh menggunakan sampukan RTCC untuk menerima nadi kedua pada salah satu output, katakan, port B - RB0 : Gunakan daftar Rsec, yang mesti diisytiharkan sebelum ini dalam medan alamat daftar kerja.

Oleh itu, pada output port RB0, tahap isyarat akan berubah dari '0' kepada '1' setiap saat.

Dalam daftar pengawal, maklumat biasanya dalam bentuk binari (dalam kod binari). Tetapi selalunya diperlukan untuk mendapatkan maklumat dalam bentuk perduaan - perpuluhan (BCD - kod), katakan, untuk mengawal penunjuk tujuh segmen tujuh digit.

Mari kita pertimbangkan contoh penukaran kod binari b2 kepada BCD perpuluhan binari dan sebaliknya.

Dalam daftar 8-bit, anda boleh menulis nombor perduaan dari 0 hingga 255 ( dari b'00000000' hingga b'11111111' ). Mari tukar nombor perduaan kepada tiga digit perduaan - kod perpuluhan - "ratusan", "puluhan" dan "satu". Untuk melakukan ini, kami akan menggunakan daftar berikut, yang mesti diisytiharkan terlebih dahulu dalam medan alamat daftar kerja:

Rbin - daftar untuk menyimpan nombor dalam kod binari b2
Rhan - daftar "ratusan" kod BCD
Rdec - daftar "puluhan" kod BCD
Rsim - kod BCD "satu" daftar

Transformasi dijalankan menggunakan operasi menolak nombor 100, dan kemudian 10, mengira bilangan penolakan positif.

FORM_1S ; dalam setiap kitaran, dan ia berlangsung selama gangguan RTCC
incf Rsec,w ; 5 ms, naikkan daftar Rsec sebanyak 1 kepada nombor 200
xorlw .200 ; (5ms * 200 = 1 saat)
btfsc STATUS,z
pergi ke OUT_PORT ; dengan Rsec = 200 bendera z = '1' dan peralihan kepada kawalan
; pin RB0 port B
kembali; kembali ke program utama utama
;
OUT_PORT btfss PORTB,0 ; semak status keluaran RB0
pergi OUT_ON ; jika RB0 ='0' maka tetapkan kepada '1'
bcf PORTB,0 ; jika tidak - tetapkan kepada '0'
goto utama ; kembali ke program utama
;
OUT_ON bsf PORTB,0 ; tetapkan RB0 = '1'
goto utama

CON_100 movlw .100 ; tolak 100 daripada Rbin dan semak itu
subwf Rbin,w ; hasilnya tidak negatif. Tandakan 'c' = 1 apabila
btfss STATUS,c ; keputusan > atau = 0, dan 'c' = 0 apabila < 0
pergi ke CON_10
incf Rhan,f ; mengira "ratusan"
movwf Rbin ; hasil penolakan terlebih dahulu disimpan dalam daftar
goto CON_100 ;bateri dan hanya kemudian kembali ke Rbin
; supaya tidak kehilangan baki dengan negatif
; hasil tolak.
CON_10 movlw .10 ; sama mentakrifkan "puluhan"
subwf Rbin,w
btfss STATUS,c
pergi ke end_con
incf Rdec,f
movwf Rbin
pergi ke CON_10;
end_con
movf Rbin,w
movwf Rsim ; selepas penolakan, kita masukkan baki dalam "unit"
;teruskan pelaksanaan program

Penukaran terbalik BCD - kod kepada b2. Kami menggunakan daftar yang sama Rhan, Rdec, Rsim di mana nombornya berada dalam kod BCD, daftar RbinH ialah tertib tinggi dan RbinL - tertib rendah untuk nombor (> 255) dalam kod b2 dan daftar tambahan RM1 - "pendarab", RM2 - "pendarab". pindahkan ke tertib tinggi jika perlu. Untuk operasi penambahan, kami menggunakan operasi pendaraban.

B2X_100 movlw .99 ; menukar "ratusan"
movwf RM2 ; pengganda = bilangan penambahan (100) tolak satu
movf Rhan,w
movwf RM1 ; darab = "ratusan"
loopX100 addwf RM1,w btfsc STASTUS,c ; semak pemindahan ke digit tertinggi
incf RbinH,f ; jika ada perpindahan
decfsz RM2,f ; mengawal bilangan penambahan
goto loopX100
movwf RbinL ; hasil penambahan dimasukkan ke dalam daftar ml. pelepasan
;
B2X_10 movlw .9 ; menukar "puluhan"
movwf RM2 ; pengganda = bilangan penambahan (10) tolak satu
movf Rdec,w
movwf RM1 ; darab = "puluhan"
gelungX10 addwf RM1,w ; di sini pemindahan boleh ditinggalkan, kerana hasil
decfsz RM2,f ; sentiasa < 255
goto loopX10
addwf RbinL,f ; tambah hasil penukaran "puluhan"
btfsc STATUS,c ; mengambil kira kemungkinan pemindahan dalam digit
incf
RbinH,f
movf Rsim,w
addwf Rbin,f ; tambah "unit" dengan mengambil kira kemungkinan pemindahan
btfsc STATUS,c
incf RbinH,f

Tamat transformasi dan pelaksanaan selanjutnya program. Dalam daftar RbinL dan RbinH mendapat 16 - nombor bit dalam kod b2.

Untuk melaksanakan operasi aritmetik pembahagian, dengan analogi dengan pendaraban yang dibincangkan di atas, operasi tolak digunakan. Katakan kita perlu membahagikan nombor yang terletak dalam daftar RHsum (digit lebih tinggi) dan RLsum (digit bawah) - dengan pembahagi (mari ambil pembahagi bukan > 255) yang terletak dalam daftar Rdel.

Hasilnya akan dimasukkan ke dalam daftar RHrez dan RLrez (digit tinggi dan rendah, masing-masing):

OP_DEL
movf Rdel,w
subwf Rlsum,w
btfss STATUS,c ; semak sama ada keputusan negatif?
pergi ke DEF_carry ; jika "ya", maka kami membuat pinjaman daripada seni. pelepasan
incf RLrez,f ; mengira bilangan penolakan, dengan mengambil kira
btfsc STATUS,c ; kemungkinan kenaikan pangkat ke peringkat senior
incf RHRez,f
movwf RLsum ; pulihkan selebihnya supaya tidak rugi
pergi ke OP_DEL ; dengan hasil penolakan negatif
;
DEF_carry
movlw 0j
xorwf RHsum,w ; adakah semua orang ambil dari kategori senior ke junior?
btfsc STATUS,z ; jika "ya", i.e. RHdel = 0 dan dinafikan dalam OP_DEL
pergi ke OUT_DEL ; kucing. keputusan - tamat pembahagian dan keluar
defc RHsum,f ; jika "tidak" - pinjaman daripada kategori senior dan pro-
incf RLrez,f ; kita mesti teruskan
btfsc STATUS,c ; menyemak keperluan untuk berpindah ke kategori senior
incf RHRez,f
pergi ke OP_DEL

Pengarang: Vladimir D., degvv@mail.ru; Penerbitan: cxem.net

Lihat artikel lain bahagian Radio amatur pemula.

Baca dan tulis berguna komen pada artikel ini.

<< Belakang

Berita terkini sains dan teknologi, elektronik baharu:

Mesin untuk menipis bunga di taman 02.05.2024

Dalam pertanian moden, kemajuan teknologi sedang dibangunkan bertujuan untuk meningkatkan kecekapan proses penjagaan tumbuhan. Mesin penipisan bunga Florix yang inovatif telah dipersembahkan di Itali, direka untuk mengoptimumkan peringkat penuaian. Alat ini dilengkapi dengan lengan mudah alih, membolehkan ia mudah disesuaikan dengan keperluan taman. Operator boleh melaraskan kelajuan wayar nipis dengan mengawalnya dari teksi traktor menggunakan kayu bedik. Pendekatan ini dengan ketara meningkatkan kecekapan proses penipisan bunga, memberikan kemungkinan penyesuaian individu kepada keadaan khusus taman, serta jenis dan jenis buah yang ditanam di dalamnya. Selepas menguji mesin Florix selama dua tahun pada pelbagai jenis buah, hasilnya amat memberangsangkan. Petani seperti Filiberto Montanari, yang telah menggunakan mesin Florix selama beberapa tahun, telah melaporkan pengurangan ketara dalam masa dan tenaga kerja yang diperlukan untuk menipis bunga. ...>>

Mikroskop Inframerah Lanjutan 02.05.2024

Mikroskop memainkan peranan penting dalam penyelidikan saintifik, membolehkan saintis menyelidiki struktur dan proses yang tidak dapat dilihat oleh mata. Walau bagaimanapun, pelbagai kaedah mikroskop mempunyai hadnya, dan antaranya adalah had resolusi apabila menggunakan julat inframerah. Tetapi pencapaian terkini penyelidik Jepun dari Universiti Tokyo membuka prospek baharu untuk mengkaji dunia mikro. Para saintis dari Universiti Tokyo telah melancarkan mikroskop baharu yang akan merevolusikan keupayaan mikroskop inframerah. Alat canggih ini membolehkan anda melihat struktur dalaman bakteria hidup dengan kejelasan yang menakjubkan pada skala nanometer. Biasanya, mikroskop inframerah pertengahan dihadkan oleh resolusi rendah, tetapi perkembangan terkini daripada penyelidik Jepun mengatasi batasan ini. Menurut saintis, mikroskop yang dibangunkan membolehkan mencipta imej dengan resolusi sehingga 120 nanometer, iaitu 30 kali lebih tinggi daripada resolusi mikroskop tradisional. ...>>

Perangkap udara untuk serangga 01.05.2024

Pertanian adalah salah satu sektor utama ekonomi, dan kawalan perosak adalah sebahagian daripada proses ini. Satu pasukan saintis dari Majlis Penyelidikan Pertanian India-Institut Penyelidikan Kentang Pusat (ICAR-CPRI), Shimla, telah menghasilkan penyelesaian inovatif untuk masalah ini - perangkap udara serangga berkuasa angin. Peranti ini menangani kelemahan kaedah kawalan perosak tradisional dengan menyediakan data populasi serangga masa nyata. Perangkap dikuasakan sepenuhnya oleh tenaga angin, menjadikannya penyelesaian mesra alam yang tidak memerlukan kuasa. Reka bentuknya yang unik membolehkan pemantauan kedua-dua serangga berbahaya dan bermanfaat, memberikan gambaran keseluruhan populasi di mana-mana kawasan pertanian. "Dengan menilai perosak sasaran pada masa yang tepat, kami boleh mengambil langkah yang perlu untuk mengawal kedua-dua perosak dan penyakit," kata Kapil ...>>

Berita rawak daripada Arkib

Transistor hibrid berasaskan sutera 19.10.2023

Para saintis dari Universiti Tufts di Amerika Syarikat telah mempersembahkan transistor hibrid yang inovatif berasaskan sutera, membuka prospek baharu dalam bidang antara muka saraf dan elektronik biosensor. Bahan biologi ini sedang disepadukan ke dalam proses pembuatan cip standard, menjadikannya boleh digunakan secara besar-besaran. Transistor baharu mempunyai ciri unik yang membolehkan litar elektronik bertindak balas kepada isyarat elektrik dan biologi secara serentak.

Penyelidik telah berusaha untuk merapatkan sempadan antara bernyawa dan tidak bernyawa, mewujudkan prospek untuk pembangunan antara muka saraf yang menghubungkan elektronik dan organisma hidup. Transistor baharu boleh menjadi elemen utama dalam pembangunan rangkaian saraf, biosensor dan neuropemproses, menjanjikan untuk mengubah interaksi manusia dengan teknologi. Walaupun perubahan muktamad mungkin tidak datang esok, teknologi ini memberikan gambaran penting ke masa hadapan.

Ia masih dapat dilihat sama ada transistor hibrid baharu akan menerajui perubahan ini atau hilang. Walau bagaimanapun, pada peringkat ini, teknologi ini mempamerkan beberapa sifat menarik, termasuk penyepaduan ke dalam proses teknologi moden untuk menghasilkan litar mikro.

Para saintis menggunakan protein fibroin, tertanam dalam benang sutera dan sarang labah-labah, sebagai bahan pintu dalam pemproses hibrid. Protein ini mempamerkan kepekaan yang tinggi terhadap pengawalan kekonduksian ionik oleh denyutan elektronik dan biomarker. Pada dasarnya, operasi transistor menyerupai prinsip operasi sel memori ReRAM, mengubah rintangan di bawah pengaruh ion, yang melampaui skop memori rintangan atau memristor.

Para saintis telah berjaya mencipta penderia nafas berdasarkan penyelesaian baharu yang sensitif kepada kelembapan. "Transistor sutera" boleh menjadi elemen utama dalam bidang kesihatan, membuka prospek baharu untuk pembangunan teknologi inovatif.

Berita menarik lain:

▪ 160A MOSFET untuk aplikasi automotif daripada Toshiba

▪ Ikan lumba-lumba jenis baru

▪ Pencakar langit - ladang solar

▪ Kristal yang berubah bentuk

▪ Stonehenge mencipta fatamorgana bunyi

Suapan berita sains dan teknologi, elektronik baharu

 

Bahan-bahan menarik Perpustakaan Teknikal Percuma:

▪ bahagian tapak untuk pereka radio amatur. Pemilihan artikel

▪ artikel saya melakukan apa yang saya boleh, biarkan mereka yang boleh melakukan lebih baik. Ungkapan popular

▪ artikel Mengapa bahagian kereta api bawah tanah New York tidak serasi antara satu sama lain? Jawapan terperinci

▪ artikel Penjimatan terbiar paksa. Pengangkutan peribadi

▪ artikel Pemacu elektronik-mekanikal pam bahan api. Ensiklopedia elektronik radio dan kejuruteraan elektrik

▪ pasal Tabasaran peribahasa dan pepatah. Pilihan yang banyak

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