📄 ad7416.s
字号:
.module AD7416.C
.area text(rom, con, rel)
.dbfile F:\程序—实验板\AD7416\AD7416.C
.dbfunc e twi_init _twi_init fV
.even
_twi_init::
.dbline -1
.dbline 31
;
; #include <iom16v.h>
; #include <macros.h>
; #include <stdlib.h>
;
; #define SLD_R_AK 0xC4
; #define SLD_R_NK 0x83
;
; //TWI status
; #define START_OK 0x08
; #define R_STAR_OK 0x10
; #define SLA_W_OK 0x18
; #define SLD_W_OK 0x28
; #define SLA_R_OK 0x40
; #define SLD_R_AK_OK 0x50
; #define SLD_R_NK_OK 0x58
;
; #define uchar unsigned char
; #define uint unsigned int
;
; #define start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
; #define stop() (TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO))
; #define wait() {while(!(TWCR&(1<<TWINT) ));}
; #define writebyte(twi_d) {TWDR=(twi_d);TWCR=(1<<TWINT)|(1<<TWEN);}
; #define testack() (TWSR&0Xf8)
; #define twi() (TWCR=(1<<TWINT)|(1<<TWEN))
;
; uchar Tmp_data_high, Tmp_data_low;
;
; void twi_init()
; {
.dbline 32
; TWBR=0X0C;
ldi R24,12
out 0x0,R24
.dbline 34
; // TWCR=0X44;
; TWSR=0X00;
clr R2
out 0x1,R2
.dbline -2
.dbline 35
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e AD7416_read _AD7416_read fc
.even
_AD7416_read::
.dbline -1
.dbline 39
; //~~~~~~~~~~~~~~~~~~~~~~
;
; uchar AD7416_read(void)
; {
.dbline 41
;
; start(); //Generate START condition
ldi R24,164
out 0x36,R24
.dbline 42
L3:
.dbline 42
L4:
.dbline 42
; wait(); //START_OK (0x08) valified
in R2,0x36
sbrs R2,7
rjmp L3
.dbline 42
.dbline 42
.dbline 45
;
;
; writebyte(0X90);
.dbline 45
ldi R24,144
out 0x3,R24
.dbline 45
ldi R24,132
out 0x36,R24
.dbline 45
.dbline 45
.dbline 46
L6:
.dbline 46
L7:
.dbline 46
; wait(); //SLA_R_OK (0x40) verified
in R2,0x36
sbrs R2,7
rjmp L6
.dbline 46
.dbline 46
.dbline 48
;
; writebyte(0);
.dbline 48
clr R2
out 0x3,R2
.dbline 48
ldi R24,132
out 0x36,R24
.dbline 48
.dbline 48
.dbline 49
L9:
.dbline 49
L10:
.dbline 49
; wait(); //ALD_W_OK (0x28) verified
in R2,0x36
sbrs R2,7
rjmp L9
.dbline 49
.dbline 49
.dbline 51
;
; start(); //Generate RESTART condition
ldi R24,164
out 0x36,R24
.dbline 52
L12:
.dbline 52
L13:
.dbline 52
; wait(); //RESTART_OK (0x10) valified
in R2,0x36
sbrs R2,7
rjmp L12
.dbline 52
.dbline 52
.dbline 54
;
; writebyte(0X91);
.dbline 54
ldi R24,145
out 0x3,R24
.dbline 54
ldi R24,132
out 0x36,R24
.dbline 54
.dbline 54
.dbline 55
L15:
.dbline 55
L16:
.dbline 55
; wait();
in R2,0x36
sbrs R2,7
rjmp L15
.dbline 55
.dbline 55
.dbline 57
;
; twi();
ldi R24,132
out 0x36,R24
.dbline 59
L18:
.dbline 59
L19:
.dbline 59
; //writebyte(SLD_R_AK );
; wait();
in R2,0x36
sbrs R2,7
rjmp L18
.dbline 59
.dbline 59
.dbline 61
;
; Tmp_data_high=TWDR;
in R2,0x3
sts _Tmp_data_high,R2
.dbline 62
L21:
.dbline 62
L22:
.dbline 62
; wait();
in R2,0x36
sbrs R2,7
rjmp L21
.dbline 62
.dbline 62
.dbline 64
L24:
.dbline 64
L25:
.dbline 64
; //TWCR=SLD_R_AK; //Read the pointed reg: low byte
; wait(); //DLD_R_AK_OK (0x50) verified
in R2,0x36
sbrs R2,7
rjmp L24
.dbline 64
.dbline 64
.dbline 65
; Tmp_data_low = TWDR;
in R2,0x3
sts _Tmp_data_low,R2
.dbline 67
;
; stop(); //Generate STOP condition
ldi R24,148
out 0x36,R24
.dbline -2
.dbline 68
; }
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay _delay fV
; x -> R20,R21
; z -> R16
.even
_delay::
xcall push_gset1
.dbline -1
.dbline 71
;
; void delay(uchar z)
; {
.dbline 73
; uint x;
; for(;z>0;z--)
xjmp L31
L28:
.dbline 74
ldi R20,20000
ldi R21,78
xjmp L35
L32:
.dbline 74
L33:
.dbline 74
subi R20,1
sbci R21,0
L35:
.dbline 74
cpi R20,0
cpc R20,R21
brne L32
X0:
L29:
.dbline 73
dec R16
L31:
.dbline 73
clr R2
cp R2,R16
brlo L28
.dbline -2
.dbline 75
; for(x=20000;x>0;x--);
; }
L27:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r x 20 i
.dbsym r z 16 c
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 78
;
; void main(void)
; {
.dbline 79
; DDRD=0xff;
ldi R24,255
out 0x11,R24
.dbline 80
; twi_init();
xcall _twi_init
xjmp L38
L37:
.dbline 82
.dbline 84
xcall _AD7416_read
.dbline 85
lds R2,_Tmp_data_high
out 0x12,R2
.dbline 86
ldi R16,10
xcall _delay
.dbline 87
L38:
.dbline 81
xjmp L37
X1:
.dbline -2
.dbline 88
; while(1)
; {
;
; AD7416_read();
; PORTD=Tmp_data_high;
; delay(10);
; }
; }
L36:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile F:\程序—实验板\AD7416\AD7416.C
_Tmp_data_low::
.blkb 1
.dbsym e Tmp_data_low _Tmp_data_low c
_Tmp_data_high::
.blkb 1
.dbsym e Tmp_data_high _Tmp_data_high c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -