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

📄 write-byte.lis

📁 16个单片机c语言实验程序
💻 LIS
字号:
                        .module write-byte.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\16实验程序\I2C读写24C04\写一个字节\write-byte.c
 0000                   .dbfile D:\16实验程序\I2C读写24C04\写一个字节\i2c.h
 0000                   .dbfunc e i2c_init _i2c_init fV
                        .even
 0000           _i2c_init::
 0000                   .dbline -1
 0000                   .dbline 5
 0000           ; //向24c04写一个字节数据程序
 0000           ; #include<iom16v.h>
 0000           ; #define uchar unsigned char 
 0000           ; #define uint unsigned int 
 0000           ; #include"i2c.h"
 0000                   .dbline 6
 0000           ; 
 0000 A69A              sbi 0x14,6
 0002                   .dbline 7
 0002           ; 
 0002 AE98              cbi 0x15,6
 0004                   .dbline 8
 0004           ; //写一个字节
 0004 81E0              ldi R24,1
 0006 80B9              out 0x0,R24
 0008                   .dbline 9
 0008           ; void main()
 0008 81B9              out 0x1,R24
 000A                   .dbline -2
 000A           L1:
 000A                   .dbline 0 ; func end
 000A 0895              ret
 000C                   .dbend
 000C                   .dbfunc e i2c_start _i2c_start fV
                        .even
 000C           _i2c_start::
 000C                   .dbline -1
 000C                   .dbline 14
 000C           ; {
 000C           ; i2c_init();  //初始化
 000C           ; i2c_wrbyte(0x07,0x12);  //字节写进地址0x12
 000C           ; }
 000C                   .dbline 15
 000C 84EA              ldi R24,164
 000E 86BF              out 0x36,R24
 0010           L3:
 0010                   .dbline 16
 0010           L4:
 0010                   .dbline 16
 0010 26B6              in R2,0x36
 0012 27FE              sbrs R2,7
 0014 FDCF              rjmp L3
 0016           X0:
 0016                   .dbline -2
 0016           L2:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e i2c_wrdata _i2c_wrdata fV
 0018           ;       i2c_data -> R16
                        .even
 0018           _i2c_wrdata::
 0018                   .dbline -1
 0018                   .dbline 21
 0018                   .dbline 22
 0018 03B9              out 0x3,R16
 001A                   .dbline 23
 001A 84E8              ldi R24,132
 001C 86BF              out 0x36,R24
 001E           L7:
 001E                   .dbline 24
 001E           L8:
 001E                   .dbline 24
 001E 26B6              in R2,0x36
 0020 27FE              sbrs R2,7
 0022 FDCF              rjmp L7
 0024           X1:
 0024                   .dbline -2
 0024           L6:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbsym r i2c_data 16 c
 0026                   .dbend
 0026                   .dbfunc e i2c_redata _i2c_redata fc
 0026           ;       i2c_data -> R16
                        .even
 0026           _i2c_redata::
 0026                   .dbline -1
 0026                   .dbline 29
 0026                   .dbline 31
 0026 84E8              ldi R24,132
 0028 86BF              out 0x36,R24
 002A           L11:
 002A                   .dbline 32
 002A           L12:
 002A                   .dbline 32
 002A 26B6              in R2,0x36
 002C 27FE              sbrs R2,7
 002E FDCF              rjmp L11
 0030           X2:
 0030                   .dbline 33
 0030 03B1              in R16,0x3
 0032                   .dbline 34
 0032                   .dbline -2
 0032           L10:
 0032                   .dbline 0 ; func end
 0032 0895              ret
 0034                   .dbsym r i2c_data 16 c
 0034                   .dbend
 0034                   .dbfunc e i2c_redataack _i2c_redataack fc
 0034           ;       i2c_data -> R16
                        .even
 0034           _i2c_redataack::
 0034                   .dbline -1
 0034                   .dbline 39
 0034                   .dbline 41
 0034 84EC              ldi R24,196
 0036 86BF              out 0x36,R24
 0038           L15:
 0038                   .dbline 42
 0038           L16:
 0038                   .dbline 42
 0038 26B6              in R2,0x36
 003A 27FE              sbrs R2,7
 003C FDCF              rjmp L15
 003E           X3:
 003E                   .dbline 43
 003E 03B1              in R16,0x3
 0040                   .dbline 44
 0040                   .dbline -2
 0040           L14:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r i2c_data 16 c
 0042                   .dbend
 0042                   .dbfunc e i2c_stop _i2c_stop fV
                        .even
 0042           _i2c_stop::
 0042                   .dbline -1
 0042                   .dbline 49
 0042                   .dbline 50
 0042 84E9              ldi R24,148
 0044 86BF              out 0x36,R24
 0046                   .dbline -2
 0046           L18:
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbend
 0048                   .dbfunc e i2c_wrbyte _i2c_wrbyte fV
 0048           ;        i2c_add -> R12
 0048           ;       i2c_data -> R10
                        .even
 0048           _i2c_wrbyte::
 0048 AA92              st -y,R10
 004A CA92              st -y,R12
 004C C22E              mov R12,R18
 004E A02E              mov R10,R16
 0050                   .dbline -1
 0050                   .dbline 55
 0050           L20:
 0050                   .dbline 57
 0050                   .dbline 58
 0050 DDDF              xcall _i2c_start
 0052                   .dbline 59
 0052 00EA              ldi R16,160
 0054 E1DF              xcall _i2c_wrdata
 0056                   .dbline 60
 0056           L21:
 0056                   .dbline 61
 0056 81B1              in R24,0x1
 0058 887F              andi R24,248
 005A 8831              cpi R24,24
 005C C9F7              brne L20
 005E           X4:
 005E                   .dbline 62
 005E 0C2D              mov R16,R12
 0060 DBDF              xcall _i2c_wrdata
 0062                   .dbline 63
 0062 0A2D              mov R16,R10
 0064 D9DF              xcall _i2c_wrdata
 0066                   .dbline 64
 0066 EDDF              xcall _i2c_stop
 0068                   .dbline -2
 0068           L19:
 0068                   .dbline 0 ; func end
 0068 C990              ld R12,y+
 006A A990              ld R10,y+
 006C 0895              ret
 006E                   .dbsym r i2c_add 12 c
 006E                   .dbsym r i2c_data 10 c
 006E                   .dbend
 006E                   .dbfunc e i2c_wrpage _i2c_wrpage fV
 006E           ;              i -> R10
 006E           ;        i2c_nub -> y+4
 006E           ;        i2c_add -> R10
 006E           ;       i2c_data -> R12,R13
                        .even
 006E           _i2c_wrpage::
 006E 0E940000          xcall push_xgset003C
 0072 A22E              mov R10,R18
 0074 6801              movw R12,R16
 0076                   .dbline -1
 0076                   .dbline 72
 0076           L24:
 0076                   .dbline 75
 0076                   .dbline 76
 0076 CADF              xcall _i2c_start
 0078                   .dbline 77
 0078 00EA              ldi R16,160
 007A CEDF              xcall _i2c_wrdata
 007C                   .dbline 78
 007C           L25:
 007C                   .dbline 79
 007C 81B1              in R24,0x1
 007E 887F              andi R24,248
 0080 8831              cpi R24,24
 0082 C9F7              brne L24
 0084           X5:
 0084                   .dbline 81
 0084 0A2D              mov R16,R10
 0086 C8DF              xcall _i2c_wrdata
 0088                   .dbline 82
 0088 AA24              clr R10
 008A 05C0              xjmp L30
 008C           L27:
 008C                   .dbline 83
 008C                   .dbline 84
 008C F601              movw R30,R12
 008E 0191              ld R16,Z+
 0090 6F01              movw R12,R30
 0092 C2DF              xcall _i2c_wrdata
 0094                   .dbline 85
 0094           L28:
 0094                   .dbline 82
 0094 A394              inc R10
 0096           L30:
 0096                   .dbline 82
 0096 0C80              ldd R0,y+4
 0098 A014              cp R10,R0
 009A C0F3              brlo L27
 009C           X6:
 009C                   .dbline 86
 009C D2DF              xcall _i2c_stop
 009E                   .dbline -2
 009E           L23:
 009E                   .dbline 0 ; func end
 009E 0C940000          xjmp pop_xgset003C
 00A2                   .dbsym r i 10 c
 00A2                   .dbsym l i2c_nub 4 c
 00A2                   .dbsym r i2c_add 10 c
 00A2                   .dbsym r i2c_data 12 pc
 00A2                   .dbend
 00A2                   .dbfunc e i2c_rebyte _i2c_rebyte fc
 00A2           ;       i2c_data -> R10
 00A2           ;        i2c_add -> R10
                        .even
 00A2           _i2c_rebyte::
 00A2 AA92              st -y,R10
 00A4 A02E              mov R10,R16
 00A6                   .dbline -1
 00A6                   .dbline 91
 00A6           L32:
 00A6                   .dbline 94
 00A6                   .dbline 95
 00A6 B2DF              xcall _i2c_start
 00A8                   .dbline 96
 00A8 00EA              ldi R16,160
 00AA B6DF              xcall _i2c_wrdata
 00AC                   .dbline 97
 00AC           L33:
 00AC                   .dbline 98
 00AC 81B1              in R24,0x1
 00AE 887F              andi R24,248
 00B0 8831              cpi R24,24
 00B2 C9F7              brne L32
 00B4           X7:
 00B4                   .dbline 100
 00B4 0A2D              mov R16,R10
 00B6 B0DF              xcall _i2c_wrdata
 00B8                   .dbline 101
 00B8 A9DF              xcall _i2c_start
 00BA                   .dbline 102
 00BA 01EA              ldi R16,161
 00BC ADDF              xcall _i2c_wrdata
 00BE                   .dbline 103
 00BE B3DF              xcall _i2c_redata
 00C0 A02E              mov R10,R16
 00C2                   .dbline 104
 00C2 BFDF              xcall _i2c_stop
 00C4                   .dbline 105
 00C4 0A2D              mov R16,R10
 00C6                   .dbline -2
 00C6           L31:
 00C6                   .dbline 0 ; func end
 00C6 A990              ld R10,y+
 00C8 0895              ret
 00CA                   .dbsym r i2c_data 10 c
 00CA                   .dbsym r i2c_add 10 c
 00CA                   .dbend
 00CA                   .dbfunc e i2c_rese _i2c_rese fV
 00CA           ;              i -> R10
 00CA           ;        i2c_nub -> y+4
 00CA           ;        i2c_add -> R10
 00CA           ;       i2c_data -> R20,R21
                        .even
 00CA           _i2c_rese::
 00CA 0E940000          xcall push_xgset300C
 00CE A22E              mov R10,R18
 00D0 A801              movw R20,R16
 00D2                   .dbline -1
 00D2                   .dbline 113
 00D2           L36:
 00D2                   .dbline 116
 00D2                   .dbline 117
 00D2 9CDF              xcall _i2c_start
 00D4                   .dbline 118
 00D4 00EA              ldi R16,160
 00D6 A0DF              xcall _i2c_wrdata
 00D8                   .dbline 119
 00D8           L37:
 00D8                   .dbline 120
 00D8 81B1              in R24,0x1
 00DA 887F              andi R24,248
 00DC 8831              cpi R24,24
 00DE C9F7              brne L36
 00E0           X8:
 00E0                   .dbline 122
 00E0 0A2D              mov R16,R10
 00E2 9ADF              xcall _i2c_wrdata
 00E4                   .dbline 123
 00E4 93DF              xcall _i2c_start
 00E6                   .dbline 124
 00E6 01EA              ldi R16,161
 00E8 97DF              xcall _i2c_wrdata
 00EA                   .dbline 125
 00EA AA24              clr R10
 00EC 06C0              xjmp L42
 00EE           L39:
 00EE                   .dbline 126
 00EE                   .dbline 127
 00EE A2DF              xcall _i2c_redataack
 00F0 FA01              movw R30,R20
 00F2 0083              std z+0,R16
 00F4                   .dbline 128
 00F4 4F5F              subi R20,255  ; offset = 1
 00F6 5F4F              sbci R21,255
 00F8                   .dbline 129
 00F8           L40:
 00F8                   .dbline 125
 00F8 A394              inc R10
 00FA           L42:
 00FA                   .dbline 125
 00FA 8C81              ldd R24,y+4
 00FC 8150              subi R24,1
 00FE A816              cp R10,R24
 0100 B0F3              brlo L39
 0102           X9:
 0102                   .dbline 130
 0102 91DF              xcall _i2c_redata
 0104 FA01              movw R30,R20
 0106 0083              std z+0,R16
 0108                   .dbline 131
 0108 9CDF              xcall _i2c_stop
 010A                   .dbline -2
 010A           L35:
 010A                   .dbline 0 ; func end
 010A 0C940000          xjmp pop_xgset300C
 010E                   .dbsym r i 10 c
 010E                   .dbsym l i2c_nub 4 c
 010E                   .dbsym r i2c_add 10 c
 010E                   .dbsym r i2c_data 20 pc
 010E                   .dbend
 010E                   .dbfile D:\16实验程序\I2C读写24C04\写一个字节\write-byte.c
 010E                   .dbfunc e main _main fV
                        .even
 010E           _main::
 010E                   .dbline -1
 010E                   .dbline 10
 010E                   .dbline 11
 010E 78DF              xcall _i2c_init
 0110                   .dbline 12
 0110 22E1              ldi R18,18
 0112 07E0              ldi R16,7
 0114 99DF              xcall _i2c_wrbyte
 0116                   .dbline -2
 0116           L43:
 0116                   .dbline 0 ; func end
 0116 0895              ret
 0118                   .dbend

⌨️ 快捷键说明

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