📄 toucher2.lis
字号:
0268 ; /********************编号打印*******************/
0268 ; void num_print(uchar temp)
0268 ; {
0268 .dbline 347
0268 ; uchar temp1=0;
0268 6627 clr R22
026A .dbline 348
026A ; uchar temp2=0;
026A 4427 clr R20
026C .dbline 349
026C ; temp1=temp/10+0x30; //编号高位
026C 1AE0 ldi R17,10
026E 0A2D mov R16,R10
0270 0E940000 xcall div8u
0274 602F mov R22,R16
0276 605D subi R22,208 ; addi 48
0278 .dbline 350
0278 ; temp2=temp%10+0x30; //编号低位
0278 1AE0 ldi R17,10
027A 0A2D mov R16,R10
027C 0E940000 xcall mod8u
0280 402F mov R20,R16
0282 405D subi R20,208 ; addi 48
0284 .dbline 351
0284 ; write_print(temp1); //显示编号高位
0284 062F mov R16,R22
0286 BCDE xcall _write_print
0288 .dbline 352
0288 ; write_print(temp2); //显示编号低位
0288 042F mov R16,R20
028A BADE xcall _write_print
028C .dbline -2
028C L51:
028C 0E940000 xcall pop_gset3
0290 .dbline 0 ; func end
0290 0895 ret
0292 .dbsym r temp2 20 c
0292 .dbsym r temp1 22 c
0292 .dbsym r temp 10 c
0292 .dbend
0292 .dbfunc e clarm_print _clarm_print fV
0292 ; temp -> R20,R21
0292 ; kkk -> R22
0292 ; addr_unit -> R10,R11
0292 ; addr_gas -> R12,R13
0292 ; temp1 -> R14,R15
0292 ; clarm_buff -> y+21
0292 ; a -> y+5
0292 ; c -> y+38
.even
0292 _clarm_print::
0292 0E940000 xcall push_gset5
0296 A797 sbiw R28,39
0298 .dbline -1
0298 .dbline 358
0298 ; }
0298 ;
0298 ; /***********************报警记录打印***************************/
0298 ;
0298 ; void clarm_print(void)
0298 ; {
0298 .dbline 360
0298 ; uchar a[16];
0298 ; uchar c=0;
0298 0024 clr R0
029A 0EA2 std y+38,R0
029C .dbline 361
029C ; uchar kkk=0;
029C 6627 clr R22
029E .dbline 362
029E ; uint temp=0;
029E 4427 clr R20
02A0 5527 clr R21
02A2 .dbline 363
02A2 ; uint temp1=0;
02A2 EE24 clr R14
02A4 FF24 clr R15
02A6 .dbline 364
02A6 ; uint addr_gas=0x5c00; //外部E2中存放气体类型的初始地址
02A6 80E0 ldi R24,23552
02A8 9CE5 ldi R25,92
02AA 6C01 movw R12,R24
02AC .dbline 365
02AC ; uint addr_unit=0x6100; //外部E2中存放浓度单位的初始地址
02AC 91E6 ldi R25,97
02AE 5C01 movw R10,R24
02B0 .dbline 368
02B0 ; uchar clarm_buff[17]; //取报警信息暂时用
02B0 ;
02B0 ; temp1=baojingaddr+16;
02B0 80910000 lds R24,_baojingaddr
02B4 90910100 lds R25,_baojingaddr+1
02B8 4096 adiw R24,16
02BA 7C01 movw R14,R24
02BC .dbline 369
02BC ; if(temp1==0x4280) //到头
02BC 8038 cpi R24,128
02BE E2E4 ldi R30,66
02C0 9E07 cpc R25,R30
02C2 19F4 brne L53
02C4 .dbline 370
02C4 ; temp1=0x0400; //调整
02C4 80E0 ldi R24,1024
02C6 94E0 ldi R25,4
02C8 7C01 movw R14,R24
02CA L53:
02CA .dbline 371
02CA ; int_prt();
02CA ACDE xcall _int_prt
02CC .dbline 372
02CC ; for(kkk=0;kkk<8;kkk++)
02CC 6627 clr R22
02CE 44C1 xjmp L58
02D0 L55:
02D0 .dbline 373
02D0 ; {
02D0 .dbline 374
02D0 ; wdr();
02D0 0E940000 xcall _wdr
02D4 .dbline 376
02D4 ; /********************************************************/
02D4 ; clarm_buff[1]= (uchar)((temp1>>8)&0x00ff ) ; //FM24C256片内地址高位字节
02D4 C701 movw R24,R14
02D6 892F mov R24,R25
02D8 9927 clr R25
02DA 9070 andi R25,0
02DC 8E8B std y+22,R24
02DE .dbline 377
02DE ; clarm_buff[2]= (uchar)(temp1&0x00ff) ; //FM24C256片内地址低位字节
02DE C701 movw R24,R14
02E0 9070 andi R25,0
02E2 8F8B std y+23,R24
02E4 .dbline 378
02E4 ; EIMSK&=~(1<<INT6);
02E4 89B7 in R24,0x39
02E6 8F7B andi R24,191
02E8 89BF out 0x39,R24
02EA .dbline 380
02EA ; //do
02EA ; fhz=I2cRead( SLA2_W,SLA2_R , clarm_buff[1],clarm_buff[2],16);
02EA 80E1 ldi R24,16
02EC 8C83 std y+4,R24
02EE 2F88 ldd R2,y+23
02F0 2A82 std y+2,R2
02F2 2E88 ldd R2,y+22
02F4 2882 std y+0,R2
02F6 23EA ldi R18,163
02F8 02EA ldi R16,162
02FA 0E940000 xcall _I2cRead
02FE 00930000 sts _fhz,R16
0302 .dbline 383
0302 ; //while(fhz==1);
0302 ;
0302 ; for(c=0;c<16;c++)
0302 0024 clr R0
0304 0EA2 std y+38,R0
0306 11C0 xjmp L66
0308 L63:
0308 .dbline 384
0308 80E0 ldi R24,<_i2c_rd_buff
030A 90E0 ldi R25,>_i2c_rd_buff
030C EEA1 ldd R30,y+38
030E FF27 clr R31
0310 E80F add R30,R24
0312 F91F adc R31,R25
0314 2080 ldd R2,z+0
0316 CE01 movw R24,R28
0318 0596 adiw R24,5
031A EEA1 ldd R30,y+38
031C FF27 clr R31
031E E80F add R30,R24
0320 F91F adc R31,R25
0322 2082 std z+0,R2
0324 L64:
0324 .dbline 383
0324 0EA0 ldd R0,y+38
0326 0394 inc R0
0328 0EA2 std y+38,R0
032A L66:
032A .dbline 383
032A 8EA1 ldd R24,y+38
032C 8031 cpi R24,16
032E 60F3 brlo L63
0330 .dbline 385
0330 ; a[c]=i2c_rd_buff[c] ; //
0330 ; EIMSK|=(1<<INT6);
0330 89B7 in R24,0x39
0332 8064 ori R24,64
0334 89BF out 0x39,R24
0336 .dbline 386
0336 ; if(temp1==0x4270) //到头
0336 C701 movw R24,R14
0338 8037 cpi R24,112
033A E2E4 ldi R30,66
033C 9E07 cpc R25,R30
033E 21F4 brne L67
0340 .dbline 387
0340 ; temp1=0x0400; //调整
0340 80E0 ldi R24,1024
0342 94E0 ldi R25,4
0344 7C01 movw R14,R24
0346 03C0 xjmp L68
0348 L67:
0348 .dbline 389
0348 ; else
0348 ; temp1=temp1+16 ; //调整
0348 C701 movw R24,R14
034A 4096 adiw R24,16
034C 7C01 movw R14,R24
034E L68:
034E .dbline 391
034E ; /****************从外部E2中读取气体类型**********************/
034E ; addr_gas=addr_gas+baojing[0]*32+baojing[1]-1;
034E 20900000 lds R2,_baojing
0352 80E2 ldi R24,32
0354 829D mul R24,R2
0356 C601 movw R24,R12
0358 800D add R24,R0
035A 911D adc R25,R1
035C 20900100 lds R2,_baojing+1
0360 3324 clr R3
0362 820D add R24,R2
0364 931D adc R25,R3
0366 0197 sbiw R24,1
0368 6C01 movw R12,R24
036A .dbline 392
036A ; clarm_buff[1]= (uchar)((addr_gas>>8)&0x00ff ) ; //FM24C256片内地址高位字节
036A 892F mov R24,R25
036C 9927 clr R25
036E 9070 andi R25,0
0370 8E8B std y+22,R24
0372 .dbline 393
0372 ; clarm_buff[2]= (uchar)(addr_gas&0x00ff) ; //FM24C256片内地址低位字节
0372 C601 movw R24,R12
0374 9070 andi R25,0
0376 8F8B std y+23,R24
0378 .dbline 394
0378 ; EIMSK&=~(1<<INT6);
0378 89B7 in R24,0x39
037A 8F7B andi R24,191
037C 89BF out 0x39,R24
037E .dbline 396
037E ; //do
037E ; fhz=I2cRead( SLA2_W,SLA2_R , clarm_buff[1],clarm_buff[2],1);
037E 81E0 ldi R24,1
0380 8C83 std y+4,R24
0382 2F88 ldd R2,y+23
0384 2A82 std y+2,R2
0386 2E88 ldd R2,y+22
0388 2882 std y+0,R2
038A 23EA ldi R18,163
038C 02EA ldi R16,162
038E 0E940000 xcall _I2cRead
0392 00930000 sts _fhz,R16
0396 .dbline 399
0396 ; //while(fhz==1);
0396 ;
0396 ; gas_type=i2c_rd_buff[0] ; //将读出的气体类型放入gas_type中
0396 20900000 lds R2,_i2c_rd_buff
039A 20920000 sts _gas_type,R2
039E .dbline 400
039E ; EIMSK|=(1<<INT6);
039E 89B7 in R24,0x39
03A0 8064 ori R24,64
03A2 89BF out 0x39,R24
03A4 .dbline 402
03A4 ; /***************从外部E2中读取浓度单位**************************/
03A4 ; addr_unit=addr_unit+baojing[0]*32+baojing[1]-1;
03A4 20900000 lds R2,_baojing
03A8 80E2 ldi R24,32
03AA 829D mul R24,R2
03AC C501 movw R24,R10
03AE 800D add R24,R0
03B0 911D adc R25,R1
03B2 20900100 lds R2,_baojing+1
03B6 3324 clr R3
03B8 820D add R24,R2
03BA 931D adc R25,R3
03BC 0197 sbiw R24,1
03BE 5C01 movw R10,R24
03C0 .dbline 403
03C0 ; clarm_buff[1]= (uchar)((addr_unit>>8)&0x00ff ) ; //FM24C256片内地址高位字节
03C0 892F mov R24,R25
03C2 9927 clr R25
03C4 9070 andi R25,0
03C6 8E8B std y+22,R24
03C8 .dbline 404
03C8 ; clarm_buff[2]= (uchar)(addr_unit&0x00ff) ; //FM24C256片内地址低位字节
03C8 C501 movw R24,R10
03CA 9070 andi R25,0
03CC 8F8B std y+23,R24
03CE .dbline 405
03CE ; EIMSK&=~(1<<INT6);
03CE 89B7 in R24,0x39
03D0 8F7B andi R24,191
03D2 89BF out 0x39,R24
03D4 .dbline 407
03D4 ; //do
03D4 ; fhz=I2cRead( SLA2_W,SLA2_R , clarm_buff[1],clarm_buff[2],1);
03D4 81E0 ldi R24,1
03D6 8C83 std y+4,R24
03D8 2F88 ldd R2,y+23
03DA 2A82 std y+2,R2
03DC 2E88 ldd R2,y+22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -