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

📄 24c02-asm.lst

📁 基于51单片机的LED/24C02程序
💻 LST
字号:
A51 MACRO ASSEMBLER  24C02_ASM                                                            03/03/2008 13:35:36 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN 24C02-ASM.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 24C02-ASM.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1      
                       2     
  00B5                 3              SDA BIT P3.5      ;定义24C02数据线
  00B4                 4              SCL BIT P3.4      ;定义24C02时钟线
                       5     ;-----------------------------------------------------
0000                   6              ORG 0000H
0000 0130              7              AJMP MAIN
0030                   8              ORG 0030H
                       9     ;-----------------------------------------------------
0030                  10     MAIN:
0030 758160           11              MOV  SP,#60H
0033 7580FF           12              MOV  P0,#0FFH
0036 113C             13              ACALL  WRITE_DATA
0038                  14     M_LOOP:
0038 114F             15              ACALL  READ_DATA
003A 80FC             16              JMP  M_LOOP
                      17     ;-----------------------------------------------------
                      18     ;写N字节数据子程序
                      19     ;查表写数据入24C02
                      20     ;-----------------------------------------------------
003C                  21     WRITE_DATA:
003C 7800             22              MOV R0,#00H            ;数据写入首地址
003E 7948             23              MOV R1,#72               ;共写入72个字节的数据
0040 9000FD           24              MOV DPTR,#TAB         ;查表
0043                  25     WR_LOOP:
0043 E4               26              CLR A
0044 93               27              MOVC A,@A+DPTR
0045 F5F0             28              MOV B,A
0047 120063           29              LCALL WRITE_BYTE    ;将查表结果写入24C02
004A 08               30              INC R0                        ;地址+1
004B A3               31              INC DPTR                    ;数据指针+1
004C D9F5             32              DJNZ R1,WR_LOOP     ;72个数写入完毕?
004E 22               33              RET
                      34     
                      35     ;-----------------------------------------------------
                      36     ;读N字节数据子程序
                      37     ;从24C02读出数据,送P0口显示
                      38     ;-----------------------------------------------------
                      39     
004F                  40     READ_DATA:
004F 7800             41              MOV R0,#00H            ;设定读取的初始地址
0051 7948             42              MOV R1,#72              ;设定读取个数
0053                  43     RE_LOOP:
0053 12007D           44              LCALL READ_BYTE     ;读EEPROM
0056 11E0             45              CALL STOP
0058 08               46              INC R0                      ;地址+1
0059 F580             47              MOV P0,A                  ;将结果输出到P0显示
005B 7C3C             48              MOV R4,#60             ;延时约300ms
005D 1200F2           49              LCALL DELAY_5MS
0060 D9F1             50              DJNZ R1,RE_LOOP
0062 22               51              RET
                      52     
                      53      ;----------------------------------------------------
                      54      ;写操作子程序
                      55      ;输入参数: R0---要写入的地址,B---要写入的数据
                      56      ;----------------------------------------------------
0063                  57     WRITE_BYTE:
0063 11D2             58            CALL START
A51 MACRO ASSEMBLER  24C02_ASM                                                            03/03/2008 13:35:36 PAGE     2

                      59     
0065 74A0             60            MOV A,#0A0H
0067 11AE             61            CALL  SENDBYTE
0069 11BE             62            CALL  WAITACK
                      63     
006B E8               64            MOV A,R0
006C 11AE             65            CALL SENDBYTE
006E 11BE             66            CALL  WAITACK
                      67            
0070 E5F0             68            MOV A,B
0072 11AE             69            CALL SENDBYTE
0074 11BE             70            CALL  WAITACK
0076 11E0             71            CALL STOP
                      72     
0078 7C01             73            MOV R4,#1               ;每写入1个字节,延时若干MS
007A 11F2             74            CALL DELAY_5MS
007C 22               75            RET
                      76      ;----------------------------------------------------
                      77      ;读操作子程序
                      78      ;输入参数:R0---要读的字节地址,
                      79      ;输出参数: A---结果
                      80      ;----------------------------------------------------
007D                  81     READ_BYTE:
007D 11D2             82            CALL START      
007F 74A0             83            MOV A,#0A0H
0081 11AE             84            CALL SENDBYTE
0083 11BE             85            CALL  WAITACK
                      86     
0085 E8               87            MOV A,R0
0086 11AE             88            CALL SENDBYTE
0088 11BE             89            CALL  WAITACK
                      90     
008A 11D2             91            CALL START      
008C 74A1             92            MOV A,#0A1H
008E 11AE             93            CALL SENDBYTE
0090 11BE             94            CALL  WAITACK
0092 1195             95            CALL  RCVBYTE
0094 22               96            RET
                      97     ;-----------------------------------------------------
                      98     ;从IIC总线上接收一个字节数据
                      99     ;出口参数:A---接收数据存放在A中
                     100     ;-----------------------------------------------------
0095                 101     RCVBYTE:       
0095 7F08            102            MOV R7,#08           ;一个字节共接收8位数据
0097 E4              103            CLR  A
0098 D2B5            104            SETB  SDA               ;释放SDA数据线
009A                 105     R_BYTE:
009A C2B4            106            CLR  SCL
009C 00              107            NOP
009D 00              108            NOP
009E 00              109            NOP
009F 00              110            NOP
00A0 D2B4            111            SETB SCL                ;启动一个时钟周期,读总线
00A2 00              112            NOP
00A3 00              113            NOP
00A4 00              114            NOP
00A5 00              115            NOP
00A6 A2B5            116            MOV C,SDA             ;将SDA状态读入C
00A8 33              117            RLC A                     ;结果移入A
00A9 D2B5            118            SETB  SDA              ;释放SDA数据线
00AB DFED            119            DJNZ R7,R_BYTE    ;判断8位数据是否接收完全?
00AD 22              120            RET
                     121     ;----------------------------------------------------
                     122     ;向IIC总线发送一个字节数据
                     123     ;入口参数:A---待发送数据存放在A中 
                     124     ;----------------------------------------------------
A51 MACRO ASSEMBLER  24C02_ASM                                                            03/03/2008 13:35:36 PAGE     3

00AE                 125     SENDBYTE:
00AE 7F08            126            MOV R7,#08
00B0                 127     S_BYTE:
00B0 33              128            RLC A
00B1 92B5            129            MOV SDA,C
00B3 D2B4            130            SETB SCL
00B5 00              131            NOP
00B6 00              132            NOP
00B7 00              133            NOP
00B8 00              134            NOP
00B9 C2B4            135            CLR SCL
00BB DFF3            136            DJNZ R7,S_BYTE   ;8位发送完毕?
00BD 22              137            RET
                     138     ;-----------------------------------------------------
                     139     ;等待应答信号
                     140     ;等待从机返回一个响应信号
                     141     ;-----------------------------------------------------
00BE                 142     WAITACK:
00BE C2B4            143            CLR  SCL
00C0 D2B5            144            SETB SDA             ;释放SDA信号线
00C2 00              145            NOP
00C3 00              146            NOP
00C4 D2B4            147            SETB SCL
00C6 00              148            NOP
00C7 00              149            NOP
00C8 00              150            NOP
00C9 A2B5            151            MOV C,SDA
00CB 40F1            152            JC  WAITACK        ;SDA为低电平,返回了响应信号
00CD C2B5            153            CLR  SDA
00CF C2B4            154            CLR  SCL
00D1 22              155            RET
                     156      ;----------------------------------------------------
                     157      ;启动信号子程序
                     158      ;----------------------------------------------------
00D2                 159     START:
00D2 D2B5            160            SETB SDA
00D4 D2B4            161            SETB SCL
00D6 00              162            NOP
00D7 C2B5            163            CLR SDA
00D9 00              164            NOP
00DA 00              165            NOP
00DB 00              166            NOP
00DC 00              167            NOP
00DD C2B4            168            CLR SCL
00DF 22              169            RET
                     170      ;----------------------------------------------------
                     171      ;停止信号子程序
                     172      ;----------------------------------------------------
00E0                 173     STOP:
00E0 C2B5            174            CLR SDA
00E2 00              175            NOP
00E3 D2B4            176            SETB SCL
00E5 00              177            NOP
00E6 00              178            NOP
00E7 00              179            NOP
00E8 00              180            NOP
00E9 D2B5            181            SETB SDA
00EB 00              182            NOP
00EC 00              183            NOP
00ED C2B4            184            CLR  SCL
00EF C2B5            185            CLR  SDA
00F1 22              186            RET
                     187      ;----------------------------------------------------
                     188      ;延时5MS子程序
                     189      ;输入参数:R4---R4*5MS
                     190      ;输出参数: 无
A51 MACRO ASSEMBLER  24C02_ASM                                                            03/03/2008 13:35:36 PAGE     4

                     191      ;影响资源: R4,R5,R6等
                     192      ;----------------------------------------------------
00F2                 193     DELAY_5MS:
00F2 7E0A            194           MOV R6,#10
00F4                 195     DE_LP:
00F4 7DFA            196           MOV R5,#250
00F6 DDFE            197           DJNZ R5,$
00F8 DEFA            198           DJNZ R6,DE_LP
00FA DCF6            199           DJNZ R4,DELAY_5MS
00FC 22              200           RET
                     201      ;----------------------------------------------------
00FD                 202     TAB: 
00FD FEFDFBF7        203          DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
0101 EFDFBF7F                
0105 BFDFEFF7        204          DB 0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH,0FFH
0109 FBFDFEFF                
010D FEFCF8F0        205          DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,080H,000H
0111 E0C08000                
0115 80C0E0F0        206          DB 080H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH
0119 F8FCFEFF                
011D FCF9F3E7        207          DB 0FCH,0F9H,0F3H,0E7H,0CFH,09FH,03FH
0121 CF9F3F                  
0124 9FCFE7F3        208          DB 09FH,0CFH,0E7H,0F3H,0F9H,0FCH,0FFH
0128 F9FCFF                  
012B E7DBBD7E        209          DB 0E7H,0DBH,0BDH,07EH,0BDH,0DBH,0E7H,0FFH
012F BDDBE7FF                
0133 E7C38100        210          DB 0E7H,0C3H,081H,000H,081H,0C3H,0E7H,0FFH
0137 81C3E7FF                
013B AA5518FF        211          DB 0AAH,055H,018H,0FFH,0F0H,00FH
013F F00F                    
0141 00FF00FF        212          DB 000H,0FFH,000H,0FFH
                     213     ;-----------------------------------------------------
                     214           END
A51 MACRO ASSEMBLER  24C02_ASM                                                            03/03/2008 13:35:36 PAGE     5

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


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

B. . . . . . . . .  D ADDR   00F0H   A   
DELAY_5MS. . . . .  C ADDR   00F2H   A   
DE_LP. . . . . . .  C ADDR   00F4H   A   
MAIN . . . . . . .  C ADDR   0030H   A   
M_LOOP . . . . . .  C ADDR   0038H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
RCVBYTE. . . . . .  C ADDR   0095H   A   
READ_BYTE. . . . .  C ADDR   007DH   A   
READ_DATA. . . . .  C ADDR   004FH   A   
RE_LOOP. . . . . .  C ADDR   0053H   A   
R_BYTE . . . . . .  C ADDR   009AH   A   
SCL. . . . . . . .  B ADDR   00B0H.4 A   
SDA. . . . . . . .  B ADDR   00B0H.5 A   
SENDBYTE . . . . .  C ADDR   00AEH   A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   00D2H   A   
STOP . . . . . . .  C ADDR   00E0H   A   
S_BYTE . . . . . .  C ADDR   00B0H   A   
TAB. . . . . . . .  C ADDR   00FDH   A   
WAITACK. . . . . .  C ADDR   00BEH   A   
WRITE_BYTE . . . .  C ADDR   0063H   A   
WRITE_DATA . . . .  C ADDR   003CH   A   
WR_LOOP. . . . . .  C ADDR   0043H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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