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

📄 ex3-2.lst

📁 《PIC单片机应用开发典型模块》源代码及图片
💻 LST
字号:
A51 MACRO ASSEMBLER  EX3_2                                                                06/23/2007 16:58:09 PAGE     1


MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN ex3-2.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ex3-2.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;--------------程序信息-----------------
                       2     ;文件名   : ex3-2.asm
                       3     ;版本     : 1.0
                       4     ;作者     :
                       5     ;修改时间 :
                       6     
                       7     ;--------------程序说明------------------
                       8     ;CHAP 3.2  行列式键盘输入实例
                       9     
                      10     ;-----------常量和变量声明---------------
  0090                11     KEYIN EQU P1;           定义宏变量,易于硬件连线更改时,程序的修改
                      12     
                      13     ;--------------预定义--------------------
                      14     
0000                  15                    ORG 0000H
0000 020003           16                    LJMP START
                      17     
                      18     ;------------中断入口地址分配------------
                      19                    ;ORG 0003H
                      20                    ;LJMP INT0PRG
                      21                    ;ORG 000BH
                      22                    ;LJMP INT1PRG
                      23                    ;ORG 0013H;
                      24                    ;LJMP
                      25                    ;ORG 0030H
                      26     
0003                  27     START:
0003 758160           28             MOV SP,#60H;        初始化堆栈指针
0006 7AFF             29             MOV R2,#0FFH; 
                      30     
                      31     ;--------------初始化子程序--------------
0008 856081           32          MOV SP,60H;
                      33     ;--------------主程序--------------------
000B                  34     MAIN:
000B 120016           35             LCALL KEYBOARD;   按键识别子程序
000E 1200A5           36             LCALL KEYEXE;      按键执行子程序      
0011 80F8             37             JMP MAIN
                      38     
                      39     
0013 02000B           40     LJMP MAIN
                      41     
                      42     
                      43     ;----------------子程序------------------
                      44     
                      45     
                      46     ;---------------------------------
                      47     ;    行列式键盘子程序部分
                      48     ;---------------------------------
0016                  49     KEYBOARD:
0016 7800             50             MOV R0,#00H;         r0寄存器保存键值,初始化清零
0018 75900F           51     ROW:   MOV KEYIN,#0FH;       线反转法识别键盘的值,具体在下一节论述
001B 30900B           52     ROW00: JNB KEYIN.0,ROW0;
001E 309112           53     ROW01: JNB KEYIN.1,ROW1;
0021 309219           54     ROW02: JNB KEYIN.2,ROW2;
0024 309320           55     ROW03: JNB KEYIN.3,ROW3;
0027 80ED             56             JMP KEYBOARD;
0029 1200E4           57     ROW0:  LCALL delay10ms;
002C 2090EF           58             JB KEYIN.0,ROW01;
A51 MACRO ASSEMBLER  EX3_2                                                                06/23/2007 16:58:09 PAGE     2

002F 7800             59             MOV R0,#00H;
0031 801E             60             JMP COL;
0033 1200E4           61     ROW1:  LCALL delay10ms;
0036 2091E8           62             JB KEYIN.1,ROW02;
0039 7801             63             MOV R0,#01H;
003B 8014             64             JMP COL;
003D 1200E4           65     ROW2:  LCALL delay10ms;
0040 2092E1           66             JB KEYIN.2,ROW03;
0043 7802             67             MOV R0,#02H;
0045 800A             68             JMP COL;
0047 1200E4           69     ROW3:  LCALL delay10ms;
004A 2093CB           70             JB KEYIN.3,ROW;
004D 7803             71             MOV R0,#03H;
004F 8000             72             JMP COL;
                      73     
0051 75900F           74     COL:    MOV KEYIN,#0FH;      
0054 30900B           75     COL00: JNB KEYIN.0, COL0;
0057 309113           76     COL01: JNB KEYIN.1, COL1;
005A 30921B           77     COL02: JNB KEYIN.2, COL2;
005D 309323           78     COL03: JNB KEYIN.3, COL3;
0060 80B4             79             JMP KEYBOARD;
0062 11E4             80      COL0: CALL delay10ms;
0064 2094F0           81            JB KEYIN.4,COL01;
0067 7400             82            MOV A,#00H;
0069 48               83            ORL A,R0;
006A F8               84            MOV R0,A;
006B 802A             85            JMP KEY;
006D 11E4             86      COL1: CALL delay10ms;
006F 2095E8           87            JB KEYIN.5,COL02;
0072 7410             88            MOV A,#10H;
0074 48               89            ORL A,R0;
0075 F8               90            MOV R0,A;
0076 801F             91            JMP KEY;
0078 11E4             92      COL2: CALL delay10ms;
007A 2096E0           93            JB KEYIN.6,COL03;
007D 7420             94            MOV A,#20H;
007F 48               95            ORL A,R0;
0080 F8               96            MOV R0,A;
0081 8014             97            JMP KEY;
0083 11E4             98      COL3: CALL delay10ms;
0085 2097CC           99            JB KEYIN.7,COL00;
0088 7430            100            MOV A,#30H;
008A 48              101            ORL A,R0;
008B F8              102            MOV R0,A;
008C 8009            103            JMP KEY;
                     104     
008E 2094C6          105     JB KEYIN.4,COL01;
0091 7400            106     MOV A,#00H;
0093 48              107     ORL A,R0;
0094 F8              108     MOV R0,A
0095 8000            109     JMP KEY;
                     110     
0097 E8              111     KEY:   MOV A,R0;             将读到的行列信息转化成键值。
0098 C4              112            SWAP A;                R0的高位是行号,低位是列号
0099 540F            113            ANL A,#0FH;            则 键值=R0的高位×8+R0的低位
009B 23              114            RL A;
009C 23              115            RL A;
009D 28              116            ADD A,R0;
009E 540F            117            ANL A,#0FH;
00A0 F8              118            MOV R0,A;             把得到的键值存在R0中。
00A1 7590FF          119            MOV KEYIN,#0FFH;
00A4                 120     KEYBOARDEND:
00A4 22              121            RET;
                     122     
00A5 9000F1          123     KEYEXE: MOV DPTR,#KEYVA      ;按键执行子程序
00A8 E8              124              MOV A,R0;            读出R0的键值对应的键值表内容
A51 MACRO ASSEMBLER  EX3_2                                                                06/23/2007 16:58:09 PAGE     3

00A9 93              125              MOVC A,@A+DPTR;
00AA F8              126              MOV R0,A;
00AB B80104          127     KEY1:   CJNE R0,#01H,KEY2;   判断是否是key1
00AE B2A1            128              CPL P2.1;            是,则改变其亮灭状态。
00B0 8031            129              JMP KEYEND;         调转到子程序尾。
00B2 B80204          130     KEY2:   CJNE R0,#02H,KEY3;   
00B5 B2A2            131              CPL P2.2 
00B7 802A            132              JMP KEYEND;
00B9 B80404          133     KEY3:   CJNE R0,#04H,KEY4;   
00BC B2A3            134              CPL P2.3 
00BE 8023            135              JMP KEYEND;
00C0 B80804          136     KEY4:   CJNE R0,#08H,KEY5;   
00C3 B2A4            137              CPL P2.4 
00C5 801C            138              JMP KEYEND;
00C7 B81004          139     KEY5:   CJNE R0,#10H,KEY6;   
00CA B2A5            140              CPL P2.5 
00CC 8015            141              JMP KEYEND;
00CE B82004          142     KEY6:   CJNE R0,#20H,KEY7;   
00D1 B2A6            143              CPL P2.6 
00D3 800E            144              JMP KEYEND;
00D5 B84004          145     KEY7:   CJNE R0,#40H,KEY8;   
00D8 B2A7            146              CPL P2.7 
00DA 8007            147              JMP KEYEND;
00DC B88004          148     KEY8:   CJNE R0,#80H,KEYEND;   
00DF B2A0            149              CPL P2.0 
00E1 8000            150              JMP KEYEND;
                     151     
00E3 22              152     KEYEND: RET;
                     153     
                     154     
                     155     ;--------------中断子程序----------------
                     156     
                     157     ;---------------延时子程序---------------
                     158     
00E4 7D04            159      Delay10ms: MOV R5,#04H;
00E6 7EF4            160      DELAY20: MOV R6,#00F4H;
00E8 7F33            161      DELAY21: MOV R7,#033H;
00EA DFFE            162      DELAY22: DJNZ R7,DELAY22;
00EC DEFA            163             DJNZ R6,DELAY21;
00EE DDF6            164             DJNZ R5,DELAY20;
00F0 22              165             RET;
                     166     
00F1 01020304        167     KEYVA:  DB 01H,02H,03H,04H;   键值列表,可改动键值调整相应的键值安排
00F5 05060708        168             DB 05H,06H,07H,08H
00F9 09000A0B        169             DB 09H,00H,0AH,0BH
00FD 0C0D0E0F        170             DB 0CH,0DH,0EH,0FH
                     171     
                     172     END
                             
                             ;---------------注意事项-----------------
                             
A51 MACRO ASSEMBLER  EX3_2                                                                06/23/2007 16:58:09 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

COL. . . . . . . .  C ADDR   0051H   A   
COL0 . . . . . . .  C ADDR   0062H   A   
COL00. . . . . . .  C ADDR   0054H   A   
COL01. . . . . . .  C ADDR   0057H   A   
COL02. . . . . . .  C ADDR   005AH   A   
COL03. . . . . . .  C ADDR   005DH   A   
COL1 . . . . . . .  C ADDR   006DH   A   
COL2 . . . . . . .  C ADDR   0078H   A   
COL3 . . . . . . .  C ADDR   0083H   A   
DELAY10MS. . . . .  C ADDR   00E4H   A   
DELAY20. . . . . .  C ADDR   00E6H   A   
DELAY21. . . . . .  C ADDR   00E8H   A   
DELAY22. . . . . .  C ADDR   00EAH   A   
KEY. . . . . . . .  C ADDR   0097H   A   
KEY1 . . . . . . .  C ADDR   00ABH   A   
KEY2 . . . . . . .  C ADDR   00B2H   A   
KEY3 . . . . . . .  C ADDR   00B9H   A   
KEY4 . . . . . . .  C ADDR   00C0H   A   
KEY5 . . . . . . .  C ADDR   00C7H   A   
KEY6 . . . . . . .  C ADDR   00CEH   A   
KEY7 . . . . . . .  C ADDR   00D5H   A   
KEY8 . . . . . . .  C ADDR   00DCH   A   
KEYBOARD . . . . .  C ADDR   0016H   A   
KEYBOARDEND. . . .  C ADDR   00A4H   A   
KEYEND . . . . . .  C ADDR   00E3H   A   
KEYEXE . . . . . .  C ADDR   00A5H   A   
KEYIN. . . . . . .  D ADDR   0090H   A   
KEYVA. . . . . . .  C ADDR   00F1H   A   
MAIN . . . . . . .  C ADDR   000BH   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
ROW. . . . . . . .  C ADDR   0018H   A   
ROW0 . . . . . . .  C ADDR   0029H   A   
ROW00. . . . . . .  C ADDR   001BH   A   
ROW01. . . . . . .  C ADDR   001EH   A   
ROW02. . . . . . .  C ADDR   0021H   A   
ROW03. . . . . . .  C ADDR   0024H   A   
ROW1 . . . . . . .  C ADDR   0033H   A   
ROW2 . . . . . . .  C ADDR   003DH   A   
ROW3 . . . . . . .  C ADDR   0047H   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0003H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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