历史上的今天
返回首页

历史上的今天

今天是:2025年03月07日(星期五)

正在发生

2018年03月07日 | 基于单片机的读矩阵键盘,用数码管显示相应键值

2018-03-07 来源:eefocus

/*****************************************************
    007.ASM

        接线:P0口接数码管
          P2接矩阵键盘
    用定时中断,若一段时间无操作,数码管进入自到循环显示   
*******************************************************/
  ORG 0000H
    LJMP MAIN
  ORG 000BH
    LJMP INT_T0
  ORG 0020H
MAIN:      ;主程序
    MOV SP,#50H 
  MOV DPTR,#LED_DATA  ;取表首地址
  MOV TMOD,#01H    ;设置定时器T0工作模式
  MOV TH0,#15H    ;写计时初值
    MOV TL0,#9FH
  MOV P2,#0FFH    ;P2口赋初值
  MOV R4,#00H    ;赋定时计数初值
  SETB 00H      ;00H为键值改变标志位
  SETB TR0      ;启动定时器T0
  MOV IE,#82H  ;开中断
  LCALL SHOW    ;数码管初始化
loop:      ;主循环
    LCALL KEY_READ  ;读键盘
JBC 00H,LOOP0  ;判断是否有键被按下,有则转去刷新输出并清零定时计数
CJNE R4,#0C8H,LOOP  ;没有键被按下,则判断定时时间是否达到,到,则进入数码管循环输出
LCALL SHOW1    ;没到,则回到主循环,重新扫描键盘
SJMP LOOP
LOOP0:
    LCALL SHOW
    MOV R4,#00H
SJMP LOOP    ;输出刷新完毕,回到主循环,重新扫描键盘

    /*键盘扫描程序*/
KEY_READ:
    CLR P2.6    ;P2.6输出低
JB P2.0,N0_0
MOV R0,#01H
LCALL DELAY
JB P2.0,N0_0
JNB P2.0,$
MOV R5,#04H
SETB 00H
SETB P2.6
LJMP NEAT
N0_0:
    JB P2.1,N0_1
MOV R0,#01H
LCALL DELAY
JB P2.1,N0_1
MOV R5,#03H
JNB P2.1,$
SETB 00H
SETB P2.6
LJMP NEAT
N0_1:
    JB P2.2,N0_2
MOV R0,#01H
LCALL DELAY
JB P2.2,N0_2
JNB P2.2,$
MOV R5,#02H
SETB 00H
SETB P2.6
LJMP NEAT
N0_2:
    JB P2.3,N1_0
MOV R0,#01H
LCALL DELAY
JB P2.3,N1_0
JNB P2.3,$
MOV R5,#01H
SETB 00H
SETB P2.6
LJMP NEAT
N1_0:
    SETB P2.6
CLR P2.5
JB P2.0,N1_1
MOV R0,#01H
LCALL DELAY
JB P2.0,N1_1
JNB P2.0,$
MOV R5,#08H
SETB 00H
SETB P2.5
LJMP NEAT 
N1_1:
JB P2.1,N1_2
MOV R0,#01H
LCALL DELAY
JB P2.1,N1_2
JNB P2.1,$
MOV R5,#07H
SETB 00H
SETB P2.5
LJMP NEAT 
N1_2:
JB P2.2,N1_3
MOV R0,#01H
LCALL DELAY
JB P2.2,N1_3
JNB P2.2,$
MOV R5,#06H
SETB 00H
SETB P2.5
LJMP NEAT 
N1_3:
JB P2.3,N2_0
MOV R0,#01H
LCALL DELAY
JB P2.3,N2_0
JNB P2.3,$
MOV R5,#05H
SETB 00H
SETB P2.5
LJMP NEAT
N2_0:
    SETB P2.5
CLR P2.4
JB P2.0,N2_1
MOV R0,#01H
LCALL DELAY
JB P2.0,N2_1
JNB P2.0,$
MOV R5,#0CH
SETB 00H
SETB P2.4
LJMP NEAT 
N2_1:
JB P2.1,N2_2
MOV R0,#01H
LCALL DELAY
JB P2.1,N2_2
JNB P2.1,$
MOV R5,#0BH
SETB 00H
SETB P2.4
LJMP NEAT 
N2_2:
JB P2.2,N2_3
MOV R0,#01H
LCALL DELAY
JB P2.2,N2_3
JNB P2.2,$
MOV R5,#0AH
SETB 00H
SETB P2.4
LJMP NEAT 
N2_3:
JB P2.3,NEAT
MOV R0,#01H
LCALL DELAY
JB P2.3,NEAT
JNB P2.3,$
MOV R5,#09H
SETB 00H
SETB P2.4
LJMP NEAT 
NEAT:
    SETB P2.4
    RET 
 

    /*显示子程序*/
SHOW:
    MOV A,R5
MOVC A,@A+DPTR
MOV P0,A
    RET

    /*循环显示子程序*/

    SHOW1:      ; 
  MOV R3,#00H
LOOP1:
    MOV A,R3
  MOVC A,@A+DPTR
  MOV P0,A
  MOV R0,#35H
  LCALL DELAY
  INC R3
  LCALL KEY_READ
  JB 00H,RETUN1
  CJNE R3,#10H,LOOP1
  MOV R3,#00H
  SJMP LOOP1
RETUN1:
    RET

    /*延时子程序*/

    DELAY:
D0:  MOV R2,#0FH
D1:  MOV R1,#0BFH
D2:  DJNZ R1,D2
    DJNZ R2,D1
  DJNZ R0,D0
  RET    
   

    /*定时中断T0处理子程序*/

    
INT_T0:
    CLR EA
    PUSH ACC
  INC R4
  MOV TH0,#15H
    MOV TL0,#9FH
  POP ACC
  SETB EA
    RETI

    /*数码管显示代码,0~F*/

    LED_DATA:
    DB 03H,9FH,25H,0DH,99H,49H,41H,1FH
  DB 01H,09H,11H,0C1H,63H,85H,61H,71H

      END


推荐阅读

史海拾趣

FOCI Fiber Optic Communications Inc公司的发展小趣事

FOCI Fiber Optic Communications Inc.公司发展的五个故事

故事一:成立与初创期

FOCI Fiber Optic Communications Inc.(以下简称FOCI)成立于1995年,由台湾工业技术研究院(工研院)的核心团队创立。这家公司自诞生之初就专注于光纤互连技术的发展,致力于设计、制造和销售高性能的光纤组件和集成模块。初创时期,FOCI凭借其对光纤技术的深刻理解和市场需求的敏锐洞察,逐步在市场上站稳脚跟,成为光纤通信领域的一股新兴力量。

故事二:技术创新与突破

FOCI在发展过程中,始终将技术创新视为企业发展的核心驱动力。公司不断投入研发资源,在光纤耦合器、PLC分配器、薄膜粗波分复用/密集波分复用以及多光纤电缆组装模块等领域取得了多项技术突破。这些技术创新不仅提升了产品的性能和质量,还大幅降低了生产成本,使得FOCI的产品在市场上更具竞争力。

故事三:与奇景光电的战略合作

2024年,半导体解决方案无晶圆厂巨头奇景光电(Himax Technologies)宣布向FOCI投入5.22亿新台币(折合约为1610万美元)的资金。这次投资不仅是两家公司财务合作的结果,更是双方在技术融合与应用拓展上迈出的重要一步。根据合作协议,FOCI的共封装光学器件(CPO)与奇景光电的晶圆级光学器件(WLO)将被整合到多芯片模块中,这些模块将广泛应用于高性能计算、云服务器、人工智能等多个领域。

故事四:全球化布局与市场拓展

随着全球光纤通信市场的快速发展,FOCI积极实施全球化战略,不断拓展国际市场。公司通过参加国际展会、建立海外销售网络等方式,将高性能的光纤组件和集成模块带到了世界各地。特别是在光纤到户(FTTH)和云计算领域,FOCI的产品因其高效、低成本的特性而广受欢迎,成功在全球市场占据了一席之地。

故事五:子公司设立与多元化发展

为了进一步拓展业务领域和市场份额,FOCI在国内设立了多家子公司,如中山上诠通信科技有限公司等。这些子公司不仅继承了FOCI在光纤通信领域的深厚底蕴和技术优势,还根据当地市场需求进行了产品和服务的本地化调整。同时,FOCI还积极探索多元化发展路径,涉足光纤高速数据传输技术开发设计、研发和咨询等多个领域,为公司未来的持续发展奠定了坚实基础。

A1 PROS公司的发展小趣事

进入2004年,A1 PROS开始着手研发彩色CCD传感器。经过两年的不懈努力,公司在2005年成功开发出3 IC彩色CCD传感器。这一创新产品不仅色彩还原度更高,而且功耗更低、稳定性更强,迅速受到市场的欢迎。随着彩色CCD传感器的推出,A1 PROS的产品线更加丰富,市场竞争力也进一步提升。

DBS Microwave Inc公司的发展小趣事

DBS Microwave始终将产品质量放在首位。公司建立了一套严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的质量控制。此外,公司还注重员工的培训和技能提升,确保每一位员工都能够熟练掌握生产技能和质量要求。这些措施使得DBS Microwave的产品质量得到了客户的高度认可。

AMI [American Megatrends Inc]公司的发展小趣事

作为一家有社会责任感的企业,DBS Microwave始终关注环境保护和可持续发展。公司积极采用环保材料和生产工艺,减少生产过程中的污染排放。同时,公司还积极参与社会公益活动,为当地社区的发展做出了积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。

AMS公司的发展小趣事

在DBS Microwave的发展过程中,技术创新一直是其核心竞争力。公司不断投入研发资源,突破技术瓶颈,推出了一系列具有创新性的产品。例如,在XXXX年,公司成功研发出了一款高性能的微波滤波器,其性能指标在当时的市场上处于领先地位。这一创新不仅为公司赢得了大量订单,也进一步巩固了其在行业内的技术领先地位。

Central Semiconductor公司的发展小趣事

在20世纪70年代末,当许多半导体制造商纷纷转向硅器件的生产时,Central Semiconductor却洞察到了后缘半导体市场的空白。公司决定坚守锗器件的生产,并凭借这一决策填补了市场空白。这种对旧技术的坚持不仅让Central在一段时间内保持了竞争优势,也为公司在后续发展中积累了宝贵的经验。

随着技术的进步,Central并没有固步自封,而是逐渐将产品系列扩展到包括表面安装设备等更先进的产品。这种转型不仅满足了市场对小型化产品的需求,也展示了Central对市场变化的敏锐洞察和适应能力。

问答坊 | AI 解惑

案例分享:DB SDK银行移动商务应用案例

随着金融业务的蓬勃发展,银行业务发展迅速,用户呈几何数量不断攀升。如何为规模庞大的准用户群提供更好、更便捷的服务?如何针对不断增长的新用户群提供最新、最全面的银行服务推荐?如何应对来自国内银行、外资银行的竞争,提高知名度和用户忠诚 ...…

查看全部问答>

全球最搞怪发明,不得不服

1超强的山寨版私家车 超强的山寨版私家车,看了此图,网友不禁感慨,这车太牛, 不用办照就可上路行驶,堪称中国最牛私家车!       2日本人发明的地铁休眠器   不注意看还以为是有人上吊呢……      ...…

查看全部问答>

群星系列实用资料共享

1_Cortex-M3支持的Thumb-2指令 2_Stellaris产品选型工具 3_LM3S系列Protel元件库 4_Stellaris外设驱动库用户指南 5_API函数介绍 6_I2C总线协议  …

查看全部问答>

COUNTER <= 5'h0_0 是什么意思啊?

请问这段程序里面的“  5\'h0_0   ” 是什么意思啊? 谢谢。 always @(posedge clk or posedge rst) begin     if(rst == 1\'b1)       COUNTER …

查看全部问答>

S3C2440 软浮点编译器与 编译驱动

我使用的是2.6.12的内核,基于ARM9构架的处理器 用uname -a 在嵌入式系统的显示是: Linux (none) 2.6.12-h1940 #50 Thu Dec 20 17:31:16 CST 2007 armv4tl unknown 交叉编译环境中建立了软浮点的,使用编译器版本是3.4.4 (网上找的) arm-linux ...…

查看全部问答>

分析一个简单CPLD程序问题

如题:    硬件为EPM570T100C5N的开发板。实现不了小灯闪烁功能,可以单独对小灯进行控制(只可以控制亮灭,不能控制闪烁),不知道什么原因,特来请教大家。以下是程序部分:module LEDxiaodeng(CLK,LED);input CLK;output [8:1]LED;re ...…

查看全部问答>

有关ARM 上can模块的地址问题

  因为是第一次做can总线通信,有些问题向大家请教一下:       1.我用的eCAN模块里面的寄存器是有id标识符寄存器的,这样就可以给数据加上id号,但问题是这样,如果要在can总线上载加上模块节点,那么它的邮箱 ...…

查看全部问答>

STM32耗电流问题,看了资料还是迷茫中...

资料中所说:IVDD Total current into VDD/VDDA power lines (source)IVSS Total current out of VSS ground lines (sink)两者最大值均为150mA那我就郁闷了...目 ...…

查看全部问答>

【低功耗】Actel IGLOO系列超低功耗,小封装FPGA下载

Actel IGLOO系列超低功耗,小封装FPGA下载Actel IGLOO Family Represents the True Alternative to ASICsand CPLDsfor Portable Applications5 μW static power in Flash*Freeze Mode4 X less static power than nearest competitor5 X longer batt ...…

查看全部问答>

定时器A的TAR计数器的问题

我用定时器计时,我想知道TAR是什么时候开始计数的,是从TACTL设置好计数模式开始还是从其它什么时候开始的?…

查看全部问答>