历史上的今天
返回首页

历史上的今天

今天是:2024年11月25日(星期一)

正在发生

2019年11月25日 | PIC单片机控制数码管显示4*4矩阵键盘对应按键号

2019-11-25 来源:51hei

;使用C口作键盘扫描,7段数码管显示按键号 ,63系列通用寄存器地址:20~7FH, A0~FFH ,未达到预期目的,只用个位数显示按键号时正常工作,增加按键号转换(用2位数显示),则提示“STACK OVERFLOW"--堆栈溢出.编译后机器码容量为1.3KB左右,未超过CALL跳转范围——1页(2K) 。

#include P16C63A.INC 

KEYCODE EQU  H'0020'

KEYNUM  EQU  H'0021'

CC    EQU  H'0024'

TABADD EQU H'0025'

SW   EQU H'0026'

GW   EQU H'0027'

;PD   EQU H'0028'


ORG H'0000'

GOTO MAIN

ORG H'0010'


MAIN  MOVLW H'00'

      TRIS PORTA

      TRIS PORTB ;RB口全为输出,用作驱动7段数码管

      MOVWF KEYNUM

      MOVLW H'F0'  

      TRIS PORTC ;  设置RC低四位为输出,高四位为输入

      MOVLW TABLE

      MOVWF TABADD

      MOVLW H'0001'

;      MOVWF PD   ;用来判断按键号是否大于9


LOOP   

      CALL KEYSCAN

   ;   CALL JUDGE     ;判断是按键号是否大于9

   ;   XORLW H'0001'

   ;   BTFSS STATUS,Z

       CALL XIAO

   ;   GOTO DASHU

XS    CALL DISP_2

      GOTO LOOP    ;循环扫描、显示按键号


JUDGE      

      MOVLW H'0A'

      SUBWF KEYNUM,0

      BTFSC STATUS,0  ; C标志

   ;   RETLW 0  ;小于10

   ;   RETLW 1  ; 10以上的按键号

      GOTO XIAO

      GOTO DASHU


XIAO  MOVLW 0

      MOVWF SW

      MOVF KEYNUM,0

      MOVWF GW

      RETLW 0

     ; GOTO XS


DASHU   

      MOVLW H'01'

      MOVWF SW

      MOVLW H'0A'

      SUBWF KEYNUM,0

      MOVWF GW

      RETLW 0

     ; GOTO XS  


DISP_2

      MOVLW H'02'

      MOVWF PORTA

      MOVF SW,0

      CALL DISP

      CALL DELAY


      MOVLW H'01'

      MOVWF PORTA

      MOVF GW,0

      CALL DISP

      CALL DELAY

      RETLW 0


DELAY MOVLW 0

      MOVWF CC

LL    DECFSZ CC,1

      GOTO LL

      RETLW 0


DISP  ; MOVF KEYNUM,0                    ;输入W,输出W

      ADDWF TABADD,0  

      CALL CONV

      MOVWF PORTB

      RETLW 0

CONV  MOVWF PCL   ;取码,输入W(0~F),输出W

TABLE RETLW H'C0'

      RETLW H'F9'

      RETLW H'A4'

      RETLW H'B0'

      RETLW H'99'

      RETLW H'92'

      RETLW H'82'

      RETLW H'F8'

      RETLW H'80'

      RETLW H'90'

      RETLW H'88'

      RETLW H'83'

      RETLW H'C6'  

      RETLW H'A1'

      RETLW H'86'

      RETLW H'8E'    ;0~F 数码管代码

      RETLW H'C0'


KEYSCAN  MOVLW H'FE'  ;第一行置低(RC0输出0)

         MOVWF PORTC

         NOP

         MOVF PORTC,0 ;读RC各端口状态

         ANDLW H'F0' ;屏蔽低四位,只需要低四位来判断

         MOVWF KEYCODE ;保存端口状态

         MOVLW H'F0'

         SUBWF KEYCODE,0 ;与初值比较,看是否有键按下

         BTFSS STATUS,Z  ;有键按下(不等于初值,Z为零)则结束扫描

         GOTO  GETNUM1


         MOVLW H'FD'  ;第二行置低(RC1输出0)

         MOVWF PORTC

         NOP

         MOVF PORTC,0 ;读RC各端口值

         ANDLW H'F0' ;屏蔽低四位,只需要低四位来判断

         MOVWF KEYCODE ;保存端口状态

         MOVLW H'F0'

         SUBWF KEYCODE,0 ;与初值比较,看是否有键按下

         BTFSS STATUS,Z  ;有键按下(不等于初值,Z为零)则结束扫描

         GOTO  GETNUM2


         MOVLW H'FB'  ;第三行置低(RC2输出0)

         MOVWF PORTC

         NOP

         MOVF PORTC,0 ;读RC各端口值

         ANDLW H'F0' ;屏蔽低四位,只需要低四位来判断

         MOVWF KEYCODE ;保存端口状态

         MOVLW H'F0'

         SUBWF KEYCODE,0 ;与初值比较,看是否有键按下

         BTFSS STATUS,Z  ;有键按下(不等于初值,Z为零)则结束扫描

         GOTO  GETNUM3


         MOVLW H'F7'  ;第四行置低(RC3输出0)

         MOVWF PORTC

         NOP

         MOVF PORTC,0 ;读RC各端口值

         ANDLW H'F0' ;屏蔽低四位,只需要低四位来判断

         MOVWF KEYCODE ;保存端口状态

         MOVLW H'F0'

         SUBWF KEYCODE,0 ;与初值比较,看是否有键按下

         BTFSS STATUS,Z  ;有键按下(不等于初值,Z为零)则结束扫描

         GOTO  GETNUM4

FH       RETLW  0    ; 子程序返回


QUDOU    MOVF PORTC,0  ;去抖处理

         SUBWF KEYCODE,0

         BTFSC STATUS,Z

         GOTO QUDOU

         GOTO FH 


推荐阅读

史海拾趣

AiT Semiconductor Inc公司的发展小趣事

随着技术的不断成熟和产品的不断完善,AiT公司开始积极拓展市场。他们通过参加国际电子展会、与国内外知名企业建立合作关系等方式,不断提升品牌知名度和市场份额。同时,公司还针对不同行业和领域的需求,推出了定制化的半导体解决方案,进一步扩大了应用范围。这一系列的举措使得AiT公司在市场中实现了跨越式发展。

昆泰芯微电子(CONNTEK)公司的发展小趣事

昆泰芯微电子自成立以来,便以其深厚的技术实力和持续的创新能力,在电子行业中独树一帜。公司拥有一支由清华大学、荷兰代尔夫特理工大学等海内外知名大学毕业的专业技术团队,他们具备在恩智浦、美满电子及高通等半导体名企的工作经历,为公司带来了丰富的行业经验和前沿技术。在传感器芯片领域,昆泰芯微电子成功研发出具有国际一流性能的产品,成功打入一线知名品牌厂商,引领了行业风潮。

CONTTEK Group GmbH公司的发展小趣事

CONTTEK Group GmbH公司深知品质是企业的生命线。因此,公司建立了严格的质量管理体系,从原材料的采购到产品的生产、检测、包装等每一个环节都进行严格把控。这种对品质的执着追求,使得公司的产品赢得了客户的广泛信赖和好评。许多知名电子企业都选择与CONTTEK Group GmbH公司建立长期合作关系,共同推动电子行业的发展。

台湾美丽微(FMS)公司的发展小趣事

近年来,FTDI通过战略并购进一步拓展了其业务领域。例如,电连技术通过发行股份及支付现金的方式收购了FTDI的控股权,这一举措不仅使电连技术在产品和客户层面实现了更完整的布局,也增强了其在汽车电子、物联网、工业产品、医疗设备等多个领域的市场竞争力。FTDI凭借其在USB桥接芯片领域的深厚积累和技术优势,为电连技术的业务扩展提供了有力支持,共同推动了公司在全球电子元件产业的持续发展。

Advanced Monolythic Ceramics公司的发展小趣事

近年来,FTDI通过战略并购进一步拓展了其业务领域。例如,电连技术通过发行股份及支付现金的方式收购了FTDI的控股权,这一举措不仅使电连技术在产品和客户层面实现了更完整的布局,也增强了其在汽车电子、物联网、工业产品、医疗设备等多个领域的市场竞争力。FTDI凭借其在USB桥接芯片领域的深厚积累和技术优势,为电连技术的业务扩展提供了有力支持,共同推动了公司在全球电子元件产业的持续发展。

Gespac Inc公司的发展小趣事

随着市场的不断拓展,FTDI也面临着诸多挑战,包括如何吸纳优秀的技术人才、打击假冒芯片以及提供本地化的技术支持等。为了应对这些挑战,FTDI采取了多项措施,包括引进经验丰富的工程师和潜力大学毕业生充实技术团队,加强对本地分销商的培训,以及增加对重点应用市场的技术支持力度。这些措施不仅提升了FTDI的技术实力和市场响应速度,也进一步巩固了其在全球市场的地位。

问答坊 | AI 解惑

51单片机烧录软件

51单片机烧录软件…

查看全部问答>

高清热潮掀起 走出误区才能体现高清价值

目前,高清热潮已被掀起,视频监控开始以全高清作为新的目标。一直以来,人们对图像清晰的追求始终没有停止,所以当前高清视频监控系统已经被越来越多的行业所关注,平安城市、公安系统、交通卡口、金融银行业、机场、海关、边防安检,水利电力、移 ...…

查看全部问答>

u-boot/fs makefile

SUBDIRS        := jffs2 cramfs fdos fat reiserfs ext2 .depend all:         @for dir in $(SUBDIRS) ; do \\                 $(MAKE) -C $$dir $@ ; don ...…

查看全部问答>

关于UCOS 3个任务切换的问题!

我创建了3个任务: 任务一()               //优先级为4 {     while(1)     {     输出1控制灯1,然后输出状态取反;     系统延时(500毫秒 ...…

查看全部问答>

要做无线传感器应用,需要购买哪些仪器设备,送分

所在实验室是国防领域的 作为总体部门,以前很少涉及电子方面 为扩展应用方向 在电子方面设备一无所有的情况下 准备投资购买一些常用仪器 希望有经验的给些建议 最好是针对无线传感器网络 示波器 信号发生器等等......请给予补充 最好能说 ...…

查看全部问答>

请问Protel原理图编译时,这个错误是什么意思?

本信息来自合作QQ群:电子工程师技术交流(12425841) 群主: 蓝天白云请问Protel原理图编译时,这个错误是什么意思?…

查看全部问答>

关于101上电复位问题

                                 小弟在用101,发现偶尔101会死掉,就是程序不运行了,按复位键也无法重新启动,只能开关电源才能正常运行。这个现 ...…

查看全部问答>

MAX7219单片和两片级联驱动程序

MAX7219单片和两片级联驱动程序 说明一下:     这个word版式是从百度上下载的,在原版中,作者只是写了驱动一片MAX7219的程序。 第一次使用MAX7219,用了两片级联来驱动15个数码管,按照原版程序驱动一片MAX7219是没有问题的 ...…

查看全部问答>

有哈尔滨的同行吗?

我在哈尔滨接单片机的活干,在家,没有公司。有愿意与我合作的吗?我电话:13766867932  QQ:909987836…

查看全部问答>

宣布我又多了一项技能“抄板”

本来没想做的,朋友推给我了,面子问题还是接了,这抄了几块板颇有点心得了,基本都能抄的一模一样咯,甚至能在原板上做优化设计。有需要抄板的可以找我啦,哈哈 QQ:184381794     …

查看全部问答>