📄 test.lis
字号:
01D8 .dbline 156
01D8 ; _nop_();
01D8 0000 nop
01DA .dbline 157
01DA ; _nop_();
01DA 0000 nop
01DC .dbline 158
01DC ; PORTC &= ~(1<<SDA);
01DC 4498 cbi 0x8,4
01DE .dbline 159
01DE ; _nop_();
01DE 0000 nop
01E0 .dbline 160
01E0 ; _nop_();
01E0 0000 nop
01E2 .dbline 161
01E2 ; _nop_();
01E2 0000 nop
01E4 .dbline 162
01E4 ; _nop_();
01E4 0000 nop
01E6 .dbline 163
01E6 ; _nop_();
01E6 0000 nop
01E8 .dbline 164
01E8 ; PORTC &= ~(1<<SCL);
01E8 4598 cbi 0x8,5
01EA .dbline 165
01EA ; _nop_();
01EA 0000 nop
01EC .dbline 166
01EC ; _nop_();
01EC 0000 nop
01EE .dbline -2
01EE L16:
01EE .dbline 0 ; func end
01EE 0895 ret
01F0 .dbend
01F0 .dbfunc e Stop_I2c _Stop_I2c fV
.even
01F0 _Stop_I2c::
01F0 .dbline -1
01F0 .dbline 175
01F0 ; }
01F0 ; /*******************************************************************
01F0 ; 结束总线函数
01F0 ; 函数原型: void Stop_I2c();
01F0 ; 功能: 结束I2C总线,即发送I2C结束条件.
01F0 ;
01F0 ; ********************************************************************/
01F0 ; void Stop_I2c()
01F0 ; {
01F0 .dbline 176
01F0 ; PORTC &= ~(1<<SDA); /*发送结束条件的数据信号*/
01F0 4498 cbi 0x8,4
01F2 .dbline 177
01F2 ; _nop_(); /*发送结束条件的时钟信号*/
01F2 0000 nop
01F4 .dbline 178
01F4 ; PORTC |= (1<<SCL); /*结束条件建立时间大于4μs*/
01F4 459A sbi 0x8,5
01F6 .dbline 179
01F6 ; _nop_();
01F6 0000 nop
01F8 .dbline 180
01F8 ; _nop_();
01F8 0000 nop
01FA .dbline 181
01FA ; _nop_();
01FA 0000 nop
01FC .dbline 182
01FC ; _nop_();
01FC 0000 nop
01FE .dbline 183
01FE ; _nop_();
01FE 0000 nop
0200 .dbline 184
0200 ; PORTC |= (1<<SDA); /*发送I2C总线结束信号*/
0200 449A sbi 0x8,4
0202 .dbline 185
0202 ; _nop_();
0202 0000 nop
0204 .dbline 186
0204 ; _nop_();
0204 0000 nop
0206 .dbline 187
0206 ; _nop_();
0206 0000 nop
0208 .dbline 188
0208 ; _nop_();
0208 0000 nop
020A .dbline -2
020A L17:
020A .dbline 0 ; func end
020A 0895 ret
020C .dbend
020C .dbfunc e SendByte _SendByte fV
020C ; BitCnt -> R20
020C ; c -> R22
.even
020C _SendByte::
020C 00D0 rcall push_gset2
020E 602F mov R22,R16
0210 .dbline -1
0210 .dbline 198
0210 ; }
0210 ; /*******************************************************************
0210 ; 字节数据传送函数
0210 ; 函数原型: void SendByte(unsigned char c);
0210 ; 功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
0210 ; 此状态位进行操作.(不应答或非应答都使ack=0 假)
0210 ; 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
0210 ; ********************************************************************/
0210 ; void SendByte(unsigned char c)
0210 ; {
0210 .dbline 200
0210 ; unsigned char BitCnt;
0210 ; for(BitCnt=0;BitCnt<8;BitCnt++) /*要传送的数据长度为8位*/
0210 4427 clr R20
0212 13C0 rjmp L22
0214 L19:
0214 .dbline 201
0214 ; {
0214 .dbline 202
0214 ; if((c<<BitCnt)&0x80){PORTC |= (1<<SDA);} /*判断发送位*/
0214 062F mov R16,R22
0216 142F mov R17,R20
0218 00D0 rcall lsl8
021A 802F mov R24,R16
021C 8078 andi R24,128
021E 11F0 breq L23
0220 .dbline 202
0220 .dbline 202
0220 449A sbi 0x8,4
0222 .dbline 202
0222 01C0 rjmp L24
0224 L23:
0224 .dbline 203
0224 ; else {PORTC &= ~(1<<SDA);}
0224 .dbline 203
0224 4498 cbi 0x8,4
0226 .dbline 203
0226 L24:
0226 .dbline 204
0226 0000 nop
0228 .dbline 205
0228 459A sbi 0x8,5
022A .dbline 206
022A 0000 nop
022C .dbline 207
022C 0000 nop
022E .dbline 208
022E 0000 nop
0230 .dbline 209
0230 0000 nop
0232 .dbline 210
0232 0000 nop
0234 .dbline 211
0234 0000 nop
0236 .dbline 212
0236 4598 cbi 0x8,5
0238 .dbline 213
0238 L20:
0238 .dbline 200
0238 4395 inc R20
023A L22:
023A .dbline 200
023A 4830 cpi R20,8
023C 58F3 brlo L19
023E .dbline 215
023E ; _nop_();
023E ; PORTC |= (1<<SCL); /*置时钟线为高,通知被控器开始接收数据位*/
023E ; _nop_();
023E ; _nop_(); /*保证时钟高电平周期大于4μs*/
023E ; _nop_();
023E ; _nop_();
023E ; _nop_();
023E ; _nop_();
023E ; PORTC &= ~(1<<SCL);
023E ; }
023E ;
023E ; _nop_();
023E 0000 nop
0240 .dbline 216
0240 ; _nop_();
0240 0000 nop
0242 .dbline 217
0242 ; _nop_();
0242 0000 nop
0244 .dbline 218
0244 ; PORTC |= (1<<SDA); /*8位发送完后释放数据线,准备接收应答位*/
0244 449A sbi 0x8,4
0246 .dbline 219
0246 ; _nop_();
0246 0000 nop
0248 .dbline 220
0248 ; _nop_();
0248 0000 nop
024A .dbline 221
024A ; _nop_();
024A 0000 nop
024C .dbline 222
024C ; PORTC |= (1<<SCL);
024C 459A sbi 0x8,5
024E .dbline 223
024E ; _nop_();
024E 0000 nop
0250 .dbline 224
0250 ; _nop_();
0250 0000 nop
0252 .dbline 225
0252 ; _nop_();
0252 0000 nop
0254 .dbline 226
0254 ; _nop_();
0254 0000 nop
0256 .dbline 227
0256 ; _nop_();
0256 0000 nop
0258 .dbline 228
0258 ; if((PINC&(1<<SDA))==1){temp &= ~(1<<ack);}
0258 86B1 in R24,0x6
025A 8071 andi R24,16
025C 8130 cpi R24,1
025E 31F4 brne L25
0260 .dbline 228
0260 .dbline 228
0260 80911600 lds R24,_temp
0264 8E7F andi R24,254
0266 80931600 sts _temp,R24
026A .dbline 228
026A 05C0 rjmp L26
026C L25:
026C .dbline 229
026C ; else {temp |= (1<<ack);} /*判断是否接收到应答信号*/
026C .dbline 229
026C 80911600 lds R24,_temp
0270 8160 ori R24,1
0272 80931600 sts _temp,R24
0276 .dbline 229
0276 L26:
0276 .dbline 230
0276 ; PORTC &= ~(1<<SCL);
0276 4598 cbi 0x8,5
0278 .dbline 231
0278 ; _nop_();
0278 0000 nop
027A .dbline 232
027A ; _nop_();
027A 0000 nop
027C .dbline 233
027C ; _nop_();
027C 0000 nop
027E .dbline 234
027E ; _nop_();
027E 0000 nop
0280 .dbline -2
0280 L18:
0280 00D0 rcall pop_gset2
0282 .dbline 0 ; func end
0282 0895 ret
0284 .dbsym r BitCnt 20 c
0284 .dbsym r c 22 c
0284 .dbend
0284 .dbfunc e TC1321_SET _TC1321_SET fI
0284 ; tem -> y+0
0284 ; i -> R20
0284 ; DA_SET -> R20,R21
.even
0284 _TC1321_SET::
0284 00D0 rcall push_gset1
0286 A801 movw R20,R16
0288 2497 sbiw R28,4
028A .dbline -1
028A .dbline 243
028A ; }
028A ; /*******************************************************************
028A ; 向有子地址器件发送多字节数据函数
028A ; 函数原型: bit TC1321_SET(unsigned int DA_SET);
028A ; 功能: 设定TC1321的DATA寄存器,从而控制输出所设定的电压值:(DA_SET/1024)*VREF.
028A ; 注意:
028A ; ****************************14.3V时候的D/A输出值*******************************/
028A ; TC1321_SET(unsigned int DA_SET)
028A ; {
028A .dbline 246
028A ; unsigned char i;
028A ; unsigned char tem[4];
028A ; temp_det();
028A E0D0 rcall _temp_det
028C .dbline 247
028C ; _nop_();
028C 0000 nop
028E .dbline 248
028E ; temp_det();
028E DED0 rcall _temp_det
0290 .dbline 249
0290 ; _nop_();
0290 0000 nop
0292 .dbline 250
0292 ; xxyy=now_temp-5;
0292 80910700 lds R24,_now_temp
0296 90910800 lds R25,_now_temp+1
029A 0597 sbiw R24,5
029C 90931C00 sts _xxyy+1,R25
02A0 80931B00 sts _xxyy,R24
02A4 .dbline 251
02A4 ; DA_SET=ABC[xxyy];
02A4 9C01 movw R18,R24
02A6 02E0 ldi R16,2
02A8 10E0 ldi R17,0
02AA 00D0 rcall empy16s
02AC F801 movw R30,R16
02AE 80E0 ldi R24,<_ABC
02B0 90E0 ldi R25,>_ABC
02B2 E80F add R30,R24
02B4 F91F adc R31,R25
02B6 4591 lpm R20,Z+
02B8 5491 lpm R21,Z
02BA .dbline 253
02BA ;
02BA ; if(now_temp <6)
02BA 80910700 lds R24,_now_temp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -