Masalah dengan port serial menyela di MSC1211y5

F

fbabaki

Guest
Saya bekerja dengan Msc1211y5, 24 bit A2D dengan 8.051 mikrokontroler.Dalam program saya, saya telah diaktifkan A2D dan timer 0 interupsi.Ketika saya juga mengaktifkan port serial 0 interrutps (Baik mengirim dan menerima diaktifkan dengan bendera yang sama) laju melaksanakan program berkurang.Happeds ini juga ketika kita tidak mengirimkan data ke msc1211y5, dan trasmitting data dengan msc1211y5 dilakukan dengan "printf" perintah.Tampaknya TI_0 ditetapkan dan program melompat ke port serial 0 ISR.Kliring TI_0 dalam ISR juga menyebabkan program tidak mengirimkan data ke port serial dan tampaknya program tinggal di ISR.Kami menggunakan software Keil untuk mengkompilasi program-program kami.

Siapa pun bisa memberikan gambaran apa yang saya lakukan begitu, atau apa yang saya lakukan salah.
Terima kasih.

 
Anda memiliki tiga pilihan:

1.Posting program Anda di sini.Ada banyak pakar Keil forum (bukan saya)
2.Dapatkan akrab dengan teman terbaik Anda ketika menggunakan HLL, saya menyebutnya Keil terpadu debugger
3.Yang terakhir dan yang paling unpleasent, coba parsing kode objek setelah linker pekerjaan dan merasa lebih nyaman dengan tingkah laku kompilator

Aku sudah sadar kau akrab dengan beberapa staf tingkat rendah.

"Kliring TI_0 dalam ISR"

Itu harus karena itu tidak dilakukan otomatis ketika keluar ISR

"tampaknya program tinggal di ISR"

Baik baik tidak ada Réti pada akhir ISR atau Timer 1 tidak mulai makan register geser internal dan program jelas beku di dalam ISR (Timer 1 dengan baik jika tidak dimulai Anda punya interrrupt, hanya jika Anda memaksa mengganggu baik menulis secara manual TI_0 atau RI_0).

"Tampaknya TI_0 ditetapkan dan program melompat ke port serial 0 ISR"

TI_0 diatur untuk menunjukkan bahwa data dalam serial Port 0 penyangga telah sepenuhnya bergeser keluar (dalam hal ini Timer 1 sedang berjalan).Jadi Anda harus dapat melihat sesuatu yang keluar dari port serial.Ketika printf dilakukan, cukup menulis byte pertama dari string ke SBUF akan tidak menaikkan bendera menyela.Hanya memulai transmisi.Hanya ketika byte completelly bergeser ke luar TI_0 ditetapkan pada akhir bit ke-8 di serial mode0 atau pada awal stop bit dalam mode lain dan menyela dikeluarkan.

"Baik mengirim dan menerima diaktifkan dengan bendera yang sama"

Itu 8.051 inti, Anda harus mencari tahu siapa adalah permintaan yang mengganggu dengan melihat bit 0 dan bit 1 dari SFR SCON register.

 

Welcome to EDABoard.com

Sponsor

Back
Top