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

📄 12.lst

📁 串口通迅。能够完成下位机对上位机发出的1-9的信号做出响应
💻 LST
字号:
A51 MACRO ASSEMBLER  12                                                                   12/14/2007 18:39:53 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1             
                       2     
                       3     
0000                   4             org  0000h 
0000 0130              5             ajmp main 
0023                   6             ORG 0023H
0023 0200AC            7             lJMP COMINT
0030                   8             org  0030h 
0030                   9         main:
0030 758000           10             MOV P0, #00H ;
0033 75A0FF           11             MOV P2, #0FFH ;
                      12             ;MOV R2,#5
                      13             ;MOV R0,#53H 
0036 752000           14             MOV 20H,#00H ;设置串口工作方式
0039 758920           15             MOV TMOD,#20H
003C 759850           16             MOV SCON,#50H
003F 758DF3           17             MOV TH1,#0F3H ;设置速率4800,(12M晶体)
0042 758780           18             MOV PCON,#80H
0045 D2AF             19             SETB EA
0047 D2AC             20             SETB ES
0049 D28E             21             SETB TR1
004B                  22         loop:
                      23                
004B 9000F2           24             mov  dptr,#tab     ;将表头放入DPTR 
004E 12005B           25             lcall KEY      ;调用键盘扫描程序 
0051 93               26             movc a,@a+dptr    ;查表后将键值送入ACC 
0052 F580             27             mov  p0,a           ;将Acc值送入P0口 
0054 F599             28             mov sbuf,a
0056 C2A7             29             CLR P2.7            ;开显示 
0058 02004B           30             ljmp loop        ;返回反复循环显示 
                      31     ;-------------键盘扫描------------------------------------      
005B 1200A4           32          KEY: LCALL KS        ;调用检测按键子程序 
005E 7005             33          JNZ K1           ;有键按下K1
0060 1200E9           34          LCALL DELAY2      ;无键按调用延时去抖 
0063 015B             35          AJMP KEY          ;返回继续检测按键 
0065 1200E9           36     K1:  LCALL DELAY2 
0068 1200E9           37          LCALL DELAY2     ;有键按下延时去抖动 
006B 1200A4           38          LCALL KS          ;再调用检测按键程序 
006E 7002             39          JNZ K2          ;确认有按下进行下一步 
0070 015B             40          AJMP KEY         ;无键按下返回继续检测 
0072 7ADF             41     K2:  MOV R2,#0DFH      ;将扫描值送入 R2暂存 
0074 7C00             42          MOV R4,#00H   ;将第一列值送入R4暂存 
0076 8AB0             43     K3: MOV P3,R2     ;将R2的值送入P1口 
0078 20B404           44     L6:  JB P3.4,L1        ;P3.4等于1跳转到L1 
007B 7407             45          MOV A,#07H       ;将第一行值送入ACC 
007D 018D             46          AJMP LK         ;跳转到键值处理程序 
007F 20B304           47     L1:  JB P3.3,L2       ;P3.3等于1跳转到L2 
0082 7404             48          MOV A,#04H   ;将第二行的行值送入ACC 
0084 018D             49          AJMP LK  ;跳转到键值理程序进行键值处理 
0086 20B212           50     L2:  JB P3.2,NEXT     ;P3.2等于1跳转到NEXT 
0089 7401             51          MOV A,#01H     ;将第刃械男兄邓腿階CC 
008B 018D             52          AJMP LK          ;跳转到键值处理程序
008D 2C               53     LK:  ADD A,R4;行值与列值相加再加1后的键值送入A 
                      54          ;ADD A,#01H
008E C0E0             55          PUSH ACC         ;将A中的值送入堆栈暂存 
0090 1200E9           56     K4:  LCALL DELAY2        ;调用延时去抖动程序 
0093 1200A4           57          LCALL KS          ;调用按键检测程序 
0096 70F8             58          JNZ K4        ;按键没有松开继续返回检测 
A51 MACRO ASSEMBLER  12                                                                   12/14/2007 18:39:53 PAGE     2

0098 D0E0             59          POP ACC      ;将堆栈的值送入ACC 
009A 22               60          RET 
009B 0C               61     NEXT:INC  R4           ;将列值加一 
009C EA               62          MOV A,R2          ;将R2的值送入A 
009D 30E7BB           63          JNB ACC.7,KEY  ;扫描完至KEY处进行下一扫描 
00A0 23               64          RL A    ;扫描未完将A中的值右移一位进行下一列的扫描 
00A1 FA               65          MOV R2,A      ;将ACC的值送入R2暂存 
00A2 0176             66          AJMP K3       ;跳转到K3继续 
00A4 75B01F           67     KS:  MOV P3,#1FH   ;将P3口P3.7-P3.5位置0,P3.4-P3.2位置1 
00A7 E5B0             68          MOV A,P3     ;读P3口 
00A9 641F             69          XRL A,#1FH    ;将A中的值与A中的值相异或 
00AB 22               70          RET          ;子程序返回 
                      71     
                      72     ;-------------------串口中断--------------------------
00AC                  73     COMINT:
00AC C0E0             74     push acc
00AE C2AC             75     CLR ES
00B0 C298             76     CLR RI
00B2 E599             77     MOV A,SBUF
00B4 B40103           78     CJNE A,#1,IN_1
00B7 7590FE           79     MOV P1,#0FEH
00BA                  80     IN_1:
00BA B40203           81     CJNE A,#2,IN_2
00BD 7590FD           82     MOV P1,#0FDH
00C0                  83     IN_2:
00C0 B40303           84     CJNE A,#3,IN_3
00C3 7590FB           85     MOV P1,#0FBH
00C6                  86     IN_3:
00C6 B40403           87     CJNE A,#4,IN_4
00C9 7590F7           88     MOV P1,#0F7H
00CC                  89     IN_4:
00CC B40503           90     CJNE A,#5,IN_5
00CF 7590EF           91     MOV P1,#0EFH
00D2                  92     IN_5:
00D2 B40603           93     CJNE A,#6,IN_6
00D5 7590DF           94     MOV P1,#0DFH
00D8                  95     IN_6:
00D8 B40703           96     CJNE A,#7,IN_7
00DB 7590BF           97     MOV P1,#0BFH
00DE                  98     IN_7:
00DE B40803           99     CJNE A,#8,IN_8
00E1 75907F          100     MOV P1,#07FH
00E4                 101     IN_8:
00E4 D2AC            102     SETB ES
00E6 D0E0            103     pop acc
00E8 32              104     RETI
                     105     
                     106     
                     107     
                     108      ;----------延时程序---------------------------
00E9                 109        DELAY2:         ;40ms延时去抖动子程序 
00E9 7D08            110         MOV R5,#08H 
00EB 7EFA            111           L7:  MOV R6,#0FAH 
00ED DEFE            112           L8:  DJNZ R6,L8 
00EF DDFA            113             DJNZ R5,L7 
00F1 22              114             RET 
00F2                 115       tab: 
00F2 3F065B4F        116             db 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71
00F6 666D7D07                
00FA 7F6F777C                
00FE 395E7971                
                     117             end 
                                     
A51 MACRO ASSEMBLER  12                                                                   12/14/2007 18:39:53 PAGE     3

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
COMINT . . . . . .  C ADDR   00ACH   A   
DELAY2 . . . . . .  C ADDR   00E9H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
ES . . . . . . . .  B ADDR   00A8H.4 A   
IN_1 . . . . . . .  C ADDR   00BAH   A   
IN_2 . . . . . . .  C ADDR   00C0H   A   
IN_3 . . . . . . .  C ADDR   00C6H   A   
IN_4 . . . . . . .  C ADDR   00CCH   A   
IN_5 . . . . . . .  C ADDR   00D2H   A   
IN_6 . . . . . . .  C ADDR   00D8H   A   
IN_7 . . . . . . .  C ADDR   00DEH   A   
IN_8 . . . . . . .  C ADDR   00E4H   A   
K1 . . . . . . . .  C ADDR   0065H   A   
K2 . . . . . . . .  C ADDR   0072H   A   
K3 . . . . . . . .  C ADDR   0076H   A   
K4 . . . . . . . .  C ADDR   0090H   A   
KEY. . . . . . . .  C ADDR   005BH   A   
KS . . . . . . . .  C ADDR   00A4H   A   
L1 . . . . . . . .  C ADDR   007FH   A   
L2 . . . . . . . .  C ADDR   0086H   A   
L6 . . . . . . . .  C ADDR   0078H   A   
L7 . . . . . . . .  C ADDR   00EBH   A   
L8 . . . . . . . .  C ADDR   00EDH   A   
LK . . . . . . . .  C ADDR   008DH   A   
LOOP . . . . . . .  C ADDR   004BH   A   
MAIN . . . . . . .  C ADDR   0030H   A   
NEXT . . . . . . .  C ADDR   009BH   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PCON . . . . . . .  D ADDR   0087H   A   
RI . . . . . . . .  B ADDR   0098H.0 A   
SBUF . . . . . . .  D ADDR   0099H   A   
SCON . . . . . . .  D ADDR   0098H   A   
TAB. . . . . . . .  C ADDR   00F2H   A   
TH1. . . . . . . .  D ADDR   008DH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR1. . . . . . . .  B ADDR   0088H.6 A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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