1樓:
上面有很多中斷和定時器的東西,可參考有關書籍,沒多複雜。ie=0x40就相當於是ie=0x00,01000000,00000000,其中有1的那一位不起作用。它是ie中斷暫存器。
10ms是波特率相關,硬體決定的,初期可以查表確定裝載的數值。
前一部分程式是延時的,猜測後一部分是4*4鍵盤的吧。具體可以hi我。
2樓:漆雨
……無敵型的……c語言你懂……彙編不行?
至少偶木有發現彙編**……幾乎全是c語言的。所以你不需要注釋……
3樓:匿名使用者
餓。。。
你問的都是c裡面的 預處理指令。具體的你自己去查一下,1. #define 巨集名 巨集定義字串2. # ifdef 識別符號
10ms這種是和硬體有關的,這裡就是你微控制器的timer.
具體的你自己查下麼。。
4樓:海獅
fosc估計是晶振頻率。
原理就是設定後會一直累加,當溢位(2^16=65536)時,觸發et2。
但是ie=0x40時et2中斷才能被接受。
硬體參考table 5裡面有ie的值的含義,太長,不在描述。
如果主頻是24mhz
10ms就是24mhz*0.01s=0.24m如果主頻是18.432mhz
10ms就是18.432mhz*0.01s=0.18432m#define timer2h 0xb1 //10ms#define timer2l 0xe0
timer2=0xb1e0 = 45536每次計數時間=(2^16-45536)*12=0.24m硬體參考的2-89頁有詳細的描述和計算方法。
你直接去看at89s51的參考手冊好了。
程式設計參考:
硬體參考:
這個一定要給分!幫你把公式算出來了!
下面這段微控制器c語言程式是一段濾波函式?是什麼意思麻煩給講解一下
5樓:匿名使用者
其實你拿紙筆算一下就能看出來,這是乙個四次均值濾波。
緩衝區的值加上最新取樣值以後,乘以四分之三(最新取樣值的權值為四分之一)。
6樓:匿名使用者
getadc(1); //ad轉換開始函式
current_buf += adcr; //將baiad值du疊加
currentval =(word)(current_buf>>2); //8位ad,配置的是zhi左對齊,dao要右移兩位得到正確值
current_buf -= currentval; //感覺不是濾波,版
不清楚這行的目權的。
微控制器程式錯誤,51微控制器c語言程式錯誤
後面兩個錯誤是沒有宣告函式,最簡單的方法就是把main函式調到程式的最後,你看看還有沒有錯誤,我們 hhh.c 113 error c211 call not to a function這個呼叫函式名不存在 hhh.c 114 error c211 call not to a function這個呼...
51微控制器c語言程式注釋標註,51微控制器C語言程式注釋標註
四喜丸子 按鍵掃瞄顯示程式,這有什麼難的?自己每一句照著分析分析不就行了。微控制器c語言程式設計,中間幾段程式注釋不會寫,一些步驟看不懂,望講解 20 考試翻版 微控制器的東西要看晶元的資料手冊,裡面有很多講解,其實微控制器裡特定的位址代表了微控制器特定的功能,你賦特定的值就會啟動或關閉功能,微控制...
我一直使用C語言寫微控制器程式,不太清楚程式進入中斷後,一系列PUSH到底是把ACC,PSW等
push指令是把所要儲存的資料存到內部資料儲存器裡,也就是內部ram,具體哪個地址要看sp堆疊指標的指向,如果預設sp為07h的話,那麼存的空間地址就從08h開始。這些值都是可以用直接定址呼叫的,想幹什麼都行。但記著在中斷程式返回前把它們按照順序pop回原來的暫存器裡。 你用c語言程式設計的時候不看...