📄 ad7416.lis
字号:
.module AD7416.C
.area text(rom, con, rel)
0000 .dbfile F:\程序—实验板\AD7416\AD7416.C
0000 .dbfunc e twi_init _twi_init fV
.even
0000 _twi_init::
0000 .dbline -1
0000 .dbline 31
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include <stdlib.h>
0000 ;
0000 ; #define SLD_R_AK 0xC4
0000 ; #define SLD_R_NK 0x83
0000 ;
0000 ; //TWI status
0000 ; #define START_OK 0x08
0000 ; #define R_STAR_OK 0x10
0000 ; #define SLA_W_OK 0x18
0000 ; #define SLD_W_OK 0x28
0000 ; #define SLA_R_OK 0x40
0000 ; #define SLD_R_AK_OK 0x50
0000 ; #define SLD_R_NK_OK 0x58
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #define start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
0000 ; #define stop() (TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO))
0000 ; #define wait() {while(!(TWCR&(1<<TWINT) ));}
0000 ; #define writebyte(twi_d) {TWDR=(twi_d);TWCR=(1<<TWINT)|(1<<TWEN);}
0000 ; #define testack() (TWSR&0Xf8)
0000 ; #define twi() (TWCR=(1<<TWINT)|(1<<TWEN))
0000 ;
0000 ; uchar Tmp_data_high, Tmp_data_low;
0000 ;
0000 ; void twi_init()
0000 ; {
0000 .dbline 32
0000 ; TWBR=0X0C;
0000 8CE0 ldi R24,12
0002 80B9 out 0x0,R24
0004 .dbline 34
0004 ; // TWCR=0X44;
0004 ; TWSR=0X00;
0004 2224 clr R2
0006 21B8 out 0x1,R2
0008 .dbline -2
0008 .dbline 35
0008 ; }
0008 L1:
0008 .dbline 0 ; func end
0008 0895 ret
000A .dbend
000A .dbfunc e AD7416_read _AD7416_read fc
.even
000A _AD7416_read::
000A .dbline -1
000A .dbline 39
000A ; //~~~~~~~~~~~~~~~~~~~~~~
000A ;
000A ; uchar AD7416_read(void)
000A ; {
000A .dbline 41
000A ;
000A ; start(); //Generate START condition
000A 84EA ldi R24,164
000C 86BF out 0x36,R24
000E .dbline 42
000E L3:
000E .dbline 42
000E L4:
000E .dbline 42
000E ; wait(); //START_OK (0x08) valified
000E 26B6 in R2,0x36
0010 27FE sbrs R2,7
0012 FDCF rjmp L3
0014 .dbline 42
0014 .dbline 42
0014 .dbline 45
0014 ;
0014 ;
0014 ; writebyte(0X90);
0014 .dbline 45
0014 80E9 ldi R24,144
0016 83B9 out 0x3,R24
0018 .dbline 45
0018 84E8 ldi R24,132
001A 86BF out 0x36,R24
001C .dbline 45
001C .dbline 45
001C .dbline 46
001C L6:
001C .dbline 46
001C L7:
001C .dbline 46
001C ; wait(); //SLA_R_OK (0x40) verified
001C 26B6 in R2,0x36
001E 27FE sbrs R2,7
0020 FDCF rjmp L6
0022 .dbline 46
0022 .dbline 46
0022 .dbline 48
0022 ;
0022 ; writebyte(0);
0022 .dbline 48
0022 2224 clr R2
0024 23B8 out 0x3,R2
0026 .dbline 48
0026 84E8 ldi R24,132
0028 86BF out 0x36,R24
002A .dbline 48
002A .dbline 48
002A .dbline 49
002A L9:
002A .dbline 49
002A L10:
002A .dbline 49
002A ; wait(); //ALD_W_OK (0x28) verified
002A 26B6 in R2,0x36
002C 27FE sbrs R2,7
002E FDCF rjmp L9
0030 .dbline 49
0030 .dbline 49
0030 .dbline 51
0030 ;
0030 ; start(); //Generate RESTART condition
0030 84EA ldi R24,164
0032 86BF out 0x36,R24
0034 .dbline 52
0034 L12:
0034 .dbline 52
0034 L13:
0034 .dbline 52
0034 ; wait(); //RESTART_OK (0x10) valified
0034 26B6 in R2,0x36
0036 27FE sbrs R2,7
0038 FDCF rjmp L12
003A .dbline 52
003A .dbline 52
003A .dbline 54
003A ;
003A ; writebyte(0X91);
003A .dbline 54
003A 81E9 ldi R24,145
003C 83B9 out 0x3,R24
003E .dbline 54
003E 84E8 ldi R24,132
0040 86BF out 0x36,R24
0042 .dbline 54
0042 .dbline 54
0042 .dbline 55
0042 L15:
0042 .dbline 55
0042 L16:
0042 .dbline 55
0042 ; wait();
0042 26B6 in R2,0x36
0044 27FE sbrs R2,7
0046 FDCF rjmp L15
0048 .dbline 55
0048 .dbline 55
0048 .dbline 57
0048 ;
0048 ; twi();
0048 84E8 ldi R24,132
004A 86BF out 0x36,R24
004C .dbline 59
004C L18:
004C .dbline 59
004C L19:
004C .dbline 59
004C ; //writebyte(SLD_R_AK );
004C ; wait();
004C 26B6 in R2,0x36
004E 27FE sbrs R2,7
0050 FDCF rjmp L18
0052 .dbline 59
0052 .dbline 59
0052 .dbline 61
0052 ;
0052 ; Tmp_data_high=TWDR;
0052 23B0 in R2,0x3
0054 20920100 sts _Tmp_data_high,R2
0058 .dbline 62
0058 L21:
0058 .dbline 62
0058 L22:
0058 .dbline 62
0058 ; wait();
0058 26B6 in R2,0x36
005A 27FE sbrs R2,7
005C FDCF rjmp L21
005E .dbline 62
005E .dbline 62
005E .dbline 64
005E L24:
005E .dbline 64
005E L25:
005E .dbline 64
005E ; //TWCR=SLD_R_AK; //Read the pointed reg: low byte
005E ; wait(); //DLD_R_AK_OK (0x50) verified
005E 26B6 in R2,0x36
0060 27FE sbrs R2,7
0062 FDCF rjmp L24
0064 .dbline 64
0064 .dbline 64
0064 .dbline 65
0064 ; Tmp_data_low = TWDR;
0064 23B0 in R2,0x3
0066 20920000 sts _Tmp_data_low,R2
006A .dbline 67
006A ;
006A ; stop(); //Generate STOP condition
006A 84E9 ldi R24,148
006C 86BF out 0x36,R24
006E .dbline -2
006E .dbline 68
006E ; }
006E L2:
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbend
0070 .dbfunc e delay _delay fV
0070 ; x -> R20,R21
0070 ; z -> R16
.even
0070 _delay::
0070 0E940000 xcall push_gset1
0074 .dbline -1
0074 .dbline 71
0074 ;
0074 ; void delay(uchar z)
0074 ; {
0074 .dbline 73
0074 ; uint x;
0074 ; for(;z>0;z--)
0074 09C0 xjmp L31
0076 L28:
0076 .dbline 74
0076 40E2 ldi R20,20000
0078 5EE4 ldi R21,78
007A 02C0 xjmp L35
007C L32:
007C .dbline 74
007C L33:
007C .dbline 74
007C 4150 subi R20,1
007E 5040 sbci R21,0
0080 L35:
0080 .dbline 74
0080 4030 cpi R20,0
0082 4507 cpc R20,R21
0084 D9F7 brne L32
0086 X0:
0086 L29:
0086 .dbline 73
0086 0A95 dec R16
0088 L31:
0088 .dbline 73
0088 2224 clr R2
008A 2016 cp R2,R16
008C A0F3 brlo L28
008E .dbline -2
008E .dbline 75
008E ; for(x=20000;x>0;x--);
008E ; }
008E L27:
008E 0E940000 xcall pop_gset1
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbsym r x 20 i
0094 .dbsym r z 16 c
0094 .dbend
0094 .dbfunc e main _main fV
.even
0094 _main::
0094 .dbline -1
0094 .dbline 78
0094 ;
0094 ; void main(void)
0094 ; {
0094 .dbline 79
0094 ; DDRD=0xff;
0094 8FEF ldi R24,255
0096 81BB out 0x11,R24
0098 .dbline 80
0098 ; twi_init();
0098 B3DF xcall _twi_init
009A 06C0 xjmp L38
009C L37:
009C .dbline 82
009C .dbline 84
009C B6DF xcall _AD7416_read
009E .dbline 85
009E 20900100 lds R2,_Tmp_data_high
00A2 22BA out 0x12,R2
00A4 .dbline 86
00A4 0AE0 ldi R16,10
00A6 E4DF xcall _delay
00A8 .dbline 87
00A8 L38:
00A8 .dbline 81
00A8 F9CF xjmp L37
00AA X1:
00AA .dbline -2
00AA .dbline 88
00AA ; while(1)
00AA ; {
00AA ;
00AA ; AD7416_read();
00AA ; PORTD=Tmp_data_high;
00AA ; delay(10);
00AA ; }
00AA ; }
00AA L36:
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\程序—实验板\AD7416\AD7416.C
0000 _Tmp_data_low::
0000 .blkb 1
0001 .dbsym e Tmp_data_low _Tmp_data_low c
0001 _Tmp_data_high::
0001 .blkb 1
0002 .dbsym e Tmp_data_high _Tmp_data_high c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -