📄 ac15-3.lis
字号:
00D0 E0F2 brlo L17
00D2 .dbline -2
00D2 L15:
00D2 0E940000 xcall pop_gset1
00D6 .dbline 0 ; func end
00D6 0895 ret
00D8 .dbsym r adc1 20 c
00D8 .dbend
00D8 .dbfunc e port_init _port_init fV
.even
00D8 _port_init::
00D8 .dbline -1
00D8 .dbline 96
00D8 ; {
00D8 ;
00D8 ; PORTD = dis_7[dis_buff[posit]];
00D8 ; PORTB = position[posit];
00D8 ;
00D8 ; _delay_us(100);
00D8 ; //PORTB &= ~position[posit];
00D8 ;
00D8 ; }
00D8 ; }
00D8 ;
00D8 ; /********************端口初始化******************/
00D8 ; void port_init(void)
00D8 ; {
00D8 .dbline 100
00D8 ; //PORTA = 0x00;
00D8 ; //DDRA = 0xFF;
00D8 ; // PORTB = 0x00;
00D8 ; DDRB = 0xFF;
00D8 8FEF ldi R24,255
00DA 87BB out 0x17,R24
00DC .dbline 102
00DC ; // PORTC = 0x00;
00DC ; DDRC = 0x30;
00DC 80E3 ldi R24,48
00DE 84BB out 0x14,R24
00E0 .dbline 104
00E0 ; // PORTD = 0xFF;
00E0 ; DDRD = 0xFF;
00E0 8FEF ldi R24,255
00E2 81BB out 0x11,R24
00E4 .dbline -2
00E4 L21:
00E4 .dbline 0 ; func end
00E4 0895 ret
00E6 .dbend
00E6 .dbfunc e i2c_Read _i2c_Read fc
00E6 ; temp -> R20
00E6 ; RomAddress -> R16
.even
00E6 _i2c_Read::
00E6 0E940000 xcall push_gset1
00EA .dbline -1
00EA .dbline 113
00EA ; }
00EA ;
00EA ;
00EA ; /******************************************
00EA ; I2C总线读一个字节
00EA ; 如果读失败返回0
00EA ; *******************************************/
00EA ; unsigned char i2c_Read(unsigned char RomAddress)
00EA ; {
00EA .dbline 115
00EA ; unsigned char temp;
00EA ; Start();
00EA 84EA ldi R24,164
00EC 86BF out 0x36,R24
00EE .dbline 116
00EE L23:
00EE .dbline 116
00EE L24:
00EE .dbline 116
00EE ; Wait();
00EE 26B6 in R2,0x36
00F0 27FE sbrs R2,7
00F2 FDCF rjmp L23
00F4 .dbline 116
00F4 .dbline 116
00F4 .dbline 117
00F4 ; if (TestAck()!=START) return 0;
00F4 81B1 in R24,0x1
00F6 887F andi R24,248
00F8 8830 cpi R24,8
00FA 11F0 breq L26
00FC .dbline 117
00FC 0027 clr R16
00FE 40C0 xjmp L22
0100 L26:
0100 .dbline 118
0100 ; Write8Bit(wr_device_add);
0100 .dbline 118
0100 80EA ldi R24,160
0102 83B9 out 0x3,R24
0104 .dbline 118
0104 84E8 ldi R24,132
0106 86BF out 0x36,R24
0108 .dbline 118
0108 .dbline 118
0108 .dbline 119
0108 L28:
0108 .dbline 119
0108 L29:
0108 .dbline 119
0108 ; Wait();
0108 26B6 in R2,0x36
010A 27FE sbrs R2,7
010C FDCF rjmp L28
010E .dbline 119
010E .dbline 119
010E .dbline 120
010E ; if (TestAck()!=MT_SLA_ACK) return 0;
010E 81B1 in R24,0x1
0110 887F andi R24,248
0112 8831 cpi R24,24
0114 11F0 breq L31
0116 .dbline 120
0116 0027 clr R16
0118 33C0 xjmp L22
011A L31:
011A .dbline 121
011A ; Write8Bit(RomAddress);
011A .dbline 121
011A 03B9 out 0x3,R16
011C .dbline 121
011C 84E8 ldi R24,132
011E 86BF out 0x36,R24
0120 .dbline 121
0120 .dbline 121
0120 .dbline 122
0120 L33:
0120 .dbline 122
0120 L34:
0120 .dbline 122
0120 ; Wait();
0120 26B6 in R2,0x36
0122 27FE sbrs R2,7
0124 FDCF rjmp L33
0126 .dbline 122
0126 .dbline 122
0126 .dbline 123
0126 ; if (TestAck()!=MT_DATA_ACK) return 0;
0126 81B1 in R24,0x1
0128 887F andi R24,248
012A 8832 cpi R24,40
012C 11F0 breq L36
012E .dbline 123
012E 0027 clr R16
0130 27C0 xjmp L22
0132 L36:
0132 .dbline 124
0132 ; Start();
0132 84EA ldi R24,164
0134 86BF out 0x36,R24
0136 .dbline 125
0136 L38:
0136 .dbline 125
0136 L39:
0136 .dbline 125
0136 ; Wait();
0136 26B6 in R2,0x36
0138 27FE sbrs R2,7
013A FDCF rjmp L38
013C .dbline 125
013C .dbline 125
013C .dbline 126
013C ; if (TestAck()!=RE_START) return 0;
013C 81B1 in R24,0x1
013E 887F andi R24,248
0140 8031 cpi R24,16
0142 11F0 breq L41
0144 .dbline 126
0144 0027 clr R16
0146 1CC0 xjmp L22
0148 L41:
0148 .dbline 127
0148 ; Write8Bit(rd_device_add);
0148 .dbline 127
0148 81EA ldi R24,161
014A 83B9 out 0x3,R24
014C .dbline 127
014C 84E8 ldi R24,132
014E 86BF out 0x36,R24
0150 .dbline 127
0150 .dbline 127
0150 .dbline 128
0150 L43:
0150 .dbline 128
0150 L44:
0150 .dbline 128
0150 ; Wait();
0150 26B6 in R2,0x36
0152 27FE sbrs R2,7
0154 FDCF rjmp L43
0156 .dbline 128
0156 .dbline 128
0156 .dbline 129
0156 ; if(TestAck()!=MR_SLA_ACK) return 0;
0156 81B1 in R24,0x1
0158 887F andi R24,248
015A 8034 cpi R24,64
015C 11F0 breq L46
015E .dbline 129
015E 0027 clr R16
0160 0FC0 xjmp L22
0162 L46:
0162 .dbline 130
0162 ; Twi();
0162 84E8 ldi R24,132
0164 86BF out 0x36,R24
0166 .dbline 131
0166 L48:
0166 .dbline 131
0166 L49:
0166 .dbline 131
0166 ; Wait();
0166 26B6 in R2,0x36
0168 27FE sbrs R2,7
016A FDCF rjmp L48
016C .dbline 131
016C .dbline 131
016C .dbline 132
016C ; if(TestAck()!=MR_DATA_NOACK) return 0;
016C 81B1 in R24,0x1
016E 887F andi R24,248
0170 8835 cpi R24,88
0172 11F0 breq L51
0174 .dbline 132
0174 0027 clr R16
0176 04C0 xjmp L22
0178 L51:
0178 .dbline 133
0178 ; temp=TWDR;
0178 43B1 in R20,0x3
017A .dbline 134
017A ; Stop();
017A 84E9 ldi R24,148
017C 86BF out 0x36,R24
017E .dbline 135
017E ; return temp;
017E 042F mov R16,R20
0180 .dbline -2
0180 L22:
0180 0E940000 xcall pop_gset1
0184 .dbline 0 ; func end
0184 0895 ret
0186 .dbsym r temp 20 c
0186 .dbsym r RomAddress 16 c
0186 .dbend
0186 .dbfunc e i2c_Write _i2c_Write fc
0186 ; Wdata -> R20
0186 ; RomAddress -> R22
.even
0186 _i2c_Write::
0186 0E940000 xcall push_gset2
018A 422F mov R20,R18
018C 602F mov R22,R16
018E .dbline -1
018E .dbline 144
018E ; }
018E ;
018E ; /******************************************
018E ; I2C总线写一个字节
018E ; 返回0:写成功
018E ; 返回非0:写失败
018E ; *******************************************/
018E ; unsigned char i2c_Write(unsigned char RomAddress,unsigned char Wdata)
018E ; {
018E .dbline 145
018E ; Start();
018E 84EA ldi R24,164
0190 86BF out 0x36,R24
0192 .dbline 146
0192 L54:
0192 .dbline 146
0192 L55:
0192 .dbline 146
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -