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

📄 2402den.lst

📁 51单片机驱动24C02存储器 可以学习IIC总线
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  2402DEN                                                              02/12/2008 18:15:52 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;* 24C02读写 8路花样跑马灯                                                      *
                       3     ;* 将演示数据先写入24C02芯片内,再将其数据逐个读出送P0口LED显示。               *
                       4     ;硬件连接:8路指示灯接P0,24C02控制SDAP3.7 SCLP3.6                               *          
                                    
                       5     ;开机, 跑马灯 为证明2402的作用, 去掉2402连线,则无显示                        *
                       6     ;********************************************************************************
                       7     ;*  日期:  2008-2-25                                                            *
                       8     ;*  版本:  3.0                                                                  *
                       9     ;*  作者:  深圳志博电子有限公司     专业8051单片机教学站                        *
                      10     ;*  邮箱: zty0012001@163.com                                                       *
                      11     ;*  网站: http://www.elecmcu.com     http://www.elecmcu.com    更多例程请登陆网站   *
                      12     ;********************************************************************************
                      13     ;*  硬件:此程序在本公司志博电子实验仪运行通过                           *
                      14     ;********************************************************************************
                      15     ;* 【版权】 Copyright(C)深圳志博电子有限公司 www.elecmcu.com  All Rights Reserved *
                      16     ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
                      17     ;********************************************************************************
  0097                18              SDA  BIT  P1.7        ;定义24C02数据线
  0096                19              SCL  BIT  P1.6       ;定义24C02时钟线
                      20     ;-----------------------------------------------------
0000                  21              ORG 0000H
0000 0130             22              AJMP MAIN
0030                  23              ORG 0030H
                      24     ;-----------------------------------------------------
0030                  25     MAIN:
0030 758160           26              MOV  SP,#60H
0033 7580FF           27              MOV  P0,#0FFH
0036 113C             28              ACALL  WRITE_DATA
0038                  29     M_LOOP:
0038 114F             30              ACALL  READ_DATA
003A 80FC             31              JMP  M_LOOP
                      32     ;-----------------------------------------------------
                      33     ;写N字节数据子程序
                      34     ;查表写数据入24C02
                      35     ;-----------------------------------------------------
003C                  36     WRITE_DATA:
003C 7800             37              MOV R0,#00H         ;数据写入首地址
003E 7948             38              MOV R1,#72          ;共写入72个字节的数据
0040 9000FF           39              MOV DPTR,#TAB       ;查表
0043                  40     WR_LOOP:
0043 E4               41              CLR A
0044 93               42              MOVC A,@A+DPTR
0045 F5F0             43              MOV B,A
0047 120065           44              LCALL WRITE_BYTE    ;将查表结果写入24C02
004A 08               45              INC R0              ;地址+1
004B A3               46              INC DPTR            ;数据指针+1
004C D9F5             47              DJNZ R1,WR_LOOP     ;72个数写入完毕?
004E 22               48              RET
                      49     ;-----------------------------------------------------
                      50     ;读N字节数据子程序
                      51     ;从24C02读出数据,送P0口显示
                      52     ;-----------------------------------------------------
004F                  53     READ_DATA:
004F 7800             54              MOV R0,#00H         ;设定读取的初始地址
0051 7948             55              MOV R1,#72          ;设定读取个数
0053                  56     RE_LOOP:
0053 12007F           57              LCALL READ_BYTE     ;读EEPROM
A51 MACRO ASSEMBLER  2402DEN                                                              02/12/2008 18:15:52 PAGE     2

0056 11E2             58              CALL STOP
0058 08               59              INC R0              ;地址+1
0059 F580             60              MOV P0,A            ;将结果输出到P0显示
005B F5A0             61              MOV P2,A
005D 7C3C             62              MOV R4,#60          ;延时约300ms
005F 1200F4           63              LCALL DELAY_5MS
0062 D9EF             64              DJNZ R1,RE_LOOP
0064 22               65              RET
                      66      ;----------------------------------------------------
                      67      ;写操作子程序
                      68      ;输入参数: R0---要写入的地址,B---要写入的数据
                      69      ;----------------------------------------------------
0065                  70     WRITE_BYTE:
0065 11D4             71            CALL START
0067 74A0             72            MOV A,#0A0H
0069 11B0             73            CALL  SENDBYTE
006B 11C0             74            CALL  WAITACK
006D E8               75            MOV A,R0
006E 11B0             76            CALL SENDBYTE
0070 11C0             77            CALL  WAITACK
0072 E5F0             78            MOV A,B
0074 11B0             79            CALL SENDBYTE
0076 11C0             80            CALL  WAITACK
0078 11E2             81            CALL STOP
007A 7C01             82            MOV R4,#1          ;每写入1个字节,延时若干MS
007C 11F4             83            CALL DELAY_5MS
007E 22               84            RET
                      85      ;----------------------------------------------------
                      86      ;读操作子程序
                      87      ;输入参数:R0---要读的字节地址,
                      88      ;输出参数: A---结果
                      89      ;----------------------------------------------------
007F                  90     READ_BYTE:
007F 11D4             91            CALL START
0081 74A0             92            MOV A,#0A0H
0083 11B0             93            CALL SENDBYTE
0085 11C0             94            CALL  WAITACK
0087 E8               95            MOV A,R0
0088 11B0             96            CALL SENDBYTE
008A 11C0             97            CALL  WAITACK
008C 11D4             98            CALL START
008E 74A1             99            MOV A,#0A1H
0090 11B0            100            CALL SENDBYTE
0092 11C0            101            CALL  WAITACK
0094 1197            102            CALL  RCVBYTE
0096 22              103            RET
                     104     ;-----------------------------------------------------
                     105     ;从IIC总线上接收一个字节数据
                     106     ;出口参数:A---接收数据存放在A中
                     107     ;-----------------------------------------------------
0097                 108     RCVBYTE:
0097 7F08            109            MOV R7,#08        ;一个字节共接收8位数据
0099 E4              110            CLR  A
009A D297            111            SETB  SDA         ;释放SDA数据线
009C                 112     R_BYTE:
009C C296            113            CLR  SCL
009E 00              114            NOP
009F 00              115            NOP
00A0 00              116            NOP
00A1 00              117            NOP
00A2 D296            118            SETB SCL          ;启动一个时钟周期,读总线
00A4 00              119            NOP
00A5 00              120            NOP
00A6 00              121            NOP
00A7 00              122            NOP
00A8 A297            123            MOV C,SDA         ;将SDA状态读入C
A51 MACRO ASSEMBLER  2402DEN                                                              02/12/2008 18:15:52 PAGE     3

00AA 33              124            RLC A             ;结果移入A
00AB D297            125            SETB  SDA         ;释放SDA数据线
00AD DFED            126            DJNZ R7,R_BYTE    ;判断8位数据是否接收完全?
00AF 22              127            RET
                     128     ;----------------------------------------------------
                     129     ;向IIC总线发送一个字节数据
                     130     ;入口参数:A---待发送数据存放在A中

⌨️ 快捷键说明

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