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

📄 icmain.lst

📁 51单片机用汇编实例 包括ad
💻 LST
字号:
A51 MACRO ASSEMBLER  ICMAIN                                                               05/24/2006 09:52:10 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;==============================================================
                       2     ; 文件名称: ICMAIN.ASM
                       3     ; 功能描述: 
                       4     ;==============================================================
                       5     
                       6             ;$INCLUDE (IIC_A51.ASM)
  0096                 7     SDA     BIT  P1.6
  0097                 8     SCL     BIT  P1.7
                       9     
  0000                10     ACK     BIT  00H
                      11     
  0030                12     SLA     DATA 30H                ; 地址
  0031                13     SUBA    DATA 31H                ; 子地址
                      14     
0000                  15             ORG 0000H
0000 020100           16             LJMP START
                      17     
0100                  18             ORG 0100H
0100 00               19     START:  NOP
0101 12013B           20             LCALL INIT_IIC
                      21     ;       MOV SLA, #0A0H
                      22     ;       MOV SUBA, #00H
                      23     ;       LCALL SEND_STR          ; 向IC卡中写入8字节
                      24     
0104 7FFF             25             MOV R7, #0FFH
0106 DFFE             26             DJNZ R7, $
                      27     
0108 7530A0           28             MOV SLA, #0A0H          ; 
010B 753100           29             MOV SUBA, #00H
010E 1201F9           30             LCALL RCV_STR           ; 从IC卡中读8个字节到RAM 40H中
                      31     
0111 80FE             32             SJMP $
                      33     
                      34     ; 总线启动函数
0113                  35     START_IIC:
0113 D296             36             SETB SDA
0115 00               37             NOP
0116 00               38             NOP
0117 D297             39             SETB SCL
0119 00               40             NOP
011A 00               41             NOP
011B 00               42             NOP
011C 00               43             NOP
011D 00               44             NOP
011E C296             45             CLR SDA
0120 00               46             NOP
0121 00               47             NOP
0122 00               48             NOP
0123 00               49             NOP
0124 C297             50             CLR SCL
0126 00               51             NOP
0127 00               52             NOP
0128 22               53             RET
                      54     
                      55     ; 停止总线函数
0129                  56     STOP_IIC:
0129 C296             57             CLR SDA
012B 00               58             NOP
A51 MACRO ASSEMBLER  ICMAIN                                                               05/24/2006 09:52:10 PAGE     2

012C 00               59             NOP
012D D297             60             SETB SCL
012F 00               61             NOP
0130 00               62             NOP
0131 00               63             NOP
0132 00               64             NOP
0133 00               65             NOP
0134 00               66             NOP
0135 D296             67             SETB SDA
0137 00               68             NOP
0138 00               69             NOP
0139 00               70             NOP
013A 22               71             RET
                      72     
                      73     ; 初始化IIC总线
013B                  74     INIT_IIC:
013B C297             75             CLR SCL
013D 00               76             NOP
013E 120129           77             LCALL STOP_IIC
0141 22               78             RET
                      79     
                      80     ; 字节发送函数
                      81     ; 入口参数: R1
0142                  82     SENDBYTE:
0142 C0E0             83             PUSH ACC
0144 C002             84             PUSH 02H
0146 E9               85             MOV A, R1
0147 7A08             86             MOV R2, #8
0149 33               87     SBYTE1: RLC A
014A 4004             88             JC SBYTE2
014C C296             89             CLR SDA
014E 8002             90             SJMP SBYTE3
0150 D296             91     SBYTE2: SETB SDA
0152 00               92     SBYTE3: NOP
0153 D297             93             SETB SCL
0155 00               94             NOP
0156 00               95             NOP
0157 00               96             NOP
0158 00               97             NOP
0159 00               98             NOP
015A C297             99             CLR SCL
015C DAEB            100             DJNZ R2, SBYTE1
                     101     
015E 00              102             NOP
015F D296            103             SETB SDA
0161 00              104             NOP
0162 D297            105             SETB SCL
0164 00              106             NOP
0165 00              107             NOP
0166 00              108             NOP
0167 00              109             NOP
0168 00              110             NOP
0169 209604          111             JB SDA, SBYTE4
016C D200            112             SETB ACK
016E 8002            113             SJMP SBYTE5
0170 C200            114     SBYTE4: CLR ACK
0172 00              115     SBYTE5: NOP
0173 C297            116             CLR SCL
0175 00              117             NOP
0176 00              118             NOP
0177 D002            119             POP 02H
0179 D0E0            120             POP ACC
017B 22              121             RET
                     122     
                     123     ; 字节数据接收函数
                     124     ; 出口参数: R1
A51 MACRO ASSEMBLER  ICMAIN                                                               05/24/2006 09:52:10 PAGE     3

017C                 125     RCVBYTE:
017C C0E0            126             PUSH ACC
017E C002            127             PUSH 02H
0180 D296            128             SETB SDA
                     129             ;CLR SCL
0182 7400            130             MOV A, #00H
0184 C3              131             CLR C
0185 7A08            132             MOV R2, #8
0187                 133     RBYTE1: 
0187 00              134             NOP
0188 C297            135             CLR SCL
018A 00              136             NOP
018B 00              137             NOP
018C 00              138             NOP
018D 00              139             NOP
018E 00              140             NOP
018F D297            141             SETB SCL
0191 00              142             NOP
0192 00              143             NOP
0193 00              144             NOP
0194 209603          145             JB SDA, RBYTE2
0197 C3              146             CLR C
0198 8001            147             SJMP RBYTE3
019A D3              148     RBYTE2: SETB C
019B 33              149     RBYTE3: RLC A
019C 00              150             NOP
019D DAE8            151             DJNZ R2, RBYTE1
019F C297            152             CLR SCL
01A1 F9              153             MOV R1, A
01A2 D002            154             POP 02H
01A4 D0E0            155             POP ACC
01A6 22              156             RET
                     157     
                     158     ; 应答子函数
01A7                 159     ACK_IIC:
01A7 C296            160             CLR SDA
01A9 00              161             NOP
01AA 00              162             NOP
01AB 00              163             NOP
01AC D297            164             SETB SCL
01AE 00              165             NOP
01AF 00              166             NOP
01B0 00              167             NOP
01B1 00              168             NOP
01B2 00              169             NOP
01B3 C297            170             CLR SCL
01B5 00              171             NOP
01B6 00              172             NOP
01B7 00              173             NOP
01B8 22              174             RET
                     175     
                     176     ; 非应答子函数
01B9                 177     NACK_IIC:
01B9 D296            178             SETB SDA
01BB 00              179             NOP
01BC 00              180             NOP
01BD 00              181             NOP
01BE D297            182             SETB SCL
01C0 00              183             NOP
01C1 00              184             NOP
01C2 00              185             NOP
01C3 00              186             NOP
01C4 00              187             NOP
01C5 C297            188             CLR SCL
01C7 00              189             NOP
01C8 00              190             NOP
A51 MACRO ASSEMBLER  ICMAIN                                                               05/24/2006 09:52:10 PAGE     4

01C9 00              191             NOP
01CA 22              192             RET
                     193     
                     194     ; 向有子地址器件发送多字节数据函数
01CB                 195     SEND_STR:
01CB C0E0            196             PUSH ACC
01CD 120113          197             LCALL START_IIC
01D0 A930            198             MOV R1, SLA
01D2 120142          199             LCALL SENDBYTE
01D5 30001E          200             JNB ACK, SSTR2
01D8 A931            201             MOV R1, SUBA
01DA 120142          202             LCALL SENDBYTE
01DD 300016          203             JNB ACK, SSTR2
01E0 7E08            204             MOV R6, #8              ; 一次发送8个字节
01E2 7B00            205             MOV R3, #00H
01E4 900238          206             MOV DPTR, #DTAB
01E7 EB              207     SSTR1:  MOV A, R3
01E8 93              208             MOVC A, @A+DPTR
01E9 F9              209             MOV R1, A
01EA 120142          210             LCALL SENDBYTE
01ED 0B              211             INC R3
01EE 300005          212             JNB ACK, SSTR2
01F1 DEF4            213             DJNZ R6, SSTR1
01F3 120129          214             LCALL STOP_IIC
01F6 D0E0            215     SSTR2:  POP ACC
01F8 22              216             RET
                     217     
                     218     ; 从有子地址器件读取多字节数据函数
                     219     ; 读出数据保存到40H, 8个字节
01F9                 220     RCV_STR:
01F9 C0E0            221             PUSH ACC
01FB 120113          222             LCALL START_IIC
01FE A930            223             MOV R1, SLA
0200 120142          224             LCALL SENDBYTE
0203 30002F          225             JNB ACK, RSTR2
0206 A931            226             MOV R1, SUBA
0208 120142          227             LCALL SENDBYTE
020B 300027          228             JNB ACK, RSTR2
020E 120113          229             LCALL START_IIC
0211 0530            230             INC SLA
0213 A930            231             MOV R1, SLA
0215 120142          232             LCALL SENDBYTE
0218 30001A          233             JNB ACK, RSTR2
021B 7E08            234             MOV R6, #8
021D 7840            235             MOV R0, #40H
021F 12017C          236     RSTR1:  LCALL RCVBYTE
0222 E9              237             MOV A, R1
0223 F6              238             MOV @R0, A
0224 1201A7          239             LCALL ACK_IIC
0227 08              240             INC R0
0228 DEF5            241             DJNZ R6, RSTR1
022A 12017C          242             LCALL RCVBYTE
022D E9              243             MOV A, R1
022E F6              244             MOV @R0, A
022F 1201B9          245             LCALL NACK_IIC
0232 120129          246             LCALL STOP_IIC
0235 D0E0            247     RSTR2:  POP ACC
0237 22              248             RET
                     249     
0238 11223344        250     DTAB:   DB 11H,22H,33H,44H,55H,66H,77H,88H
023C 55667788                
                     251     
                     252     
                     253             END
A51 MACRO ASSEMBLER  ICMAIN                                                               05/24/2006 09:52:10 PAGE     5

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
ACK. . . . . . . .  B ADDR   0020H.0 A   
ACK_IIC. . . . . .  C ADDR   01A7H   A   
DTAB . . . . . . .  C ADDR   0238H   A   
INIT_IIC . . . . .  C ADDR   013BH   A   
NACK_IIC . . . . .  C ADDR   01B9H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
RBYTE1 . . . . . .  C ADDR   0187H   A   
RBYTE2 . . . . . .  C ADDR   019AH   A   
RBYTE3 . . . . . .  C ADDR   019BH   A   
RCVBYTE. . . . . .  C ADDR   017CH   A   
RCV_STR. . . . . .  C ADDR   01F9H   A   
RSTR1. . . . . . .  C ADDR   021FH   A   
RSTR2. . . . . . .  C ADDR   0235H   A   
SBYTE1 . . . . . .  C ADDR   0149H   A   
SBYTE2 . . . . . .  C ADDR   0150H   A   
SBYTE3 . . . . . .  C ADDR   0152H   A   
SBYTE4 . . . . . .  C ADDR   0170H   A   
SBYTE5 . . . . . .  C ADDR   0172H   A   
SCL. . . . . . . .  B ADDR   0090H.7 A   
SDA. . . . . . . .  B ADDR   0090H.6 A   
SENDBYTE . . . . .  C ADDR   0142H   A   
SEND_STR . . . . .  C ADDR   01CBH   A   
SLA. . . . . . . .  D ADDR   0030H   A   
SSTR1. . . . . . .  C ADDR   01E7H   A   
SSTR2. . . . . . .  C ADDR   01F6H   A   
START. . . . . . .  C ADDR   0100H   A   
START_IIC. . . . .  C ADDR   0113H   A   
STOP_IIC . . . . .  C ADDR   0129H   A   
SUBA . . . . . . .  D ADDR   0031H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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