循序渐进51study之实例6-7
实例6
;eg1-eg5没有调用系统提供的子程序,下面的程序演示调用系统子程序功能
;此程序让数码管显示01234567
include sdo_h
;要调用系统提供的子程序,所以包含系统子程序的头文件
;你可以在sdo_h中看到你可以调用的系统子程序
;***如果你认为系统子程序有错误时,请不要调用*****
org
0000h
start: mov 30h,#3fh
;0的显示代码装入显示缓冲区
mov
31h,#06h ;1~
mov
32h,#5bh ;2~
mov
33h,#4fh ;3~
mov
34h,#66h ;4~
mov
35h,#6dh ;5~
mov
36h,#7dh ;6~
mov
37h,#07h ;7~
lcall print80ms<>
;调用系统数码管扫描程序
sjmp start
;重新扫描数码管
;以下为数字0-9和字符a-f的显示代码
;3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h
;77h,7ch,39h,5eh,79h,71h
end
实例7
;此程序运行时显示: kboard x ,其中x为按下的键盘号码。
include sdo_h ;因为下面用到了系统子程序,所以要包含头文件sdo_h
;键盘扫描程序,出口参数 有键按下时c=1,a=键值,否则c=0
org
0000h
lcall screen_clear<>
mov
30h,#78h ;显示k
mov
31h,#7ch ;显示b
mov
32h,#5ch ;显示o
mov
33h,#77h ;显示a
mov
34h,#72h ;显示r
mov
35h,#5eh ;显示d
main: lcall print10ms<>
lcall key_search<> ;调用键盘扫描程序
jnc
main ;没有键按下转 main
mov
dptr,#dispcode
inc
a
movc
a,@a+dptr
mov
37h,a ;键盘号码显示在第8个数码管上
sjmp main
;以下分别为: 0,1,2,3,4,5,6,7,8,9的显示代码
dispcode: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h
end