任務:把實驗板上的任意一盞燈點亮。
目的:了解單片機基本工作原理,對指令控制硬件有初步認識。
今天我們開始51單片機學習的第一課,我們先從最簡單的學起,為了能更直觀地了解到指令對硬件的控制,我們會采用匯編語言進行講解,以便使初學者更容易理解,建議大家在看過課程后,都實際自己在實驗板進行操作。 這里,我們先假定大家已經清楚KEIL的建立工程項目和進行程序編譯的方法,如果有不明白的,可以下載KEIL使用教程,這里就不重復講述如何使用KEIL。 另外,我們也先假定大家已經清楚如何將編譯生成的HEX文件燒錄到STC芯片里。這里講課不按傳統教科書方式進行,而是按實際需要,用到才學。所以一些基礎的知識,以后會逐步在課程里講述。首先,我們看看實驗板的電路圖。
51hei.png (50.71 KB, 下載次數: 52)
下載附件
2020-12-3 18:58 上傳
由圖中可以看出,單片機的P0口8個IO每個均接有一只LED發光二級管及串有一只電阻到電源正極,而我們的目的就是要把LED點亮,顯而易見,只需要把我們的P0口相對應的IO口寫成低電平,LED就可以通電工作。 在51單片機里,上電后,芯片復位后其所有引腳均是高電平,因此,正常狀態下,通電后,LED是不發光的,因此,我們需要用一個指令,使這個引腳變為低電平,(知識點:數字電路里,只存在二種狀態,0和1,一般用高電平表示1,低電平表示0。) 我們在KEIL里建一個項目,寫入如下的語句:
51hei.png (132.87 KB, 下載次數: 46)
下載附件
2020-12-3 18:59 上傳
好了,編譯,生成HEX文件,下載到我們的實驗,怎么樣,燈亮了吧。 這里起作用的就是 CLR P0.0這一條語句,它的作用就是把P0.0端口寫成低電平,相對應的語句是SETB P0.0,它的作用剛好相反,是把P0.0寫成高電平,同理,我們可以很容易知道,如果要控制其它端口,只要更換P0.0為其它端口名即可。 ORG語句在匯編里作用只是用來告訴編譯器,定位到某個地址放置跟著的代碼。因為上電復位了,單片機總是從地址0000H開始執行的,所以,在開始地址,我們放上一跳轉指令AJMP ,它是無條件跳轉到指定的地址,為什么要跳轉到100H?這個留在講中斷時再講。 關于AJMP $,是指跳轉到本行,也即是單片機執行到這里,會不停地在本行循環,不會再往下執行,一般放程序后面,使單片機執行到這里就停在這里。 好了,到這里,大家都應該明白怎么把一盞燈點亮了吧。看似神秘的單片機就是這么簡單,它的引腳,要么是高電平,要么低電平(P0口有點特殊,這個留待以后再講)。我們要做的,只不過是編個程序,控制引腳在適當的時候按我們的意愿去輸出高電平或者低電平,僅此而已。大家嘗試一下,把其它的燈也點亮。
第二課 閃動的燈
任務:使把實驗板上的任意一盞燈閃動起來。
目的:學習延時程序,對MCU執行時間有個初步概念。
今天,我們來學習第二課——閃動的燈。上一課,我們已經把實驗板上的燈點亮了,同時學習了CLR、SETB語句,同時,我們知道了,只要把端口電平寫為低或高,即可使該端口上的LED亮或者滅。今天,我們就要讓這個燈閃起來。我們在KEIL里建一個項目,寫入如下的語句:
]T%@)Z7[2EV8HR0(S{UQ3$S.png (197.5 KB, 下載次數: 55)
下載附件
簡單的單片機流程
2020-12-3 18:15 上傳
完整的Word格式文檔51黑下載地址:
實驗板教程2014.doc
(2.48 MB, 下載次數: 8)
2020-12-3 18:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|