標(biāo)題: 大佬幫我看下這個單片機(jī)匯編代碼為什么按鍵用不了? [打印本頁]

作者: 1798351955    時間: 2022-10-26 12:39
標(biāo)題: 大佬幫我看下這個單片機(jī)匯編代碼為什么按鍵用不了?

單片機(jī)匯編語言源程序如下:
  1.         ORG 0000H                        ;程序上電從0000H開始
  2.         AJMP MAIN                        ;跳轉(zhuǎn)到主程序
  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
復(fù)制代碼



作者: 人中狼    時間: 2022-10-26 14:47
LOOP1:
        JB KEY1,LOOP2                ;KEY1按下
        LCALL DELAY10MS                ;延時去按下抖動
        JB KEY1,LOOP
第二個跳轉(zhuǎn)不對,控制的LED是4,5,6,7,應(yīng)該有一兩個按鍵能起作用吧




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1