📄 iic_asm.lst
字号:
A51 MACRO ASSEMBLER IIC_ASM 12/12/2005 16:58:38 PAGE 1
MACRO ASSEMBLER A51 V7.03
OBJECT MODULE PLACED IN IIC_ASM.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE IIC_ASM.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0091 1 SCL bit P1.1 ;24c512时钟口线 //这是我的片选信号P23()
0090 2 SDA bit P1.0 ;24c512数据口线 //这是我的片选信号P22()
00A3 3 WP bit P2.3 ;24c512数据口线 //这是我的片选信号P22()
4
0060 5 index equ 60h
0061 6 addrlo equ 61h
0062 7 addrhi equ 62h
0063 8 kount equ 63h ;24c512占用RAM 地址60---63h
0064 9 EnableWrite equ 64h ;如果写入的地址小于150h,这时该值为aa-->enable ,else 不能写!
10
11 DDDDDCODE SEGMENT CODE UNIT ;程序段
12
13 ;*********************************************************
14 ;H_ADDR IN R7;L_ADDR IN R5; BYTE NUMBER IN R3
15 ;*********************************************************
16 ;24C512写程序
17 ;要写的数据r3个防在RAM oxd0 开始;
18 ;写入24C512的r7_r5开始的地址
19 PUBLIC _IIC_WRITE_ONEBYTE
---- 20 RSEG DDDDDCODE
0000 78D0 21 _IIC_WRITE_ONEBYTE: mov r0,#0d0h
0002 7CA6 22 mov r4,#0a6h
0004 8B63 23 mov kount,r3
0006 8860 24 mov index,r0
0008 8D61 25 mov addrlo,r5
000A 8F62 26 mov addrhi,r7 ;0020,40,8
27 ;---------------------------------------------
000C BF0007 28 cjne r7,#000h,writeokA ;如果低位为0
29
000F 7864 30 mov r0,#064h
0011 B6AA1C 31 cjne @r0, #0aah ,endme
0014 8011 32 jmp writeok
33 ;---------------------------------------------
0016 34 writeokA:
0016 BF010E 35 cjne r7,#001h,writeok ;如果低位为1
0019 BD5002 36 cjne r5,#050h,writeokB ;如果高位为1
001C 8009 37 jmp writeok
38
001E 5007 39 writeokB: jnc writeok
0020 7864 40 mov r0,#064h
0022 B6AA0B 41 cjne @r0, #0aah ,endme
0025 8000 42 jmp writeok
43
44
45
0027 78D0 46 writeok: mov r0,#0d0h
0029 C2A3 47 CLR WP
002B 120000 F 48 call write_block
002E D2A3 49 SETB WP
0030 50 endme:
0030 7800 51 mov r0,#000h
0032 8864 52 mov EnableWrite,r0
0034 22 53 ret
54 ;24C512读程序
55 ;从24C512 的r7_r5地址读出r3个数据放在oxd0;
56 PUBLIC _IIC_READ_ONEBYTE ;入口地址
---- 57 RSEG DDDDDCODE
0035 78D0 58 _IIC_READ_ONEBYTE: mov r0,#0d0H
A51 MACRO ASSEMBLER IIC_ASM 12/12/2005 16:58:38 PAGE 2
0037 7CA6 59 mov r4,#0a6h
0039 8D61 60 mov addrlo,r5 ;0020 READ
003B 8F62 61 mov addrhi,r7
003D 8B63 62 mov kount,r3
003F 8860 63 mov index ,r0
0041 120000 F 64 call verify_block_fill
0044 22 65 ret
66 ;以下为读写模块;请不要改变
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -