⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toucher2.lis

📁 基于PIC单片机
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -