?? write-byte.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 + -