📄 ex3-4.lst
字号:
A51 MACRO ASSEMBLER EX3_4 06/23/2007 17:03:21 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN ex3-4.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ex3-4.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;--------------程序信息-----------------
2 ;文件名 : ex3-4.asm
3 ;版本 : 1.0
4 ;作者 :
5 ;修改时间 :
6
7 ;--------------程序说明------------------
8 ;CHAP 3.4 定时中断方式键盘输入实例
9
10 ;-----------常量和变量声明---------------
0000 11 F1 BIT 00H; 标志位定义
0001 12 F2 BIT 01H;
0090 13 KEYIN EQU P1;
14
15
16 ;--------------预定义--------------------
17
0000 18 ORG 0000H
0000 02000E 19 LJMP START
20
21 ;------------中断入口地址分配------------
000B 22 ORG 000BH
000B 020029 23 LJMP INTT0PRG
24 ;ORG 000BH
25 ;LJMP INT1PRG
26 ;ORG 0013H;
27 ;LJMP
28 ;ORG 0030H
29
000E 30 START:
31 ;--------------初始化子程序--------------
000E 856081 32 MOV SP,60H;
0011 120019 33 LCALL INITINTT0;
34 ;--------------主程序--------------------
0014 35 MAIN:
0014 80FE 36 SJMP $; 等待中断
37
0016 020014 38 LJMP MAIN
39
40
41 ;----------------子程序------------------
42
43 ;--------------中断子程序----------------
44
45 ;--------------------
46 ; 定时扫描方式T0中断初始化子程序部分
47 ; 单片机时钟频率为12M
48 ;--------------------
0019 49 INITINTT0:
0019 758901 50 MOV TMOD,#01H; 设置定时器工作方式1
001C 758AF0 51 MOV TL0,#0F0H; 设置定制器初始值
001F 758CD8 52 MOV TH0,#0D8H;
0022 D28C 53 SETB TR0; 启动T0
0024 D2A9 54 SETB ET0; 允许T0中断
0026 D2AF 55 SETB EA; CPU中断允许
0028 22 56 RET;
57
58 ;---------------------------------
A51 MACRO ASSEMBLER EX3_4 06/23/2007 17:03:21 PAGE 2
59 ; 定时扫描方式T0中断服务子程序部分
60 ;---------------------------------
0029 61 INTT0PRG:
0029 758AF0 62 MOV TL0,#0F0H; 设置定制器初始值
002C 758CD8 63 MOV TH0,#0D8H;
002F 75900F 64 MOV KEYIN,#0FH; 所有列置高电平
0032 E590 65 MOV A,KEYIN; 读取行值
0034 B40F07 66 CJNE A,#0FH,HAVEKEY; 判断有无键按下
0037 C200 67 CLR F1;
0039 C201 68 CLR F2;
003B 02004E 69 LJMP INTT0END;
003E 70 HAVEKEY:
003E 200005 71 JB F1,DITHERED; 判断是否去抖
0041 D200 72 SETB F1;
0043 02004E 73 LJMP INTT0END;
0046 74 DITHERED:
0046 300103 75 JNB F2,SCANED; 判断是否进行了按键识别
0049 02004E 76 LJMP INTT0END;
004C 77 SCANED:
004C D201 78 SETB F2;
004E 79 SCANKEY: ;按键识别,可采用上两例中的线反选法和扫描法
80 ;按键执行,调用KEYEXE;
004E 81 INTT0END:
004E 32 82 RETI;
83
84 ;---------------延时子程序---------------
85
86 END
;---------------注意事项-----------------
A51 MACRO ASSEMBLER EX3_4 06/23/2007 17:03:21 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
DITHERED . . . . . C ADDR 0046H A
EA . . . . . . . . B ADDR 00A8H.7 A
ET0. . . . . . . . B ADDR 00A8H.1 A
F1 . . . . . . . . B ADDR 0020H.0 A
F2 . . . . . . . . B ADDR 0020H.1 A
HAVEKEY. . . . . . C ADDR 003EH A
INITINTT0. . . . . C ADDR 0019H A
INTT0END . . . . . C ADDR 004EH A
INTT0PRG . . . . . C ADDR 0029H A
KEYIN. . . . . . . D ADDR 0090H A
MAIN . . . . . . . C ADDR 0014H A
P1 . . . . . . . . D ADDR 0090H A
SCANED . . . . . . C ADDR 004CH A
SCANKEY. . . . . . C ADDR 004EH A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 000EH A
TH0. . . . . . . . D ADDR 008CH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -