找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1003|回复: 1
打印 上一主题 下一主题
收起左侧

大佬帮我看下这个单片机汇编代码为什么按键用不了?

[复制链接]
跳转到指定楼层
楼主

单片机汇编语言源程序如下:
  1.         ORG 0000H                        ;程序上电从0000H开始
  2.         AJMP MAIN                        ;跳转到主程序
  3.         ORG 0004H                        ;主程序起始地址
  4.         
  5.         KEY0 BIT P3.1                ;定义IO端口
  6.         KEY1 BIT P3.0
  7.         KEY2 BIT P3.2
  8.         KEY3 BIT P3.3
  9.         
  10.         LED0 BIT P2.0
  11.         LED1 BIT P2.1
  12.         LED2 BIT P2.2
  13.         LED3 BIT P2.3
  14.         LED4 BIT P2.4
  15.         LED5 BIT P2.5
  16.         LED6 BIT P2.6
  17.         LED7 BIT P2.7
  18. MAIN:
  19.         ;初始按键全部弹起
  20.         SETB KEY0                        
  21.         SETB KEY1
  22.         SETB KEY2
  23.         SETB KEY3
  24.         
  25.         ;初始LED全部熄灭
  26.         SETB LED0
  27.         SETB LED1
  28.         SETB LED2
  29.         SETB LED3
  30.         SETB LED4
  31.         SETB LED5
  32.         SETB LED6
  33.         SETB LED7
  34.         
  35.         SETB LED0                ;初始化LED0熄灭
  36.         CLR LED0                ;给低电平LED0亮
  37.         LCALL DELAY_250MS
  38.         CPL        LED0
  39.         
  40.         SETB LED1                ;初始化LED1熄灭
  41.         CLR LED1                ;给低电平LED1亮
  42.         LCALL DELAY_250MS
  43.         CLR LED0
  44.         LCALL DELAY_250MS
  45.         CPL        LED1        

  46.         SETB LED2                ;初始化LED2熄灭
  47.         CLR LED2                ;给低电平LED2亮
  48.         CPL LED0
  49.         LCALL DELAY_250MS
  50.         CLR LED0
  51.         LCALL DELAY_250MS
  52.         CPL LED0
  53.         CLR LED1
  54.         LCALL DELAY_250MS
  55.         CLR LED0
  56.         LCALL DELAY_250MS
  57.         CPL LED1
  58.         CPL LED2
  59.         
  60.         SETB LED3                ;初始化LED3熄灭
  61.         CLR LED3                ;给低电平LED3亮
  62.         CPL LED0
  63.         LCALL DELAY_250MS
  64.         CLR LED0
  65.         LCALL DELAY_250MS
  66.         CPL LED0
  67.         CLR LED1
  68.         LCALL DELAY_250MS
  69.         CPL LED0
  70.         LCALL DELAY_250MS
  71.         CPL LED1
  72.         CLR LED2
  73.         CPL LED0
  74.         LCALL DELAY_250MS
  75.         CLR LED0
  76.         LCALL DELAY_250MS
  77.         CLR LED1
  78.         CPL LED0
  79.         LCALL DELAY_250MS
  80.         CLR LED0
  81.         LCALL DELAY_250MS
  82.         CPL LED3
  83.         CPL LED0
  84.         CPL LED1
  85.         CPL LED2
  86.         
  87.         LCALL LOOP
  88.         
  89. LOOP:
  90.         JB KEY0,LOOP1                ;KEY0按下
  91.         LCALL DELAY10MS                ;延时去按下抖动
  92.         JB KEY0,LOOP1               
  93.         JNB KEY0,[        DISCUZ_CODE_1        ]nbsp;                       
  94.         LCALL DELAY10MS                ;延时去弹起抖动
  95.         CPL LED4                        
  96.         
  97. LOOP1:
  98.         JB KEY1,LOOP2                ;KEY1按下
  99.         LCALL DELAY10MS                ;延时去按下抖动
  100.         JB KEY1,LOOP
  101.         JNB KEY1,$
  102.         LCALL DELAY10MS                ;延时去弹起抖动
  103.         CPL LED5                                
  104.         
  105. LOOP2:
  106.         JB KEY2,LOOP3                ;KEY2按下
  107.         LCALL DELAY10MS                ;延时去按下抖动
  108.         JB KEY2,LOOP3
  109.         JNB KEY2,$
  110.         LCALL DELAY10MS                ;延时去弹起抖动
  111.         CPL LED6                                
  112.         LJMP LOOP
  113.         
  114. LOOP3:
  115.         JB KEY3,LOOP                ;KEY3按下
  116.         LCALL DELAY10MS                ;延时去按下抖动
  117.         JB KEY3,LOOP
  118.         JNB KEY3,$
  119.         LCALL DELAY10MS                ;延时去弹起抖动
  120.         CPL LED7                                
  121.         LJMP LOOP
  122.         
  123. DELAY10MS:                        
  124.                         NOP
  125.                         NOP
  126.                         NOP
  127.                         PUSH 30H
  128.                         PUSH 31H
  129.                         MOV 30H,#87
  130.                         MOV 31H,#10
  131.                         RET
  132. DELAY_250MS:
  133.                         MOV R7,#10
  134. D1:                 MOV R6,#100
  135. D2:                 MOV R5,#250
  136.                         DJNZ R5,$
  137.                         DJNZ R6,D2
  138.                         DJNZ R7,D1
  139.                         RET        
  140.         
  141.                 END
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:384109 发表于 2022-10-26 14:47 | 只看该作者
LOOP1:
        JB KEY1,LOOP2                ;KEY1按下
        LCALL DELAY10MS                ;延时去按下抖动
        JB KEY1,LOOP
第二个跳转不对,控制的LED是4,5,6,7,应该有一两个按键能起作用吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表