|
实验6
端口按键判断技术(按键显示数字)
此部份由8个轻触按键组成,
一端接地, 一端由JP48引出, 当按下按键时,
相应端口为低电平。

|
接线方法: 1
按键接到P3口。用一条8PIN数据排线,把按键部份的JP48,接到CPU部份的P3口JP53.
2 接8位数码管的数据线。将数码管部份的数据口 JP5接到CPU部份的P0口JP51.
3 接8位数码管的显示位线。将数码管部份的显示位口
JP8接到CPU部份的P2口JP52.
|
任务:键盘显示数字,
通过按键盘上的K02,K03,K04,K05四个按键,
实现数码管显示0,1,2,3
|
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)
|
为了便于程序的讲解,我们把每一句分别编号,第1,2,3行是单片机的初始化,一般的程序都是这样开头的,
作用是跳开00-30h的地址单元,这些单元是分配给特殊寄存器使用的。第6行把p3送0ffh,作用是把这些端口p3.0-p3.7置高电平。
因为本例实验中XL2000的键盘接在p3口,只有当端口为高电平时,
我们按下键盘,端口被强行变为0。根据这个大家自行分析第4句的意思。第5行clr
p2.6,就是选中最右边第2个的数码管。板上一共有8个数码管,分别是p2.0,p2.1,p2.2,p2.3,p2.4,p2.5,p2.6,p2.7
程序运行到这里,
如果我们往数码管送数,那么数码管就应当亮了,这里插入了一段简单的键盘检测程序:我们来看第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”剩下的几个键的程序流程与这个类似大家可自行分析。
|