📄 ac15-3.lis
字号:
.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 + -