📄 ex3-4.asm
字号:
;--------------程序信息-----------------
;文件名 : ex3-4.asm
;版本 : 1.0
;作者 :
;修改时间 :
;--------------程序说明------------------
;CHAP 3.4 定时中断方式键盘输入实例
;-----------常量和变量声明---------------
F1 BIT 00H; 标志位定义
F2 BIT 01H;
KEYIN EQU P1;
;--------------预定义--------------------
ORG 0000H
LJMP START
;------------中断入口地址分配------------
ORG 000BH
LJMP INTT0PRG
;ORG 000BH
;LJMP INT1PRG
;ORG 0013H;
;LJMP
;ORG 0030H
START:
;--------------初始化子程序--------------
MOV SP,60H;
LCALL INITINTT0;
;--------------主程序--------------------
MAIN:
SJMP $; 等待中断
LJMP MAIN
;----------------子程序------------------
;--------------中断子程序----------------
;--------------------
; 定时扫描方式T0中断初始化子程序部分
; 单片机时钟频率为12M
;--------------------
INITINTT0:
MOV TMOD,#01H; 设置定时器工作方式1
MOV TL0,#0F0H; 设置定制器初始值
MOV TH0,#0D8H;
SETB TR0; 启动T0
SETB ET0; 允许T0中断
SETB EA; CPU中断允许
RET;
;---------------------------------
; 定时扫描方式T0中断服务子程序部分
;---------------------------------
INTT0PRG:
MOV TL0,#0F0H; 设置定制器初始值
MOV TH0,#0D8H;
MOV KEYIN,#0FH; 所有列置高电平
MOV A,KEYIN; 读取行值
CJNE A,#0FH,HAVEKEY; 判断有无键按下
CLR F1;
CLR F2;
LJMP INTT0END;
HAVEKEY:
JB F1,DITHERED; 判断是否去抖
SETB F1;
LJMP INTT0END;
DITHERED:
JNB F2,SCANED; 判断是否进行了按键识别
LJMP INTT0END;
SCANED:
SETB F2;
SCANKEY: ;按键识别,可采用上两例中的线反选法和扫描法
;按键执行,调用KEYEXE;
INTT0END:
RETI;
;---------------延时子程序---------------
END
;---------------注意事项-----------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -