📄 ex3-1.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 + -