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:

Kriteria saintifik untuk kecantikan manusia 27.05.2024

Kajian tentang kecantikan wajah manusia telah lama menarik perhatian saintis. Sekumpulan penyelidik dari Denmark membentangkan kriteria mereka untuk menentukan daya tarikan seseorang. Mereka mengenal pasti beberapa parameter, termasuk kualiti kulit, yang memainkan peranan penting dalam menilai penampilan. Kriteria pertama yang diberi perhatian saintis ialah simetri muka. Simetri sempurna bahagian kanan dan kiri muka mencipta kesan yang menggalakkan dan menambah daya tarikan. Walau bagaimanapun, walaupun asimetri kecil boleh menjejaskan persepsi penampilan. Seterusnya, pakar meneliti ciri-ciri wajah unik yang menjadikannya unik. Ini mungkin ciri bentuk hidung, lokasi mata, atau bentuk dagu. Ciri individu sedemikian membantu anda menonjol daripada orang ramai dan menjadikan wajah anda menarik. Kulit muka juga memainkan peranan penting dalam persepsi kecantikan. Adalah penting untuk menjaga kulit anda menggunakan produk pembersihan dan pelembap. Penjagaan yang kerap membantu mengekalkan kesihatan kulit anda ...>>

Tablet DC1 siang hari 27.05.2024

Daylight telah memperkenalkan tablet baharu, DC1, yang menonjol daripada persaingan dengan skrin uniknya. Paparan ini, dipanggil LivePaper, kelihatan seperti kertas, walaupun sebenarnya terdapat panel LCD di dalamnya. Tablet ini dilengkapi dengan skrin monokrom 10,5 inci dengan resolusi 1600x1200 piksel dan kadar penyegaran 60 Hz. Daylight menyatakan bahawa paparan menyediakan tatal yang sangat lancar. Peranti ini dilengkapi dengan stylus Wacom, membolehkan pengguna menulis nota dan melukis dengan tepat. Salah satu ciri utama skrin ialah keupayaannya untuk menggunakan sumber cahaya luaran, termasuk cahaya matahari, untuk memaparkan kandungan tanpa silau. Ini amat sesuai untuk membaca di luar rumah. Selain itu, paparan dilengkapi dengan lampu latar bebas biru yang hangat, yang mengurangkan ketegangan mata. Pemaju mendakwa bahawa tablet itu direka untuk mengurangkan keletihan mata dan meningkatkan tumpuan apabila bekerja atau membaca. Di dalam tablet terdapat pemproses MediaTek Helio G99, ...>>

Otak buatan dengan sistem pertahanan yang berfungsi 26.05.2024

Sains moden telah membuat satu kejayaan yang ketara: buat pertama kalinya adalah mungkin untuk mengembangkan model kecil otak manusia dengan sistem pertahanan yang berfungsi. Otak mini ini, tidak lebih besar daripada biji bijan, mempunyai mekanisme pertahanan terbina dalam yang biasanya ditemui dalam otak sebenar, melindunginya daripada bahan berbahaya. Dalam tubuh manusia, BBB melapisi saluran darah yang melalui otak. Ia bertindak sebagai penapis, membenarkan bahan berfaedah seperti hormon dan glukosa melaluinya, sambil menyekat toksin dan bakteria berbahaya. Walau bagaimanapun, halangan yang sama ini menghalang banyak ubat daripada memasuki otak, yang menimbulkan masalah untuk rawatan penyakit sistem saraf. Model buatan makmal menggabungkan organoid serebrum—kelompok 3-D sel otak yang dihasilkan daripada sel stem—dengan organel vaskular, juga tumbuh daripada sel stem, yang meniru rangkaian peredaran badan. Bersama-sama, kedua-dua jenis organel ini membentuk apa yang dipanggil assembloid, yang meniru interaksi ...>>

Berita rawak daripada Arkib

Pembesar suara pintar Redmi XiaoAI Pembesar Suara Skrin Sentuh 29.03.2020

Redmi memperkenalkan pembesar suara pintar Redmi XiaoAI Touch Screen Speaker.

Satu ciri peranti ialah paparan 8-inci besar dengan resolusi HD - dengan bantuannya, bukan sahaja kawalan dijalankan, tetapi juga telefon video: kamera web dibina ke dalam sarung lajur. Ngomong-ngomong, operasi mod kanak-kanak juga terikat kepadanya: sebaik sahaja kamera mengesan kanak-kanak di hadapannya, lajur bertukar kepada mod operasi khas dengan memaparkan kandungan kanak-kanak sahaja.

Pembantu suara proprietari XiaoAI generasi ketiga terbina dalam peranti. Ia menyediakan akses kepada pelbagai fungsi, termasuk kawalan peranti rumah pintar. Pembesar Suara Skrin Sentuh Redmi XiaoAI menyokong pelbagai perkhidmatan penstriman video dan audio, jadi peranti sedemikian tidak akan digunakan semasa kuarantin dan pengasingan diri.

Harga barang baru ialah $50.

Berita menarik lain:

▪ Penguat Kuasa Audio Kelas G MAX9730

▪ Asal lompang di pokok

▪ Rangkaian wayar nano logam dengan ciri seperti otak

▪ Fon topologi ditemui dalam graphene

▪ Peninjauan asteroid Jepun Hayabusa-2

Suapan berita sains dan teknologi, elektronik baharu

 

Bahan-bahan menarik Perpustakaan Teknikal Percuma:

▪ bahagian tapak Perkakas elektrik rumah. Pemilihan artikel

▪ artikel Nyanyikan Lazarus, Miskin seperti Lazarus. Ungkapan popular

▪ artikel Siapa yang melakukan pemindahan jantung manusia pertama dan bila? Jawapan terperinci

▪ artikel Bekerja pada tempostat. Arahan standard mengenai perlindungan buruh

▪ artikel Mikrometer elektron. Ensiklopedia elektronik radio dan kejuruteraan elektrik

▪ artikel Penukar voltan stabil kuasa mikro. Ensiklopedia elektronik radio dan kejuruteraan elektrik

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