?? keyshuzi程序講解.txt
字號:
任務:鍵盤顯示數字
org 0000h;(1)
ljmp start;(2)
org 0030h;(3)
start: mov p2,#0ffh;(4)
CLR P2.6 ;選中最右邊的七段碼。;(5)
mov p3,#0ffh ;初始化,P3口全部置高電平;(6)
l1: jnb p3.2,l2 ;(7)
jnb p3.3,l3 ; ;(8)
jnb p3.4,l4 ; ;(9)
jnb p3.5,l5 ;檢測按鍵;(10)
ljmp l1 ;循環檢測;(11)
l2: mov p0,#28H ;顯示'0';(12)
ljmp l1;(13)
l3: mov p0,#7EH ;顯示'1';(14)
ljmp l1;(15)
l4: mov p0,#0A2H ;顯示'2';(16)
ljmp l1;(17)
l5: mov p0,#62H ;顯示'3';(18)
ljmp l1;(19)
end;(20)
這個程序的任務是鍵盤顯示數字,也就是分別按倚天版的4個小鍵盤,右邊的數碼管輪流分別顯示數字0,1,2,3,
為了便于程序的講解,我們把每一句分別編號, 實際輸入程序時,就不用寫后面的號碼了。第1,2,3行是單片機的初始化,一般的程序都是這樣開頭的, 作用是跳開00-30h的地址單元,因為這些單元是分配給特殊寄存器使用的。第6行把p3送0ffh,作用是把這些端口p3.0-p3.7置高電平,
因為鍵盤接在p3口,只有當端口為高電平時, 我們按下鍵盤,那么這個端口被短路到地,端口被強行變為0。根據這個大家自行分析第4句的意思。第5行clr p2.6,就是選中最右邊的數碼管。
板上一共有6個數碼管,分別是p2.1,p2.2,p2.3p2.4p2.5p2.6.
程序運行到這里, 如果我們往數碼管送數,那么數碼管就應當亮了,這里我見插入了一段簡單的鍵盤檢測程序:我們來看第7行,jnb p3.2,l2 ,意思是如果p3.2為0,那么執行l2。倚天版的p3.2接了一個小開關到地,此時就有兩種情況,如果鍵盤沒有按下:程序繼續向下跑第8行,繼續檢測p3.3有沒有按下,直到第11行: ljmp l1 又跳轉到第7行,繼續檢測。所以如果一直沒有鍵盤按下,那么這個程序將一直在第7,8,9,10,11行反復循環。
如果某鍵盤已經按下,(假設為p3.2)此時被強行拉低為0,此時第7行的jnb p3.2,l2
就會使程序跳轉到l2(第12行): mov p0,#28H,這里就把28h這個數送到p0口,數碼管就顯示
“0”了。然后繼續第13行 ljmp l1 ,程序又跳轉到第7行,繼續檢測鍵盤.如果這個鍵不松開
那么程序將反復執行7,12,13,數碼管就始終顯示一個“0”剩下的幾個鍵的程序流程與這個類似
大家可自行分析。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -