51汇编程序

来源:互联网 发布:硫化硅橡胶 淘宝 编辑:程序博客网 时间:2024/04/28 16:50

一个晚上坚持写代码和调试,一步一步前进,终于通过四个阶段完成了在有8255扩展接口的51开发板上调试成功我自己编的4*4矩阵键盘扫描并在led上显示键值的汇编程序(几乎100行代码)。。。好欣慰。。。今晚睡个好觉吧。。。

 org 0000h
 ljmp start
 org 0030h
start:
 mov dptr,#6fffh
 mov a,#81h
 movx @dptr,a  ;8255设置
 
main:
 mov dptr,#0fffh
 mov a,#0ffh
 movx @dptr,a  ;关显示

 mov dptr,#4fffh   
 mov a,#00h
 movx @dptr,a  ;所有行值拉低 

 mov dptr,#4fffh      
    movx a,@dptr   ;读取列值  
    mov b,a
 cjne a,#0fh,m   ;判断是否有键按下 ,有就转消抖 
 ljmp main    ;没有就继续扫描
m:
 lcall delay    ;延时消抖

h1:       ;扫描第一行
 mov dptr,#4fffh   
 mov a,#0efh
 movx @dptr,a
 mov dptr,#4fffh      
    movx a,@dptr   ;读取列值 
 anl a,#0fh   
 cjne a,b,h2
 ljmp x1

x1: mov b,#0e0h
 orl a,b
 mov dptr,#0fffh   
 movx @dptr,a
 ljmp main
h2:      ;扫描第二行 
mov dptr,#4fffh   
 mov a,#0dfh
 movx @dptr,a
 mov dptr,#4fffh      
    movx a,@dptr   ;读取列值
 anl a,#0fh   
 cjne a,b,h3
 ljmp x2


x2: mov b,#0d0h
 orl a,b
 mov dptr,#0fffh
 movx @dptr,a
 ljmp main
h3:       ;扫描第三行
mov dptr,#4fffh   
 mov a,#0bfh
 movx @dptr,a
  mov dptr,#4fffh      
    movx a,@dptr
 anl a,#0fh   
 cjne a,b,h4
 ljmp x3
x3: mov b,#0b0h
 orl a,b
 mov dptr,#0fffh
 movx @dptr,a
 ljmp main
h4:        ;扫描第四行
mov dptr,#4fffh   
 mov a,#7fh
 movx @dptr,a
  mov dptr,#4fffh      
    movx a,@dptr
 anl a,#0fh   
 cjne a,b,default
 ljmp  x4
x4: mov b,#70h
 orl a,b
 mov dptr,#0fffh
 movx @dptr,a
 ljmp main

default:     ;都不是
 mov b,#0ffh
 orl a,b
 mov dptr,#4fffh   
 movx @dptr,a
 ljmp main

delay:
 mov r0,#3
d:  mov r1,#225
 djnz r1,$
 djnz r0,d
 ret

end

 

 

原创粉丝点击