51微控制器學習心得四

2021-03-04 02:49:43 字數 2225 閱讀 8748

行的按鍵a端都依次接在低四位,四列按鍵的b端依次接在高四位。

我們把鍵值編為 1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

對此,我引入了一位高人編寫的鍵值判斷程式:

uchar keyscan(void)

; for(j=0; j<4; j++)

}它的方式比較容易理解,其實就是按照行列查詢法。每次先讓一行為低電平,依次判斷該行的四個鍵子,哪個是低電平。雖然沒有按鍵消除抖動,但是效果依然十分給力。

有興趣的讀者可以自行慢慢分析。除此之外還有很多方法,但是**普遍比較冗長。有興趣大家可以學習一下其他方法。

接下來說說直流電機的變速驅動,就是pwm,就是脈寬調變。根據高電平存在的時間和低電平的時間比例,改變速度,也可以理解成根據數碼訊號的占空比來控制電動機的轉速。

pwm在微控制器應用中屬於常用範圍,在arm微控制器中都整合了pwm模組。那麼如何實現pwm呢,pwm是週期控制的一種,所以涉及到週期訊號,一定要利用微控制器中的定時器。

複習一下定時器,定時器涉及四個暫存器,tmod,th0/1,tl0/1,tcon(主要是tr0/1這一位,控制定時器的啟動)

我們借助彙編,可以利用中斷,也可以不借助中斷。利用c語言,就一定要利用中斷,中斷還要涉及ea位,et0/1位,以及中斷編號和中斷向量。

51組合語言編寫的範例如下:

不利用中斷的版本,p1.0管腳接在直流電機+端,電機—端接在gnd.

**如下:

*** 0000h

ajmp main

*** 0080h

main:mov tmod , #10h t1是方式1,定時器。

loop2:clr p1.0

mov th1, #08h

mov tl1, #0abh

setb tr1

loop:jnb tf1 ,loop

setb p1.0

clr tr1

mov th1,#0aah

mov tl1 , #0aah

setb tr1

loop1:jnb tf1 , loop1

clr tr1

ajmp loop2

不利用中斷方式的匯程式設計序,不需要中斷入口,只需要判斷tf1/0,是否為零。而利用中斷方式,就需要中斷處理程式。例如: p1.0管腳接在直流電機+端,電機—端接在gnd.

*** 0000h

ajmp main

*** 000bh -----定時器0中斷程式入口

ajmp proc -------定時器中斷處理程式的名字

*** 0080h

main : clr p1.0

clr c

mov tmod , #01h

mov th0 , #04h

mov tl0, #44h

setb ea

setb et0

setb tr0

loop0: ajmp loop0等待中斷

proc : cpl c

jnb c , loop1

clr tr0

setb p1.0

mov th0,#06h

mov tl0,#66h

setb tr0

ajmp endi

loop1:clr tr0

clr p1.0

mov th0 ,#04h

mov tl0,#44h

setb tr0

endi :reti

由此可見,利用中斷設計匯程式設計序,重點在於中斷處理程式。編寫思想在於實時性,在於每時每刻究竟要做什麼。注重過程控制,並且同時注重每一刻的處理。

利用c語言編寫主要要基於中斷處理。通過函式void time0_int() interrupt 1來處理中斷。

同樣,直流電機+端接p1.0,負端接gnd

程式如下:

#include

sbit drv = p1^0;

void time0_init()

void time0_int() interrupt 1

void main()

while(1);的作用和loop : ajmp loop作用一樣,就是乙個死迴圈,表示一直等待。

本篇先告一段落,下一篇講講lcd1602,以及ds18b20的驅動方式和驅動原理。之後再談談iic匯流排的呼叫方式。謝謝!

微控制器學習心得

以上三步學會,就相當於降龍十八掌武功,會了三掌了,可以勉強護身。第四步 與pc機進行rs232通訊 微控制器都有usart介面,特別是msp430系列中很多態號,都具有兩個usart介面。usart介面不能直接與pc機的rs232介面連線,它們之間的邏輯電平不同,需要使用乙個max3232晶元進行電...

微控制器學習心得三

51微控制器的那些事兒 三 接下來我們分享一下定時 計數器的應用。其實微控制器中,定時 計數器是個很常用而且很方便的時間方面的工具。學好定時器是很重要的。很多例項,諸如萬年曆,測速儀器,波特率發生器,方波發生器,脈衝發生器,pwm脈寬調變都要基於微控制器的定時 計數器來應用。總結起來,微控制器的定時...

微控制器C語言學習心得

今天寫這一篇文章並不是因為已經想好了一篇文章才寫下來,而是我要將這一篇文章作為乙個長期的筆記來寫,我會一直更新。在進行微控制器開發時,經常都會出現一些很不起眼的問題,這些問題其實都是很基礎的c語言知識點,是一些小細節。但是正是因為很基礎,又都是小細節,所以我們往往容易忽視它們。結果有時候我們會花很長...