课程设计:矩阵键盘扫描(汇编)

发布者:星光闪耀最新更新时间:2016-09-13 来源: eefocus关键字:课程设计  矩阵键盘扫描  汇编 手机看文章 扫描二维码
随时随地手机看文章

2010年1月2日 - gududesiling - suixin

//比较简单的汇编矩阵键盘扫描程序
//P2口高四位接列线,第四位接行线

//源程序和proteus仿真我一打包,地址:http://proteus.5d6d.com/thread-9013-1-1.html
          ORG  0000H
          AJMP MAIN

          ORG  0030H
MAIN: MOV  P2,#0F0H ;给列送高电平
          LCALL DELAY  ;延时,使电路稳定下来
          MOV  R4,00H
          MOV  A,P2  ;取P2口的值
          ANL  A,#0F0H  ;屏蔽行线的影响
          CJNE A,#0F0H,L ;如果有键按下,就跳转到L
DESPLAY:
          MOV  A,R7
          MOV  DPTR,#TABLE 
          MOVC A,@A+DPTR
          MOV  P1,A 
          AJMP MAIN 

L:       LCALL DELAY  ;延时去除抖动
          MOV  A,P2  ;重新取值
          JB  ACC.4,L1 ;P2.4这一列有键按下?没有则跳转到L1
          MOV  R3,#00H  ;R3用作记列号
           AJMP Q1

L1:     JB  ACC.5,L2
          MOV  R3,#01H
          AJMP Q1

L2:     JB  ACC.6,L3
          MOV  R3,#02H
          AJMP Q1

L3:     JB  ACC.7,MAIN
           MOV  R3,#03H
           AJMP Q1

Q1:     MOV  P2,#0FH  ;给行送高电平
           LCALL DELAY  ;延时,稳定电路
           MOV  A,P2  ;取值
           ANL  A,#0FH  ;屏蔽高四位
          JB  ACC.0,Q2 ;判断是不是第0行,不是则转移
           MOV  R4,#00H  ;如果是,那把0送给R4(R4存行(转换为键号))
          AJMP JIA

Q2:     JB  ACC.1,Q3
           MOV  R4,#04H
           AJMP JIA

Q3:     JB  ACC.2,Q4
           MOV  R4,#08H
           AJMP JIA

Q4:     JB  ACC.3,MAIN
           MOV  R4,#0CH
           AJMP JIA

JIA:     MOV  A,R3    ;行号加上列号就是改键的值
          ADD  A,R4
           MOV  R7,A  ;调整后放在R7寄存器中
           AJMP MAIN

DELAY: MOV  R6,#20H  ;仿真时测试延时为13ms

 Q6:       MOV  R5,#0BBH
              DJNZ R5,$
              DJNZ R6,Q6
              RET

//下面为0-f的字形表
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ,7FH,6FH,77H
             DB 7CH,39H,5EH,79H,71H;

             END  

关键字:课程设计  矩阵键盘扫描  汇编 引用地址:课程设计:矩阵键盘扫描(汇编)

上一篇:74ls595在proteus中的使用和浅谈
下一篇:单片机键盘扫描程序(汇编)

推荐阅读最新更新时间:2024-03-16 15:09

STM8与汇编语言(15)--AD转换
现在大部分的单片机也都具备了A/D转换器,有8位的,也有10位的,当然性能好的具备了12位的A/D。在STM8单片机中,提供的是10位的A/D,通道数随芯片不同而不同,少的有4个通道,多的则有16个通道。 下面的实验程序首先对A/D输入进行采样,然后将采样结果的高8位(丢弃最低的2位),作为延时参数去调用延时子程序,然后再去驱动LED控制信号。因此不同的采样值,决定了LED的闪烁频率。当旋转ST三合一开发板上的电位器时,可以看到LED的闪烁频率发生变化。 同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。 stm8/ #include mapping.inc
[单片机]
独立键盘实现计数功能程序(汇编
//此程序功能是:手动计数器,当按键按下时,计数加一,液晶显示一次(加一的结果)。 //源程序和proteus下载地址: http://proteus.5d6d.com/thread-9003-1-1.html ORG 0000H LJMP START ORG 0030H START: MOV DPTR,#TABLE ;设置段码首地址 MOV R0,#00H ;计数初值存R0 MOV P0,#3FH MOV P2,#3FH ;复位时数码管显示0 S1: INC R0 CJNE R0,#100,S2 MOV
[单片机]
独立键盘实现计数功能程序(<font color='red'>汇编</font>)
ARM 汇编中的 "B ." 语句意义.
今天在玩 STM32F3 Discovery 的时候, 烧写程序后, FreeRTOS 运行一会就会跳转到 startup_stm32f30x.s 内的系统服务调用处理这段程序的 B . 处, 如下. SVC_Handler PROC EXPORT SVC_Handler B . ENDP 查阅了一下 keil-MDK 的帮助文档, 在 Built-in variables and constants 节找到了解释, 也就是跳转到当前行呀. 2333333. 如下图: 好吧. 顺便解释一下 的意义吧. 先看官方解释
[单片机]
ARM <font color='red'>汇编</font>中的
单片机课程设计汇编语言实现四位数计算器
汇编语言(英語:assembly language):是任何一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。 在不同的设备中,汇编语言对应着不同的机器语言指令集。 一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。 Keil: 是美国Keil软件公司出品的支持8051系列单片机架构的一款IDE(集成开发环境)。 AT89C51:是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。 普中开发版原理图: 题目:电子计算器 基
[单片机]
51单片机汇编语言实验(四)----串行通信实验
一、实验目的:    学习串行口的工作方式,掌握单片机通信程序编制方法。 二、实验设备:    PC计算机一台,Dais-52PRO+实验系统一套。 三、实验内容:    与PC进行串行通信 四、与PC进行串行通信    1、实验原理:    8051单片机通过MAX232芯片与PC机进行通信,在PC机上运行串口助手软件。PC机通过软件助手发数据给单片机,单片机收到数据后取反发给PC机,可以在PC上观察数据。    2、实验步骤:   ① 将IO口区的P3.0与PACK区扩展板的RXD(P3.0)连接;   ② 将IO口区的P3.1与PACK区扩展板的TXD(P3.1)连接;   ③ 将PACK区模块的DB9通过串
[单片机]
51单片机<font color='red'>汇编</font>语言实验(四)----串行通信实验
以寄存器Rn为目的操作数的指令(3条)—mcs51单片机汇编语言
以寄存器Rn为目的操作数的 指令 (3条) 这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中,源操作数不变。有直接、立即和寄存器寻址方式: MOV Rn,data ;(data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中 MOV Rn,#data ;#data→(Rn)立即数直接送到寄存器Rn中 MOV Rn,A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中
[单片机]
ATmega32单片机汇编程序
本人初学每一款CPU,首先都是要研究一下相应的汇编指令,感觉这样能够很快的体验到该CPU的硬件原理,对后续的学习很有帮助.许多人认为不然,感觉汇编繁琐,难用。其实这样不会对单片机内部有深入的了解,会一些基本的汇编在单步调试中很有用,还有调度的编写,操作系统的移植等。 下面是个led闪烁的汇编程序,注释用C写的,一目了然 ***************************************************************** //CPU:mega32 //编译器:iar #include ioavr.h NAME main PUBLIC main ORG
[单片机]
汇编语言教程-段寄存器的说明语句
  在汇编语言源程序中可以定义多个段,每个段都要与一个段寄存器建立一种对应关系。建立这种对应关系的说明语句格式如下:   ASSUME段寄存器名:段名   其中:段寄存器是CS、DS、ES、SS、FS和GS,段名是在段定义语句说明时的段名。   在一条ASSUME语句中可建立多组段寄存器与段之间的关系,每种对应关系要用逗号分隔。例如,   ASSUME CS:CODE1, DS:DATA1   上面的语句说明了:CS对应于代码段CODE1,DS对应于数据段DATA1。   在ASSUME语句中,还可以用关键字NOTHING来说明某个段寄存器不与任何段相对应。下面语句说明了段寄存器ES不与某段相对应。   ASSUME ES:NOT
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved