📄 master_1.lis
字号:
.module master_1.c
.area data(ram, con, rel)
0000 _Date::
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 0000 .byte 0,0
.area data(ram, con, rel)
0004 .dbfile D:\AVR\代码\ICCdaima\TWI/UART.h
0004 .dbsym e Date _Date A[4:4]c
.area text(rom, con, rel)
0000 .dbfile D:\AVR\代码\ICCdaima\TWI/UART.h
0000 .dbfile D:\AVR\代码\ICCdaima\TWI\master_1.c
0000 .dbfunc e Start _Start fV
.even
0000 _Start::
0000 .dbline -1
0000 .dbline 17
0000 ; #include"iom8v.h"
0000 ; #include"UART.h"
0000 ; #define uchar unsigned char
0000 ; #define STATUS (TWSR&0xf8)
0000 ; #define SLA_W 0x32
0000 ; #define SLA_R 0x33
0000 ; #define SLAVER_ADDRESS 0x32
0000 ; #define START 0x08
0000 ; #define RE_START 0x10
0000 ; #define MT_SLA_WRITE_ACK 0x18
0000 ; #define MT_SLA_READ_ACK 0x40
0000 ; #define MT_DATA_ACK 0x28
0000 ; #define MT_READ_ACK 0x58
0000 ;
0000 ;
0000 ; void Start(void)
0000 ; {
0000 .dbline 18
0000 ; TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
0000 84EA ldi R24,164
0002 86BF out 0x36,R24
0004 L2:
0004 .dbline 19
0004 L3:
0004 .dbline 19
0004 ; while(!(TWCR&(1<<TWINT)));
0004 26B6 in R2,0x36
0006 27FE sbrs R2,7
0008 FDCF rjmp L2
000A .dbline -2
000A .dbline 20
000A ; }
000A L1:
000A .dbline 0 ; func end
000A 0895 ret
000C .dbend
000C .dbfunc e Stop _Stop fV
.even
000C _Stop::
000C .dbline -1
000C .dbline 22
000C ; void Stop(void)
000C ; {
000C .dbline 23
000C ; TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
000C 84E9 ldi R24,148
000E 86BF out 0x36,R24
0010 .dbline -2
0010 .dbline 24
0010 ; }
0010 L5:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e Load _Load fV
0012 ; i -> R16
.even
0012 _Load::
0012 .dbline -1
0012 .dbline 26
0012 ; void Load(uchar i)
0012 ; {
0012 .dbline 27
0012 ; TWDR=i;
0012 03B9 out 0x3,R16
0014 .dbline 28
0014 ; TWCR=(1<<TWINT)|(1<<TWEN);
0014 84E8 ldi R24,132
0016 86BF out 0x36,R24
0018 L7:
0018 .dbline 29
0018 L8:
0018 .dbline 29
0018 ; while(!(TWCR&(1<<TWINT)));
0018 26B6 in R2,0x36
001A 27FE sbrs R2,7
001C FDCF rjmp L7
001E .dbline -2
001E .dbline 31
001E ;
001E ; }
001E L6:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r i 16 c
0020 .dbend
0020 .dbfunc e Get _Get fV
0020 ; d -> R16,R17
.even
0020 _Get::
0020 .dbline -1
0020 .dbline 34
0020 ;
0020 ; void Get(unsigned char *d)
0020 ; {
0020 .dbline 35
0020 ; TWCR=(1<<TWINT)|(1<<TWEN);
0020 84E8 ldi R24,132
0022 86BF out 0x36,R24
0024 L11:
0024 .dbline 36
0024 L12:
0024 .dbline 36
0024 ; while(!(TWCR&(1<<TWINT)));
0024 26B6 in R2,0x36
0026 27FE sbrs R2,7
0028 FDCF rjmp L11
002A .dbline 37
002A ; *d= TWDR;
002A 23B0 in R2,0x3
002C F801 movw R30,R16
002E 2082 std z+0,R2
0030 .dbline -2
0030 .dbline 38
0030 ; }
0030 L10:
0030 .dbline 0 ; func end
0030 0895 ret
0032 .dbsym r d 16 pc
0032 .dbend
0032 .dbfunc e ERROR _ERROR fV
0032 ; state -> R20
.even
0032 _ERROR::
0032 00D0 rcall push_gset1
0034 402F mov R20,R16
0036 .dbline -1
0036 .dbline 40
0036 ; void ERROR(uchar state)
0036 ; {Stop();
0036 .dbline 40
0036 EADF rcall _Stop
0038 .dbline -2
0038 .dbline 41
0038 ; }
0038 L14:
0038 00D0 rcall pop_gset1
003A .dbline 0 ; func end
003A 0895 ret
003C .dbsym r state 20 c
003C .dbend
003C .dbfunc e SendByte _SendByte fc
003C ; data -> R20
.even
003C _SendByte::
003C 00D0 rcall push_gset1
003E 402F mov R20,R16
0040 .dbline -1
0040 .dbline 46
0040 ;
0040 ; /*写一个字节data,成功则返回1,否则
0040 ; 返回0*/
0040 ; uchar SendByte(uchar data)
0040 ; {
0040 .dbline 48
0040 ; //启动I2C
0040 ; Start();
0040 DFDF rcall _Start
0042 .dbline 49
0042 ; if(STATUS!=START) //{ERROR(STATUS);return 0;}
0042 81B1 in R24,0x1
0044 887F andi R24,248
0046 8830 cpi R24,8
0048 19F0 breq L16
004A .dbline 50
004A ; puts("Start ERRor");
004A 00E0 ldi R16,<L18
004C 10E0 ldi R17,>L18
004E 00D0 rcall _puts
0050 L16:
0050 .dbline 52
0050 ; //发送从机地址(写),等待回应, 错误检测
0050 ; Load(0);
0050 0027 clr R16
0052 DFDF rcall _Load
0054 .dbline 53
0054 ; if(STATUS!=MT_SLA_WRITE_ACK) //{ERROR(STATUS);return 0;}
0054 81B1 in R24,0x1
0056 887F andi R24,248
0058 8831 cpi R24,24
005A 19F0 breq L19
005C .dbline 54
005C ; puts("SLA_W RROR");
005C 00E0 ldi R16,<L21
005E 10E0 ldi R17,>L21
0060 00D0 rcall _puts
0062 L19:
0062 .dbline 61
0062 ; /*
0062 ; //发送EEPROM地址,等待回应,错误检测
0062 ; Load(addr);
0062 ; if(STATUS!=MT_DATA_ACK) {ERROR(STATUS);return 0;}
0062 ; */
0062 ; //发送数据,等待回应,错误检测
0062 ; Load(data);
0062 042F mov R16,R20
0064 D6DF rcall _Load
0066 .dbline 62
0066 ; if(STATUS!=MT_DATA_ACK) //{ERROR(STATUS);return 0;}
0066 81B1 in R24,0x1
0068 887F andi R24,248
006A 8832 cpi R24,40
006C 19F0 breq L22
006E .dbline 63
006E ; puts("Date Error");
006E 00E0 ldi R16,<L24
0070 10E0 ldi R17,>L24
0072 00D0 rcall _puts
0074 L22:
0074 .dbline 64
0074 ; Stop();
0074 CBDF rcall _Stop
0076 .dbline 65
0076 ; return 1;//发送成功,返回1;
0076 01E0 ldi R16,1
0078 .dbline -2
0078 L15:
0078 00D0 rcall pop_gset1
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r data 20 c
007C .dbend
007C .dbfunc e Init_Io _Init_Io fV
.even
007C _Init_Io::
007C .dbline -1
007C .dbline 70
007C ;
007C ; }
007C ;
007C ; void Init_Io(void)
007C ; {
007C .dbline 71
007C ; DDRC&=~((1<<PC4)&(1<<PC5)&(1<<PC2));
007C 84B3 in R24,0x14
007E 8F7F andi R24,255
0080 84BB out 0x14,R24
0082 .dbline 72
0082 ; PORTC|= (1<<PC4)|(1<<PC5)|(1<<PC2);
0082 85B3 in R24,0x15
0084 8463 ori R24,52
0086 85BB out 0x15,R24
0088 .dbline 73
0088 ; TWCR=(1<<TWEA)|(1<<TWEN); //主机模式,使能TWI
0088 84E4 ldi R24,68
008A 86BF out 0x36,R24
008C .dbline 74
008C ; TWBR=32;//波特率 100K 8M晶振
008C 80E2 ldi R24,32
008E 80B9 out 0x0,R24
0090 .dbline -2
0090 .dbline 75
0090 ; }
0090 L25:
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbend
0092 .dbfunc e main _main fV
0092 ; temp -> R20
.even
0092 _main::
0092 .dbline -1
0092 .dbline 77
0092 ; void main()
0092 ; {
0092 .dbline 79
0092 ; uchar temp;
0092 ; Init_Io();
0092 F4DF rcall _Init_Io
0094 .dbline 80
0094 ; uart_init();
0094 00D0 rcall _uart_init
0096 .dbline 81
0096 ; puts("串口工作");
0096 00E0 ldi R16,<L27
0098 10E0 ldi R17,>L27
009A 00D0 rcall _puts
009C 0BC0 rjmp L29
009E L28:
009E .dbline 83
009E ; while(1)
009E ; for(temp=0;temp<10;temp++)
009E 4427 clr R20
00A0 07C0 rjmp L34
00A2 L31:
00A2 .dbline 84
00A2 .dbline 85
00A2 042F mov R16,R20
00A4 005D subi R16,208 ; addi 48
00A6 CADF rcall _SendByte
00A8 .dbline 86
00A8 0AE0 ldi R16,10
00AA 10E0 ldi R17,0
00AC 00D0 rcall _Delay_nms
00AE .dbline 87
00AE L32:
00AE .dbline 83
00AE 4395 inc R20
00B0 L34:
00B0 .dbline 83
00B0 4A30 cpi R20,10
00B2 B8F3 brlo L31
00B4 L29:
00B4 .dbline 82
00B4 F4CF rjmp L28
00B6 X0:
00B6 .dbline -2
00B6 .dbline 89
00B6 ; {
00B6 ; SendByte(temp+0x30);
00B6 ; Delay_nms(10);
00B6 ; }
00B6 ;
00B6 ; }
00B6 L26:
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbsym r temp 20 c
00B8 .dbend
.area data(ram, con, rel)
0004 .dbfile D:\AVR\代码\ICCdaima\TWI\master_1.c
0004 L27:
0004 .blkb 9
.area idata
0004 B4AEBFDAB9A4D7F700 .byte 180,174,191,218,185,164,215,247,0
.area data(ram, con, rel)
000D .dbfile D:\AVR\代码\ICCdaima\TWI\master_1.c
000D L24:
000D .blkb 11
.area idata
000D 44617465204572726F7200 .byte 'D,'a,'t,'e,32,'E,'r,'r,'o,'r,0
.area data(ram, con, rel)
0018 .dbfile D:\AVR\代码\ICCdaima\TWI\master_1.c
0018 L21:
0018 .blkb 11
.area idata
0018 534C415F572052524F5200 .byte 'S,'L,'A,95,'W,32,'R,'R,'O,'R,0
.area data(ram, con, rel)
0023 .dbfile D:\AVR\代码\ICCdaima\TWI\master_1.c
0023 L18:
0023 .blkb 12
.area idata
0023 5374617274204552526F7200 .byte 'S,'t,'a,'r,'t,32,'E,'R,'R,'o,'r,0
.area data(ram, con, rel)
002F .dbfile D:\AVR\代码\ICCdaima\TWI\master_1.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -