?? read_page.s
字號:
.module read_page.c
.area text(rom, con, rel)
.dbfile D:\16實驗程序\I2C讀寫24C04\連續讀\read_page.c
.dbfile D:\16實驗程序\I2C讀寫24C04\連續讀\i2c.h
.dbfunc e i2c_init _i2c_init fV
.even
_i2c_init::
.dbline -1
.dbline 5
; //從24c04連續讀出16個字節的程序
; //讀出數據通過led顯示
; #include<iom16v.h>
; #define uchar unsigned char
; #define uint unsigned int
.dbline 6
; #include"i2c.h"
cbi 0x12,7
.dbline 7
; uchar aa[16];
ldi R24,1
out 0x0,R24
.dbline 8
;
out 0x1,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e i2c_start _i2c_start fV
.even
_i2c_start::
.dbline -1
.dbline 14
; //短延時函數
; void s_ms(unsigned int t)
; {
; unsigned int i ;
; for(;t>=1;t--)
; {
.dbline 15
; }
ldi R24,164
out 0x36,R24
L3:
.dbline 16
; }
L4:
.dbline 16
in R2,0x36
sbrs R2,7
rjmp L3
X0:
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e i2c_wrdata _i2c_wrdata fV
; i2c_data -> R16
.even
_i2c_wrdata::
.dbline -1
.dbline 22
;
; //寫一個字節
; main()
; {
; uchar i;
; DDRD=0xff;
.dbline 23
; PORTD=0XFF;
out 0x3,R16
.dbline 24
; i2c_init(); //初始化
ldi R24,132
out 0x36,R24
L7:
.dbline 25
; i2c_rese(aa,0x00,16); //讀出16個字節,起始地址0x00
L8:
.dbline 25
in R2,0x36
sbrs R2,7
rjmp L7
X1:
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbsym r i2c_data 16 c
.dbend
.dbfunc e i2c_redata _i2c_redata fc
; i2c_data -> R16
.even
_i2c_redata::
.dbline -1
.dbline 31
; for(i=0;i<16;i++)
; {
; PORTD=~aa[i];
; s_ms(60000);
; s_ms(60000);
; s_ms(60000);
.dbline 33
; s_ms(60000);
; s_ms(60000);
ldi R24,132
out 0x36,R24
L11:
.dbline 34
; s_ms(60000);
L12:
.dbline 34
in R2,0x36
sbrs R2,7
rjmp L11
X2:
.dbline 35
; s_ms(60000);
in R16,0x3
.dbline 36
; s_ms(60000);
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbsym r i2c_data 16 c
.dbend
.dbfunc e i2c_redataack _i2c_redataack fc
; i2c_data -> R16
.even
_i2c_redataack::
.dbline -1
.dbline 41
; s_ms(60000);
; s_ms(60000);
; s_ms(60000);
; s_ms(60000);
; }
.dbline 43
; }
ldi R24,196
out 0x36,R24
L15:
.dbline 44
L16:
.dbline 44
in R2,0x36
sbrs R2,7
rjmp L15
X3:
.dbline 45
in R16,0x3
.dbline 46
.dbline -2
L14:
.dbline 0 ; func end
ret
.dbsym r i2c_data 16 c
.dbend
.dbfunc e i2c_stop _i2c_stop fV
.even
_i2c_stop::
.dbline -1
.dbline 53
.dbline 54
ldi R24,148
out 0x36,R24
.dbline -2
L18:
.dbline 0 ; func end
ret
.dbend
.dbfunc e i2c_wrbyte _i2c_wrbyte fV
; i2c_add -> R12
; i2c_data -> R10
.even
_i2c_wrbyte::
st -y,R10
st -y,R12
mov R12,R18
mov R10,R16
.dbline -1
.dbline 59
L20:
.dbline 61
.dbline 62
xcall _i2c_start
.dbline 63
ldi R16,160
xcall _i2c_wrdata
.dbline 64
L21:
.dbline 65
in R24,0x1
andi R24,248
cpi R24,24
brne L20
X4:
.dbline 67
mov R16,R12
xcall _i2c_wrdata
.dbline 68
mov R16,R10
xcall _i2c_wrdata
.dbline 69
xcall _i2c_stop
.dbline -2
L19:
.dbline 0 ; func end
ld R12,y+
ld R10,y+
ret
.dbsym r i2c_add 12 c
.dbsym r i2c_data 10 c
.dbend
.dbfunc e i2c_wrpage _i2c_wrpage fV
; i -> R10
; i2c_nub -> y+4
; i2c_add -> R10
; i2c_data -> R12,R13
.even
_i2c_wrpage::
xcall push_xgset003C
mov R10,R18
movw R12,R16
.dbline -1
.dbline 77
L24:
.dbline 80
.dbline 81
xcall _i2c_start
.dbline 82
ldi R16,160
xcall _i2c_wrdata
.dbline 83
L25:
.dbline 84
in R24,0x1
andi R24,248
cpi R24,24
brne L24
X5:
.dbline 86
mov R16,R10
xcall _i2c_wrdata
.dbline 87
clr R10
xjmp L30
L27:
.dbline 88
.dbline 89
movw R30,R12
ld R16,Z+
movw R12,R30
xcall _i2c_wrdata
.dbline 90
L28:
.dbline 87
inc R10
L30:
.dbline 87
ldd R0,y+4
cp R10,R0
brlo L27
X6:
.dbline 91
xcall _i2c_stop
.dbline -2
L23:
.dbline 0 ; func end
xjmp pop_xgset003C
.dbsym r i 10 c
.dbsym l i2c_nub 4 c
.dbsym r i2c_add 10 c
.dbsym r i2c_data 12 pc
.dbend
.dbfunc e i2c_rebyte _i2c_rebyte fc
; i2c_data -> R10
; i2c_add -> R10
.even
_i2c_rebyte::
st -y,R10
mov R10,R16
.dbline -1
.dbline 96
L32:
.dbline 99
.dbline 100
xcall _i2c_start
.dbline 101
ldi R16,160
xcall _i2c_wrdata
.dbline 102
L33:
.dbline 103
in R24,0x1
andi R24,248
cpi R24,24
brne L32
X7:
.dbline 105
mov R16,R10
xcall _i2c_wrdata
.dbline 106
xcall _i2c_start
.dbline 107
ldi R16,161
xcall _i2c_wrdata
.dbline 108
xcall _i2c_redata
mov R10,R16
.dbline 109
xcall _i2c_stop
.dbline 110
mov R16,R10
.dbline -2
L31:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r i2c_data 10 c
.dbsym r i2c_add 10 c
.dbend
.dbfunc e i2c_rese _i2c_rese fV
; i -> R10
; i2c_nub -> y+4
; i2c_add -> R10
; i2c_data -> R20,R21
.even
_i2c_rese::
xcall push_xgset300C
mov R10,R18
movw R20,R16
.dbline -1
.dbline 119
L36:
.dbline 122
.dbline 123
xcall _i2c_start
.dbline 124
ldi R16,160
xcall _i2c_wrdata
.dbline 125
L37:
.dbline 126
in R24,0x1
andi R24,248
cpi R24,24
brne L36
X8:
.dbline 128
mov R16,R10
xcall _i2c_wrdata
.dbline 129
xcall _i2c_start
.dbline 130
ldi R16,161
xcall _i2c_wrdata
.dbline 131
clr R10
xjmp L42
L39:
.dbline 132
.dbline 133
xcall _i2c_redataack
movw R30,R20
std z+0,R16
.dbline 134
subi R20,255 ; offset = 1
sbci R21,255
.dbline 135
L40:
.dbline 131
inc R10
L42:
.dbline 131
ldd R24,y+4
subi R24,1
cp R10,R24
brlo L39
X9:
.dbline 136
xcall _i2c_redata
movw R30,R20
std z+0,R16
.dbline 137
xcall _i2c_stop
.dbline -2
L35:
.dbline 0 ; func end
xjmp pop_xgset300C
.dbsym r i 10 c
.dbsym l i2c_nub 4 c
.dbsym r i2c_add 10 c
.dbsym r i2c_data 20 pc
.dbend
.dbfile D:\16實驗程序\I2C讀寫24C04\連續讀\read_page.c
.dbfunc e s_ms _s_ms fV
; i -> <dead>
; t -> R16,R17
.even
_s_ms::
.dbline -1
.dbline 11
.dbline 13
xjmp L47
L44:
.dbline 14
.dbline 15
L45:
.dbline 13
subi R16,1
sbci R17,0
L47:
.dbline 13
cpi R16,1
ldi R30,0
cpc R17,R30
brsh L44
X10:
.dbline -2
L43:
.dbline 0 ; func end
ret
.dbsym l i 1 i
.dbsym r t 16 i
.dbend
.dbfunc e main _main fI
; i -> R20
.even
_main::
sbiw R28,1
.dbline -1
.dbline 20
.dbline 22
ldi R24,255
out 0x11,R24
.dbline 23
out 0x12,R24
.dbline 24
xcall _i2c_init
.dbline 25
ldi R24,16
std y+0,R24
clr R18
ldi R16,<_aa
ldi R17,>_aa
xcall _i2c_rese
.dbline 26
clr R20
xjmp L52
L49:
.dbline 27
.dbline 28
ldi R24,<_aa
ldi R25,>_aa
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
com R2
out 0x12,R2
.dbline 29
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 30
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 31
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 32
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 33
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 34
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 35
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 36
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 37
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 38
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 39
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 40
ldi R16,60000
ldi R17,234
xcall _s_ms
.dbline 41
L50:
.dbline 26
inc R20
L52:
.dbline 26
cpi R20,16
brlo L49
X11:
.dbline -2
L48:
.dbline 0 ; func end
adiw R28,1
ret
.dbsym r i 20 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\16實驗程序\I2C讀寫24C04\連續讀\read_page.c
_aa::
.blkb 16
.dbsym e aa _aa A[16:16]c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -