ENSIKLOPEDIA ELEKTRONIK RADIO DAN KEJURUTERAAN ELEKTRIK Pengaturcaraan modular sistem kawalan pada MCS48. Ensiklopedia elektronik radio dan kejuruteraan elektrik Ensiklopedia elektronik radio dan kejuruteraan elektrik / Pengawal mikro Adalah diketahui bahawa mikropengawal yang sama boleh mengawal kedua-dua peralatan teknologi yang kompleks dan pengisar kopi isi rumah atau jam elektronik. Penyesuaian kepada objek tertentu dilakukan dengan menukar program mikropengawal, perkakasan hampir tidak terjejas. Artikel yang dicadangkan ditumpukan kepada teknik pengaturcaraan untuk mikropengawal siri MCS48, yang digunakan secara meluas dalam sistem kawalan untuk pelbagai tujuan. Peruntukan utamanya juga sah untuk peranti yang lebih moden. Pembangunan dan pemodenan program kawalan amat dipermudahkan jika ia dibina mengikut prinsip modular. Dalam kes ini, selepas mendapat sedikit pengalaman, dan yang paling penting, perpustakaan modul kami yang dinyahpepijat, pengaturcaraan sistem kawalan (CS) baharu turun untuk menggantikan beberapa modul program yang sedia ada dan dinyahpepijat dan, mungkin, menambahnya dengan serpihan yang mengambil kira kekhususan sistem tertentu. Prinsip ini tertanam dalam struktur banyak bahasa peringkat tinggi (PASCAL, C++), dan pengaturcara secara literal terpaksa mengikutinya. Malangnya, ASSEMBLERS (termasuk untuk MSS48), sambil memberikan kebebasan yang lebih besar kepada pengaturcara untuk memilih cara dan kaedah untuk menyelesaikan masalah, sebagai peraturan, tidak memantau pematuhan disiplin pengaturcaraan sama sekali. Ini sering membawa kepada penciptaan atur cara yang sangat mengelirukan sehinggakan pengarangnya pun tidak dapat mengetahui apa yang telah dilakukan selepas beberapa ketika, apatah lagi penggunaan serpihan nyahpepijat dalam atur cara lain. Pematuhan secara sedar kepada konsep modular biasa sangat memudahkan dan mempercepatkan pengaturcaraan mikropengawal. Contoh program modular biasa untuk CS diberikan dalam jadual. Sintaksnya sepadan dengan TASM ASSEMBLY jadual dalam versi untuk mikropemproses 8048. Seperti yang anda lihat, pada permulaan teks program, arahan EQU memberikan nama kepada pemalar dan menetapkan nilai. Menggunakan pemalar bernama sentiasa lebih baik daripada menentukan nilai angka secara langsung dalam arahan pemproses boleh laku. Sebagai contoh, kelewatan masa yang dilaksanakan oleh salah satu subrutin yang dibincangkan di bawah ditakrifkan oleh tiga nombor. Mereka diberikan oleh pemalar N1, N2 dan N3. Jika anda perlu menukar kelajuan pengatup, sudah cukup untuk menentukan nilai baharu dalam operator EQU. Jika tidak, anda perlu melihat sepanjang program untuk arahan dengan operan yang sama dengan nombor ini, tentukan sama ada setiap daripada mereka merujuk kepada kelewatan masa, dan nyatakan nilai baharu dalam kes yang diperlukan. Jelas sekali, kerja sedemikian memerlukan banyak masa dan selalunya tidak dilakukan tanpa kesilapan. Ia amat rumit oleh fakta bahawa sesetengah arahan mungkin tidak menggunakan nombor keseluruhan, tetapi, sebagai contoh, bait tinggi atau rendahnya. ASSEMBER sudah pada peringkat terjemahan program dapat mengira beberapa pemalar berdasarkan nilai yang lain. Kemungkinan ini digambarkan dengan pengiraan bait tinggi (N3N) dan rendah (N3L) bagi nombor NXNUMX. Seterusnya, program memperuntukkan memori untuk pembolehubah. Mereka melakukan ini dengan arahan EQU yang sama, tetapi tidak seperti perihalan pemalar, mereka tidak menentukan nilai berangka pembolehubah, tetapi alamat sel memori yang mereka duduki. Jika ASSEMBLER membenarkan, kemungkinan menggunakan makro tidak boleh diabaikan. Setiap daripada mereka adalah, seolah-olah, arahan baru yang melaksanakan operasi yang tidak diperuntukkan secara langsung oleh sistem arahan pemproses. Menggambarkan arahan makro, pengaturcara memberikannya nama (yang, sudah tentu, tidak bertepatan dengan nama mana-mana arahan "sebenar") dan menentukan tindakan yang diperlukan dalam bentuk Urutan arahan mesin. Setiap kali ia menemui arahan makro dalam atur cara, ASSEMBLER akan menggantikannya dengan urutan yang ditentukan. Dalam contoh ini, dua makro digunakan. Salah seorang daripada mereka memindahkan kandungan penumpuk ke sel memori data yang ditentukan oleh parameter makro, dan yang lain - belakang. Selepas kuasa dihidupkan (atau isyarat set semula diberikan), mikropengawal mula melaksanakan program dari alamat sifar. Alamat ini biasanya digunakan untuk menulis arahan lompat tanpa syarat ke titik permulaan program sebenar (dalam kes ini, label MULA). Ini adalah perlu kerana gangguan perkakasan sentiasa memindahkan kawalan ke alamat tetap 3 dan 7 (untuk jenis mikropengawal lain, alamat mungkin berbeza, tetapi ia masih terletak pada permulaan memori program). Arahan peralihan tanpa syarat kepada rutin perkhidmatan bagi gangguan sepadan yang terletak di alamat ini hendaklah "dipintas" oleh program utama. Langkah seterusnya ialah menetapkan mod pengendalian pengawal (contohnya, memilih bank memori dan daftar), memulakan pembolehubah dan peranti luaran. Kesilapan biasa pengaturcara pemula adalah menganggap bahawa sejurus selepas memulakan program, pembolehubah sudah mempunyai beberapa nilai yang pasti. Salah tanggapan ini diperkukuh oleh fakta bahawa sesetengah bahasa peringkat tinggi (seperti BASIC) secara automatik menetapkan semua pembolehubah kepada nilai awal sifar. Dalam atur cara dalam bahasa himpunan (dan banyak bahasa lain), pengaturcara sendiri mesti menjaga bahawa sebelum bacaan pertama nilai pembolehubah, sesuatu telah ditulis ke sel memori yang diperuntukkan kepadanya. Gaya pengaturcaraan yang baik memerlukan nilai awal diberikan kepada pembolehubah pada permulaan program. Dalam kes ini, ini dilakukan oleh subrutin 1INIT. Bahagian permulaan peranti luaran biasanya kelihatan seperti panggilan ganti kepada subrutin, setiap satunya menetapkan semula salah satu daripadanya (penukar analog-ke-digital, penunjuk LED, pad kekunci, dll.) dan boleh diganti dengan mudah apabila memuktamadkan dan menambah baik sistem. Selalunya, rutin yang sama ini memeriksa kesihatan peranti. Seterusnya, kebanyakan program kawalan memasuki gelung utama berulang tanpa henti, pelaksanaannya digantung hanya untuk mengendalikan gangguan. Kitaran ini terdiri daripada subrutin untuk mengundi papan kekunci dan penderia lain, menyemak bendera yang ditetapkan oleh subrutin pengendalian gangguan (contohnya, bendera untuk tamat tempoh selang masa tertentu atau penghujung penukar analog-ke-digital), pemprosesan maklumat yang diterima mengikut algoritma kawalan yang ditentukan, mengeluarkan tindakan kawalan kepada penggerak , memaparkan maklumat tentang keadaan proses teknologi pada paparan kristal cecair atau penunjuk lain. Keluar dari gelung utama biasanya disediakan hanya dalam situasi kecemasan, sebagai contoh, jika untuk menghapuskan akibat kegagalan, adalah perlu untuk mengulangi permulaan semua pembolehubah dan peranti luaran, serta apabila pemprosesan terganggu. Oleh itu, program yang dibina secara modular ialah satu set subrutin. Jika, sebagai contoh, papan kekunci yang berbeza digunakan dalam sistem kawalan baharu, ia sudah cukup untuk menggantikan subrutin BUTT. Agar penggantian sedemikian mudah dan tidak menyakitkan, peraturan tertentu harus dibangunkan dan sentiasa dipatuhi. Subrutin, jika boleh, harus menyimpan kandungan semua daftar pengawal, menerima data awal dan mengeluarkan keputusan dalam daftar dan sel memori yang sama, menggunakan pengekodan aksara yang sama, dsb. Ia adalah perlu untuk melawan keinginan semula jadi (terutamanya untuk pengaturcara yang telah mengatasi kesukaran pertama dan mula berasa seperti profesional) untuk memudahkan program dengan menjauhi peraturan yang ketat dan menggunakan teknik yang tidak standard. Nampaknya, pada pandangan pertama, komplikasi yang tidak wajar akan membuahkan hasil sepenuhnya dengan memudahkan penyahpepijatan dan mengolah semula program secara keseluruhan. Mari kita pertimbangkan beberapa ciri subrutin. I NCREM dan DESREM melaksanakan yang diperlukan dalam banyak kes, operasi meningkat atau menurun dengan nilai tertentu nombor binari 16-bit (bait tinggi dan rendahnya masing-masing dalam daftar R6 dan R5). Pemalar yang menentukan jumlah kenaikan diterangkan pada permulaan program. Memandangkan mana-mana mikropengawal berfungsi lebih pantas daripada peralatan teknologi, adalah sangat penting untuk dapat mengatur kelewatan masa dalam program. Dalam kes ini, kaunter/pemasa dalaman pemproses digunakan. Ia mempunyai kapasiti terhad dan melimpah dalam milisaat. Setiap limpahan menjana permintaan gangguan. Rutin perkhidmatan gangguan pemasa (TIME) mengira mereka dan, apabila nombor yang ditentukan dicapai, menetapkan bendera tamat masa FLT kepada satu. Semua subrutin yang kerjanya bergantung pada masa, ia tetap menganalisis keadaan bendera ini. Jadi adalah mungkin untuk merealisasikan kelajuan pengatup beberapa saat dan juga minit. Untuk mula mengira selang baru, adalah perlu untuk memasukkan nilai awal dalam sel kerja subrutin TIME dan hidupkan pemasa. Subrutin SET2M, sebagai contoh, menetapkan kelewatan masa kepada 2 minit. Pengiraan nilai awal mempunyai beberapa kehalusan. Adalah diketahui bahawa dalam mikropengawal siri MSS48, denyutan tiba pada input pembilang/pemasa dalaman pada frekuensi yang 480 kali lebih rendah daripada frekuensi pengayun kuarza. Contohnya, dengan frekuensi resonator kuarza 7 MHz, nombor yang ditulis ke kaunter berubah setiap 480/7000000 = 0,00006857 s = 68,57 µs. Jadi kaunter akan melimpah (dan menjana permintaan gangguan) dalam 68,57 -(256-N1) µs, di mana N1 ialah nombor yang asalnya ditulis ke kaunter. Jika setiap kali anda memulakan kiraan baharu daripada nombor ini, maka N0,1 = 2 0,1/[7000000 (1480-N256)] limpahan akan berlaku dalam 1 s (kelewatan masa minimum). Jelas sekali, kelewatan masa yang sama boleh diperoleh dengan N1 dan N2 yang berbeza, tetapi memandangkan nombor ini tidak boleh pecahan, ia akan dilaksanakan dengan beberapa ralat. Tugasnya adalah untuk memilih sepasang nilai sedemikian yang mana ralatnya adalah minimum. Dalam kes yang sedang dipertimbangkan, pilihan terbaik ialah N1 = 13, N2 = 6. Kelewatan masa selama 2 minit diperolehi dengan mengulangi prosedur yang diterangkan N3 = 1200 kali. Selalunya perlu menggunakan prosedur yang berbeza untuk memproses gangguan perkakasan yang sama dalam mod operasi program yang berbeza. Satu cara untuk melakukan ini digambarkan oleh subrutin INTER. Ia menganalisis kod jenis gangguan yang dimasukkan oleh program utama dalam sel INTT dan, bergantung pada nilainya, memanggil salah satu rutin perkhidmatan gangguan ISR1 atau ISR2. Ambil perhatian bahawa kedua-duanya berakhir dengan RET, bukan RETR. Adalah mudah untuk meningkatkan bilangan pilihan pemprosesan dan juga menjadikannya supaya untuk nilai tertentu kod, beberapa subrutin yang berbeza akan dipanggil satu demi satu. Tidak perlu menulis semua subrutin yang diperlukan dalam fail teks program utama. Modul yang dinyahpepijat dan digunakan berulang kali dalam atur cara yang berbeza boleh didapati dalam fail berasingan dan disambungkan ke program utama menggunakan arahan INCLUDE. Setiap fail termasuk boleh mengandungi satu atau lebih rutin. Kelemahan kaedah ini ialah nama pembolehubah, pemalar dan label dalam semua modul yang digunakan tidak boleh diulang. Dilucutkan daripada kecacatan ini, kaedah terjemahan berasingan modul dengan penggabungan seterusnya pada tahap kod objek, malangnya, tidak disokong oleh TASM ASSEMBLY. Pengarang: D. Ryzhov, Vladimir Lihat artikel lain bahagian Pengawal mikro. Baca dan tulis berguna komen pada artikel ini. Berita terkini sains dan teknologi, elektronik baharu: Balai cerap astronomi tertinggi di dunia dibuka
04.05.2024 Mengawal objek menggunakan arus udara
04.05.2024 Anjing tulen jatuh sakit tidak lebih kerap daripada anjing tulen
03.05.2024
Berita menarik lain: ▪ Peranti untuk mengukur ciri-ciri bahan dielektrik dan magnet ▪ Makan malam lewat merosakkan ingatan Suapan berita sains dan teknologi, elektronik baharu
Bahan-bahan menarik Perpustakaan Teknikal Percuma: ▪ bahagian tapak Eksperimen dalam kimia. Pemilihan artikel ▪ artikel Junker Schmidt mahu menembak dirinya sendiri dengan pistol. Ungkapan popular ▪ artikel Mengapakah rasa ingin tahu ejaan automatik dipanggil kesan Cupertino? Jawapan terperinci ▪ pasal pelayan. Deskripsi kerja ▪ artikel Penukar voltan boleh balik. Ensiklopedia elektronik radio dan kejuruteraan elektrik
Tinggalkan komen anda pada artikel ini: Semua bahasa halaman ini Laman utama | Perpustakaan | artikel | Peta Laman | Ulasan laman web www.diagram.com.ua |