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

📄 24xx.lst

📁 基于51单片机的交通灯控制系统 IDE:Keil uVision2
💻 LST
字号:
A51 MACRO ASSEMBLER  24XX                                                                 04/27/2006 17:23:15 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN 24XX.OBJ
ASSEMBLER INVOKED BY: D:\Program Files\Keil\C51\BIN\A51.EXE 24XX.asm SET(SMALL) EP

LOC  OBJ            LINE     SOURCE

                       1     ;这是将0600H地址中以下的8个数据写到24C02的01H为首址单元中去的汇编程序
  00B4                 2     SCL BIT P3.4;定义24C02的串行时钟线 
  00B5                 3     SDA BIT P3.5;定义24C02的串行数据线
                       4     
                       5     
0000                   6          ORG 0000H
0000 020030            7          LJMP START
                       8     
                       9     
0030                  10            ORG 0030H          
0030 120049           11      START:LCALL STAR;调用
0033 7A08             12            MOV R2,#08H;一个数据有8位
0035 900600           13            MOV DPTR,#0600H;定义源数据的位置
0038 7400             14       LOOP:MOV A,#00H
003A 93               15            MOVC A,@A+DPTR
003B 12005A           16            LCALL SDATA
003E 12006C           17            LCALL ACK
0041 40F5             18            JC LOOP
0043 A3               19            INC DPTR
0044 DAF2             20            DJNZ R2,LOOP
                      21     
0046 12007B           22            LCALL STOP;调用停止子程序
                      23     
0049 D2B5             24       STAR:SETB SDA
004B D2B4             25            SETB SCL
004D 00               26     NOP
004E 00               27     NOP
004F 00               28     NOP
0050 00               29     NOP
0051 C2B5             30     CLR SDA
0053 00               31     NOP
0054 00               32     NOP
0055 00               33     NOP
0056 00               34     NOP
0057 C2B4             35     CLR SCL
0059 22               36     RET
005A 7808             37     SDATA:MOV R0,#08H
005C 33               38     LOOP0:RLC A
005D 92B5             39     MOV SDA,C
005F 00               40     NOP
0060 00               41     NOP
0061 D2B4             42     SETB SCL
0063 00               43     NOP
0064 00               44     NOP
0065 00               45     NOP
0066 00               46     NOP
0067 C2B4             47     CLR SCL
0069 D8F1             48     DJNZ R0,LOOP0
006B 22               49     RET
006C D2B5             50     ACK:SETB SDA
006E 00               51     NOP
006F 00               52     NOP
0070 D2B4             53     SETB SCL
0072 00               54     NOP
0073 00               55     NOP
0074 00               56     NOP
0075 00               57     NOP
0076 A2B5             58     MOV C,SDA
A51 MACRO ASSEMBLER  24XX                                                                 04/27/2006 17:23:15 PAGE     2

0078 C2B4             59     CLR SCL
007A 22               60     RET
007B C2B5             61     STOP:CLR SDA
007D 00               62     NOP
007E 00               63     NOP
007F 00               64     NOP
0080 00               65     NOP
0081 D2B4             66     SETB SCL
0083 00               67     NOP
0084 00               68     NOP
0085 00               69     NOP
0086 00               70     NOP
0087 D2B5             71     SETB SDA
0089 00               72     NOP
008A 00               73     NOP
008B 00               74     NOP
008C 00               75     NOP
008D 22               76     RET
0600                  77     ORG 0600H
0600 A0100102         78     DB 0A0H,10H,01H,02H,03H,04H,05H,06H
0604 03040506                
                      79     END
                             
                             
                             
                             ;读写E2PROM子程序如下:
                             
                             ;写串行E2PROM子程序EEPW
                             ; R3=10100000(命令1010+器件3位地址+读/写。 器件地址一个芯片,是000)
                             ; (R4)=片内字节地址
                             ; (R1)=欲写数据存放地址指针
                             ; (R7)=连续写字节数n
                             
                                 ORG 0000H
*** WARNING #A73 IN 91 (24XX.asm, LINE 91): TEXT FOUND BEYOND END STATEMENT - IGNORED
                                 LJMP EEPW
                             
                                 ORG 0030H
                             EEPW:MOV P1,#0FFH
                                 CLR    P1.0    ;发开始信号
                                 MOV    A,R3    ;送器件地址
                                 ACALL  SUBS
                                 MOV    A,R4    ;送片内字节地址
                                 ACALL  SUBS
                             AGAIN:MOV  A,@R1
                                 ACALL SUBS     ;调发送单字节子程序INC   R1
                                 DJNZ   R7,AGAIN;连续写n个字节
                                 CLR    P1.0    ;SDA置0, 准备送停止信号
                                 ACALL DELAY ;延时以满足传输速率要求
                               SETB   P1.1  ;发停止信号
                               ACALL DELAY
                               SETB   P1.0
                               RET
                             
                             SUBS: MOV R0,#08H ;发送单字节子程序
                             LOOP: CLR P1.1
                               RLC  A
                               MOV  P1.0,C
                               NOP
                               SETB P1.1
                               ACALL DELAY
                               DJNZ R0,LOOP ;循环8次送8个bit
                               CLR  P1.1
                               ACALL DELAY
                               SETB P1.1
                             REP: MOV C,P1.0
A51 MACRO ASSEMBLER  24XX                                                                 04/27/2006 17:23:15 PAGE     3

                               JC  REP  ;判应答到否,未到则等待
                               CLR  P1.1
                               RET
                             
                             DELAY: NOP
                               NOP
                               RET
                             
                             ;读串行E2PROM子程序EEPR
                             ;(R1)=欲读数据存放地址指针
                             ;; R3=10100001(命令1010+器件3位地址+读/写。 器件地址一个芯片,是000)
                             ;(R4)=片内字节地址
                             ;(R7)=连续读字节数
                             
                             EEPR: MOV P1,#0FFH
                               CLR  P1.0  ;发开始信号
                               MOV  A,R3  ;送器件地址
                               ACALL SUBS   ;调发送单字节子程序
                               MOV A,R4   ;送片内字节地址
                               ACALL SUBS
                               MOV P1,#0FFH
                               CLR P1.0   ;再发开始信号
                               MOV A,R3
                               SETB ACC.0  ;发读命令
                               ACALL SUBS
                             MORE: ACALL SUBR
                               MOV @R1,A
                               INC R1
                               DJNZ R7,MORE
                               CLR P1.0
                               ACALL DELAY
                               SETB P1.1
                               ACALL DELAY
                               SETB P1.0 ;送停止信号
                               RET
                             
                             SUBR: MOV  R0,#08H ;接受单字节子程序
                             LOOP2: SETB  P1.1
                               ACALL DELAY
                               MOV C,P1.0
                               RLC A
                               CLR P1.1
                               ACALL DELAY
                               DJNZ R0,LOOP2
                               CJNE R7,#01H,LOW
                               SETB P1.0  ;若是最后一个字节置A=1
                               AJMP SETOK
                             LOW: CLR P1.0  ;否则置A=0
                             SETOK: ACALL DELAY
                               SETB  P1.1
                               ACALL DELAY
                               CLR  P1.1
                               ACALL DELAY
                               SETB P1.0  ;应答毕,SDA置1
                               RET
                             
                             end
                             
                             
A51 MACRO ASSEMBLER  24XX                                                                 04/27/2006 17:23:15 PAGE     4

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


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

ACK. . . . . . . .  C ADDR   006CH   A   
LOOP . . . . . . .  C ADDR   0038H   A   
LOOP0. . . . . . .  C ADDR   005CH   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
SCL. . . . . . . .  B ADDR   00B0H.4 A   
SDA. . . . . . . .  B ADDR   00B0H.5 A   
SDATA. . . . . . .  C ADDR   005AH   A   
STAR . . . . . . .  C ADDR   0049H   A   
START. . . . . . .  C ADDR   0030H   A   
STOP . . . . . . .  C ADDR   007BH   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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