实验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”剩下的几个键的程序流程与这个类似大家可自行分析。 |