返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 

;键盘控制的数字显示。

;***************************************************************************
;*  E-mail:sxj1974@163.com (51c51 test web)  51单片机学习网,自学单片机的网站  *
;* Create by :石学军

任务:键盘显示数字
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)

hex格式文件下载(点右键,目标另存为hex即可直接烧写)


这个程序的任务是键盘显示数字,也就是分别按倚天版的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”剩下的几个键的程序流程与这个类似
大家可自行分析