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

📄 ac15-3.lis

📁 AVR的MEGA16通过TWI接口读写AT24C02
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module ac15-3.c
                        .area lit(rom, con, rel)
 0000           _dis_7::
 0000 C0F9              .byte 192,249
 0002 A4B0              .byte 164,176
 0004 9992              .byte 153,146
 0006 82F8              .byte 130,248
 0008 8090              .byte 128,144
 000A                   .dbfile D:\programe\AVR实验\I2C\TWI-at2401\ac15-3.c
 000A                   .dbsym e dis_7 _dis_7 A[10:10]kc
 000A           _position::
 000A 1020              .byte 16,32
 000C                   .dbsym e position _position A[2:2]kc
                        .area data(ram, con, rel)
 0000                   .dbfile D:\programe\AVR实验\I2C\TWI-at2401\ac15-3.c
 0000           _dis_buff::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\programe\AVR实验\I2C\TWI-at2401\ac15-3.c
 0002                   .dbsym e dis_buff _dis_buff A[2:2]c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\programe\AVR实验\I2C\TWI-at2401\ac15-3.c
 0000                   .dbfunc e Delay_2us _Delay_2us fV
                        .even
 0000           _Delay_2us::
 0000                   .dbline -1
 0000                   .dbline 53
 0000           ; #include <iom8v.h>                    
 0000           ; #include <macros.h>
 0000           ; //-----------------------------------------------
 0000           ; #define uchar unsigned char   
 0000           ; #define uint unsigned int
 0000           ; 
 0000           ; //TWI状态定义
 0000           ; //MT 主方式传输  MR 主方式接收
 0000           ; #define START 0x08 
 0000           ; #define RE_START 0x10
 0000           ; #define MT_SLA_ACK 0x18
 0000           ; #define MT_SLA_NOACK 0x20
 0000           ; #define MT_DATA_ACK  0x28
 0000           ; #define MT_DATA_NOACK 0x30
 0000           ; #define MR_SLA_ACK  0x40
 0000           ; #define MR_SLA_NOACK 0x48
 0000           ; #define MR_DATA_ACK 0x50
 0000           ; #define MR_DATA_NOACK 0x58
 0000           ; 
 0000           ; 
 0000           ; #define rd_device_add 0xa1
 0000           ; #define wr_device_add 0xa0
 0000           ; 
 0000           ; #define DS12_CONTROL_PORT        PORTB 
 0000           ; #define CS                       PB3 
 0000           ; #define CS_ON()   ( DS12_CONTROL_PORT &= ~(1<<CS) ) 
 0000           ; #define CS_OFF()  ( DS12_CONTROL_PORT |=  (1<<CS) )
 0000           ; 
 0000           ; //常用TWI操作(主模式写和主模式读)
 0000           ; #define Start()         (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
 0000           ; #define Stop()          (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
 0000           ; #define Wait()                  {while(!(TWCR&(1<<TWINT)));}
 0000           ; #define TestAck()       (TWSR&0xf8)
 0000           ; #define SetAck()        (TWCR|=(1<<TWEA))
 0000           ; #define SetNoAck()    (TWCR&=~(1<<TWEA))
 0000           ; #define Twi()           (TWCR=(1<<TWINT)|(1<<TWEN))
 0000           ; #define Write8Bit(x)  {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}   
 0000           ;       
 0000           ; #define xtal 8                        
 0000           ; 
 0000           ; flash unsigned char dis_7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; 
 0000           ; flash unsigned char position[]={0x10,0x20};
 0000           ; unsigned char dis_buff[2]={0,0},posit;
 0000           ; 
 0000           ; //========函数声明=========
 0000           ; 
 0000           ; void port_init(void);
 0000           ; void delay_ms(unsigned int time);
 0000           ; void delay_us(int time);
 0000           ; //=======================
 0000           ; 
 0000           ; void Delay_2us()
 0000           ; {
 0000                   .dbline 54
 0000           ;       NOP();NOP();NOP();
 0000 0000              nop
 0002                   .dbline 54
 0002 0000              nop
 0004                   .dbline 54
 0004 0000              nop
 0006                   .dbline -2
 0006           L1:
 0006                   .dbline 0 ; func end
 0006 0895              ret
 0008                   .dbend
 0008                   .dbfunc e _delay_us __delay_us fV
 0008           ;            xus -> R20,R21
                        .even
 0008           __delay_us::
 0008 0E940000          xcall push_gset1
 000C A801              movw R20,R16
 000E                   .dbline -1
 000E                   .dbline 58
 000E           ; }
 000E           ; 
 000E           ; void _delay_us(unsigned int xus)
 000E           ; {
 000E 01C0              xjmp L4
 0010           L3:
 0010                   .dbline 60
 0010 F7DF              xcall _Delay_2us
 0012           L4:
 0012                   .dbline 59
 0012           ;        while (xus--)
 0012 1A01              movw R2,R20
 0014 4150              subi R20,1
 0016 5040              sbci R21,0
 0018 2220              tst R2
 001A D1F7              brne L3
 001C 3320              tst R3
 001E C1F7              brne L3
 0020           X0:
 0020                   .dbline -2
 0020           L2:
 0020 0E940000          xcall pop_gset1
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbsym r xus 20 i
 0026                   .dbend
 0026                   .dbfunc e delay_ms _delay_ms fV
 0026           ;              i -> R20,R21
 0026           ;              j -> R22,R23
 0026           ;            xms -> R16,R17
                        .even
 0026           _delay_ms::
 0026 0E940000          xcall push_gset2
 002A                   .dbline -1
 002A                   .dbline 64
 002A           ;               Delay_2us();
 002A           ; }
 002A           ; 
 002A           ; void delay_ms(unsigned int  xms) //crystal=8MHz
 002A           ; {
 002A                   .dbline 66
 002A           ;       unsigned int i,j; //variable:declare Word
 002A           ;       for(i=0; i<xms; i++)
 002A 4427              clr R20
 002C 5527              clr R21
 002E 14C0              xjmp L10
 0030           L7:
 0030                   .dbline 67
 0030           ;               for(j=0; j<498;j++)
 0030 6627              clr R22
 0032 7727              clr R23
 0034 0BC0              xjmp L14
 0036           L11:
 0036                   .dbline 68
 0036                   .dbline 69
 0036 0000              nop
 0038                   .dbline 69
 0038 0000              nop
 003A                   .dbline 69
 003A 0000              nop
 003C                   .dbline 69
 003C 0000              nop
 003E                   .dbline 70
 003E 0000              nop
 0040                   .dbline 70
 0040 0000              nop
 0042                   .dbline 70
 0042 0000              nop
 0044                   .dbline 70
 0044 0000              nop
 0046                   .dbline 70
 0046 0000              nop
 0048                   .dbline 72
 0048           L12:
 0048                   .dbline 67
 0048 6F5F              subi R22,255  ; offset = 1
 004A 7F4F              sbci R23,255
 004C           L14:
 004C                   .dbline 67
 004C 623F              cpi R22,242
 004E E1E0              ldi R30,1
 0050 7E07              cpc R23,R30
 0052 88F3              brlo L11
 0054           L8:
 0054                   .dbline 66
 0054 4F5F              subi R20,255  ; offset = 1
 0056 5F4F              sbci R21,255
 0058           L10:
 0058                   .dbline 66
 0058 4017              cp R20,R16
 005A 5107              cpc R21,R17
 005C 48F3              brlo L7
 005E                   .dbline -2
 005E           L6:
 005E 0E940000          xcall pop_gset2
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym r i 20 i
 0064                   .dbsym r j 22 i
 0064                   .dbsym r xms 16 i
 0064                   .dbend
 0064                   .dbfunc e display _display fV
 0064           ;           adc1 -> R20
                        .even
 0064           _display::
 0064 0E940000          xcall push_gset1
 0068 402F              mov R20,R16
 006A                   .dbline -1
 006A                   .dbline 76
 006A           ;               {
 006A           ;                       NOP();NOP();NOP();NOP();
 006A           ;                       NOP();NOP();NOP();NOP();NOP();          
 006A           ;                       
 006A           ;               }
 006A           ; }
 006A           ; 
 006A           ; void display(unsigned char adc1) // 2 位LED 数码管动态扫描函数
 006A           ; {
 006A                   .dbline 77
 006A           ;    dis_buff[1]=adc1 /10;
 006A 1AE0              ldi R17,10
 006C 042F              mov R16,R20
 006E 0E940000          xcall div8u
 0072 00930100          sts _dis_buff+1,R16
 0076                   .dbline 79
 0076           ; 
 0076           ;     dis_buff[0]=adc1 %10;
 0076 1AE0              ldi R17,10
 0078 042F              mov R16,R20
 007A 0E940000          xcall mod8u
 007E 00930000          sts _dis_buff,R16
 0082                   .dbline 82
 0082           ;   
 0082           ;   //PORTB = 0x00;
 0082           ;   for(posit=0; posit<2;posit++)
 0082 2224              clr R2
 0084 20920000          sts _posit,R2
 0088 20C0              xjmp L20
 008A           L17:
 008A                   .dbline 83
 008A                   .dbline 85
 008A 80E0              ldi R24,<_dis_buff
 008C 90E0              ldi R25,>_dis_buff
 008E E0910000          lds R30,_posit
 0092 FF27              clr R31
 0094 E80F              add R30,R24
 0096 F91F              adc R31,R25
 0098 E081              ldd R30,z+0
 009A FF27              clr R31
 009C 80E0              ldi R24,<_dis_7
 009E 90E0              ldi R25,>_dis_7
 00A0 E80F              add R30,R24
 00A2 F91F              adc R31,R25
 00A4 E491              lpm R30,Z
 00A6 E2BB              out 0x12,R30
 00A8                   .dbline 86
 00A8 80E0              ldi R24,<_position
 00AA 90E0              ldi R25,>_position
 00AC E0910000          lds R30,_posit
 00B0 FF27              clr R31
 00B2 E80F              add R30,R24
 00B4 F91F              adc R31,R25
 00B6 E491              lpm R30,Z
 00B8 E8BB              out 0x18,R30
 00BA                   .dbline 88
 00BA 04E6              ldi R16,100
 00BC 10E0              ldi R17,0
 00BE A4DF              xcall __delay_us
 00C0                   .dbline 91
 00C0           L18:
 00C0                   .dbline 82
 00C0 80910000          lds R24,_posit
 00C4 8F5F              subi R24,255    ; addi 1
 00C6 80930000          sts _posit,R24
 00CA           L20:
 00CA                   .dbline 82
 00CA 80910000          lds R24,_posit
 00CE 8230              cpi R24,2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -