⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex3-1.asm

📁 《51单片机应用开发案例精选配套源代码
💻 ASM
字号:
;--------------程序信息-----------------
;文件名   : ex3-1.asm
;版本     : 1.0
;作者     :
;修改时间 :

;--------------程序说明------------------
;CHAP 3.1 独立式键盘输入实例

;-----------常量和变量声明---------------


;--------------预定义--------------------

               ORG 0000H
               LJMP START

;------------中断入口地址分配------------
               ;ORG 0003H
               ;LJMP INT0PRG
               ;ORG 000BH
               ;LJMP INT1PRG
               ;ORG 0013H;
               ;LJMP
               ;ORG 0030H

START:
;--------------初始化子程序--------------
     MOV SP,60H;
;--------------主程序--------------------
MAIN:

LJMP MAIN


;----------------子程序------------------

;----------------------------------------
;          独立式键盘子程序
;----------------------------------------
KEY :    MOV P1,#0FFH;          预读p0的准备
         MOV A,P1;              读p0口的值
         MOV R2,A;              保存p0口的值到R2
         LCALL delay10ms        ;延时消抖
         MOV P1,#0FFH;;         
         MOV A,P1;              再读p0口的值
         ;CJNE A,R2,KEY;         与上次保存的值相比较
         CJNE A,#01H,KEY2;      判断是不是键1
         LJMP PKEY1;            如果是键1按下则调转到其键执行程序处
KEY2:    CJNE A,#02H,KEY3;      判断是不是键2
         LJMP PKEY2;            如果是键2按下则跳转到其键执行程序处
KEY3:    CJNE A,#04H,KEY4;
         LJMP PKEY3;
KEY4:    CJNE A,#08H,KEY5;
         LJMP PKEY3;
KEY5:    CJNE A,#10H,KEY6;
         LJMP PKEY3;
KEY6:    CJNE A,#20H,KEY7;
         LJMP PKEY3;
KEY7:    CJNE A,#40H,KEY8;
         LJMP PKEY3;       
KEY8:    CJNE A,#80H,RETURN;    如果都不是则重新读键值
         LJMP PKEY8;
RETURN:  LJMP KEYEND;      
 
PKEY1:   MOV P2,#0FFH;         键1的执行程序
          CLR P2.0;              P2.0口接的LED灯亮1S
           LCALL delay1s;
           LJMP KEYEND;
PKEY2:   MOV P2,#0FFH;        
          CLR P2.1;            
          LCALL delay1s;
PKEY3:   MOV P2,#0FFH;       
          CLR P2.2;            
          LCALL delay1s;
PKEY4:   MOV P2,#0FFH;       
          CLR P2.3;            
          LCALL delay1s;
PKEY5:   MOV P2,#0FFH;       
          CLR P2.4;           
          LCALL delay1s;
PKEY6:   MOV P2,#0FFH;       
          CLR P2.5;              
          LCALL delay1s;
PKEY7:   MOV P2,#0FFH;        
          CLR P2.6;              
          LCALL delay1s;
PKEY8:   MOV P2,#0FFH;        
          CLR P2.7;             
          LCALL delay1s;
LJMP KEYEND;

KEYEND: RET;                   子程序结尾

;--------------中断子程序----------------

;---------------延时子程序---------------
DELAY10MS: MOV R5,#02H;
 DELAY10: MOV R6,#00F4H;
 DELAY11: MOV R7,#0FFH;
 DELAY12: DJNZ R7,DELAY12;
        DJNZ R6,DELAY11;
        DJNZ R5,DELAY10;
        RET;
DELAY1S: MOV R5,#04H;
 DELAY00: MOV R6,#00F4H;
 DELAY01: MOV R7,#0FFH;
 DELAY02: DJNZ R7,DELAY02;
        DJNZ R6,DELAY01;
        DJNZ R5,DELAY00;
        RET;
END

;---------------注意事项-----------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -