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

📄 24c02-p0-p2-led.lst

📁 将演示数据先写入24C04芯片内
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  24C02_P0_P2_LED                                                      12/20/2006 21:20:46 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;*******************************************************************
                       2     ;*                                                                 *
                       3     ;* ME500单片机开发系统演示程序 - 多花样流水灯                      *
                       4     ;*                                                                 *
                       5     ;* LED显示                                                         *
                       6     ;*                                                                 *
                       7     ;* 将演示数据先写入24C02芯片内,再将其数据逐个读出送P0口LED显示。  *
                       8     ;*                                                                 *
                       9     ;* 版本: V1.0 (2006/11/20)                                        *
                      10     ;* 作者: gguoqing (Email: gguoqing@willar.com)                    *
                      11     ;* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) *
                      12     ;* 时间: 2006/11/20                                               *
                      13     ;*                                                                 *
                      14     ;*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved *
                      15     ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       *
                      16     ;*                                                                 *
                      17     ;*******************************************************************
                      18                
  00B5                19               SDA BIT P3.5      ;定义24C02数据线
  00B4                20               SCL BIT P3.4      ;定义24C02时钟线
                      21     
                      22     ;-----------------------------------------------------
0000                  23              ORG 0000H
0000 0130             24              AJMP MAIN
0030                  25              ORG 0030H
                      26     ;-----------------------------------------------------
0030                  27     MAIN:
0030 758160           28              MOV  SP,#60H
0033 7580FF           29              MOV  P0,#0FFH
0036 113C             30              ACALL  WRITE_DATA
0038                  31     M_LOOP:
0038 114F             32              ACALL  READ_DATA
003A 80FC             33              JMP  M_LOOP
                      34     ;-----------------------------------------------------
                      35     ;写N字节数据子程序
                      36     ;查表写数据入24C02
                      37     ;-----------------------------------------------------
003C                  38     WRITE_DATA:
003C 7800             39              MOV R0,#00H         ;数据写入首地址
003E 7948             40              MOV R1,#72          ;共写入72个字节的数据
0040 9000FF           41              MOV DPTR,#TAB       ;查表
0043                  42     WR_LOOP:
0043 E4               43              CLR A
0044 93               44              MOVC A,@A+DPTR
0045 F5F0             45              MOV B,A
0047 120065           46              LCALL WRITE_BYTE    ;将查表结果写入24C02
004A 08               47              INC R0              ;地址+1
004B A3               48              INC DPTR            ;数据指针+1
004C D9F5             49              DJNZ R1,WR_LOOP     ;72个数写入完毕?
004E 22               50              RET
                      51     
                      52     ;-----------------------------------------------------
                      53     ;读N字节数据子程序
                      54     ;从24C02读出数据,送P0口显示
                      55     ;-----------------------------------------------------
                      56     
004F                  57     READ_DATA:
004F 7800             58              MOV R0,#00H         ;设定读取的初始地址
A51 MACRO ASSEMBLER  24C02_P0_P2_LED                                                      12/20/2006 21:20:46 PAGE     2

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

009E 00              125            NOP
009F 00              126            NOP
00A0 00              127            NOP
00A1 00              128            NOP
00A2 D2B4            129            SETB SCL          ;启动一个时钟周期,读总线
00A4 00              130            NOP
00A5 00              131            NOP
00A6 00              132            NOP
00A7 00              133            NOP
00A8 A2B5            134            MOV C,SDA         ;将SDA状态读入C
00AA 33              135            RLC A             ;结果移入A

⌨️ 快捷键说明

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