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

📄 ad7416.lis

📁 对AD7416用i2c操作,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 + -