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

📄 tmp.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 011E           ;              r -> R14
 011E           ;           cbit -> y+0
 011E           ;           bit0 -> R8
 011E           ;              i -> R10
 011E           ;           byte -> R12
 011E           ;           temp -> R22
 011E           ;            len -> R6
 011E           ;              p -> R4,R5
                        .even
 011E           _crccheck::
 011E 0E940000          xcall push_gset5
 0122 622E              mov R6,R18
 0124 2801              movw R4,R16
 0126 2197              sbiw R28,1
 0128           ;               write(p[i]);
 0128           ;       }
 0128           ;       
 0128           ;       unsigned char crccheck(unsigned char *p,unsigned char len)
 0128           ;       {
 0128           ;               unsigned char bit0,cbit,r,temp,i,j,byte;
 0128           ;               temp=0;
 0128 6627              clr R22
 012A           ;               for(j=0;j<len;j++)
 012A 4427              clr R20
 012C 20C0              xjmp L40
 012E           L37:
 012E           ; 		{
 012E           ; 			byte=p[j];
 012E E42F              mov R30,R20
 0130 FF27              clr R31
 0132 E40D              add R30,R4
 0134 F51D              adc R31,R5
 0136 C080              ldd R12,z+0
 0138           ;                       for(i=0;i<8;i++)
 0138 AA24              clr R10
 013A 15C0              xjmp L44
 013C           L41:
 013C           ; 			{
 013C           ; 				cbit=temp&0x01;
 013C 862F              mov R24,R22
 013E 8170              andi R24,1
 0140 8883              std y+0,R24
 0142           ;                               bit0=byte&0x01;
 0142 8C2D              mov R24,R12
 0144 8170              andi R24,1
 0146 882E              mov R8,R24
 0148           ;                               temp=temp>>1;
 0148 6695              lsr R22
 014A           ;                               r=cbit^bit0;
 014A E880              ldd R14,y+0
 014C E826              eor R14,R24
 014E           ;                               if(r==1)
 014E 8E2D              mov R24,R14
 0150 8130              cpi R24,1
 0152 39F4              brne L45
 0154           ;                               temp=temp^0x8c;
 0154 8CE8              ldi R24,140
 0156 90E0              ldi R25,0
 0158 262E              mov R2,R22
 015A 3324              clr R3
 015C 2826              eor R2,R24
 015E 3926              eor R3,R25
 0160 622D              mov R22,R2
 0162           L45:
 0162 C694              lsr R12
 0164           L42:
 0164 A394              inc R10
 0166           L44:
 0166 8A2D              mov R24,R10
 0168 8830              cpi R24,8
 016A 40F3              brlo L41
 016C           L38:
 016C 4395              inc R20
 016E           L40:
 016E 4615              cp R20,R6
 0170 F0F2              brlo L37
 0172           ;                               byte=byte>>1;
 0172           ;                       }
 0172           ;               }
 0172           ;               return temp;
 0172 062F              mov R16,R22
 0174           L36:
 0174 2196              adiw R28,1
 0176 0E940000          xcall pop_gset5
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C           ;          check -> R10
 017C           ;          temp0 -> R12
 017C           ;            crc -> R20
 017C           ;           temp -> y+17
 017C           ;         asctop -> R14,R15
 017C           ;        romcode -> y+9
 017C           ;             ds -> y+0
 017C           ;              i -> R22
                        .even
 017C           _get_tmp::
 017C 0E940000          xcall push_gset5
 0180 6297              sbiw R28,18
 0182           ;       }
 0182           ;       
 0182           ;       /*void asctocon(unsigned char *p,unsigned char len)
 0182           ;       {
 0182           ;               unsigned char i,temp;
 0182           ;               for(i=0;i<len;i++)
 0182           ;               {
 0182           ;                       temp=p[len-1-i]&0xf0;
 0182           ;                       temp=temp>>4;
 0182           ;                       lcd_putc(table[temp]);
 0182           ;                       temp=p[len-1-i]&0x0f;
 0182           ;                       lcd_putc(table[temp]);
 0182           ;               }
 0182           ;       }*/
 0182           ;       
 0182           ;  unsigned char get_tmp()
 0182           ;       {
 0182           ;               unsigned char i,crc,check;
 0182           ;               unsigned char ds[9];
 0182           ;               unsigned char romcode[8];
 0182           ;               unsigned char *asctop;
 0182           ;               unsigned char temp,temp0;
 0182           ;               //unsigned int temp;
 0182           ;               
 0182           ;               //MCUCR=0x00;
 0182           ;               //lcd_init();
 0182           ;               //lcd_clear();
 0182           ;               //lcd_gotoxy(0,0);
 0182           ;               //lcd_puts("SERIAL NUMBER IS");
 0182           ;                               
 0182           ;               ack();
 0182 57DF              xcall _ack
 0184           ;               
 0184           ;               write(0x33);
 0184 03E3              ldi R16,51
 0186 6EDF              xcall _write
 0188           ;               for(i=0;i<8;i++)
 0188 6627              clr R22
 018A 09C0              xjmp L51
 018C           L48:
 018C 8FDF              xcall _read
 018E CE01              movw R24,R28
 0190 0996              adiw R24,9
 0192 E62F              mov R30,R22
 0194 FF27              clr R31
 0196 E80F              add R30,R24
 0198 F91F              adc R31,R25
 019A 0083              std z+0,R16
 019C           L49:
 019C 6395              inc R22
 019E           L51:
 019E 6830              cpi R22,8
 01A0 A8F3              brlo L48
 01A2           ;               romcode[i]=read();
 01A2           ;               
 01A2           ;       
 01A2           ;               
 01A2           ;               //asctop=&romcod[0];
 01A2           ;               //crc=crccheck(asctop,8);
 01A2           ;               //if(crc==0x00)
 01A2           ;               //{
 01A2           ;               //      lcd_gotoxy(0,1);
 01A2           ;               //      asctop=&romcode[0];
 01A2           ;               //      asctocon(asctop,8);
 01A2           ;               //}
 01A2           ;               //delay(2000);
 01A2           ;               //while(1)
 01A2           ;               //{
 01A2           ;                       asctop=&romcode[0];
 01A2 CE01              movw R24,R28
 01A4 0996              adiw R24,9
 01A6           ;                       match(asctop);
 01A6 8C01              movw R16,R24
 01A8 A6DF              xcall _match
 01AA           ;                       write(0x44);
 01AA 04E4              ldi R16,68
 01AC 5BDF              xcall _write
 01AE           ;                       delay_18b20(400);
 01AE 00E9              ldi R16,400
 01B0 11E0              ldi R17,1
 01B2 2EDF              xcall _delay_18b20
 01B4           ;                       asctop=&romcode[0];
 01B4 CE01              movw R24,R28
 01B6 0996              adiw R24,9
 01B8 7C01              movw R14,R24
 01BA           ;                       match(asctop);
 01BA 8C01              movw R16,R24
 01BC 9CDF              xcall _match
 01BE           ;                       write(0xbe);
 01BE 0EEB              ldi R16,190
 01C0 51DF              xcall _write
 01C2           ;                       for(i=0;i<9;i++)
 01C2 6627              clr R22
 01C4 08C0              xjmp L55
 01C6           L52:
 01C6 72DF              xcall _read
 01C8 CE01              movw R24,R28
 01CA E62F              mov R30,R22
 01CC FF27              clr R31
 01CE E80F              add R30,R24
 01D0 F91F              adc R31,R25
 01D2 0083              std z+0,R16
 01D4           L53:
 01D4 6395              inc R22
 01D6           L55:
 01D6 6930              cpi R22,9
 01D8 B0F3              brlo L52
 01DA           ;                       ds[i]=read();
 01DA           ;                       //lcd_clear();
 01DA           ;                       //lcd_puts("Thermometer");
 01DA           ;                       asctop=&ds[0];
 01DA CE01              movw R24,R28
 01DC 7C01              movw R14,R24
 01DE           ;                       crc=crccheck(asctop,9);
 01DE 29E0              ldi R18,9
 01E0 8C01              movw R16,R24
 01E2 9DDF              xcall _crccheck
 01E4 402F              mov R20,R16
 01E6           ;                       if(crc==0x00)
 01E6 0023              tst R16
 01E8 D1F4              brne L56
 01EA           ;                       {
 01EA           ;                               temp0=ds[0];
 01EA C880              ldd R12,y+0
 01EC           ;                               temp=ds[1];
 01EC 2980              ldd R2,y+1
 01EE 298A              std y+17,R2
 01F0           ;                               check=temp&0xf8;
 01F0 822D              mov R24,R2
 01F2 887F              andi R24,248
 01F4 A82E              mov R10,R24
 01F6           ;                               if(check==0x00)
 01F6 8823              tst R24
 01F8 81F4              brne L59
 01FA           ;                               {
 01FA           ;                                       temp0=temp0&0xf8;
 01FA 8C2D              mov R24,R12
 01FC 887F              andi R24,248
 01FE C82E              mov R12,R24
 0200           ;                                       temp0=temp0>>3;
 0200 C694              lsr R12
 0202 C694              lsr R12
 0204 C694              lsr R12
 0206           ;                                       temp=temp<<5;
 0206 022C              mov R0,R2
 0208 000C              lsl R0
 020A 000C              lsl R0
 020C 000C              lsl R0
 020E 000C              lsl R0
 0210 000C              lsl R0
 0212 098A              std y+17,R0
 0214           ;                                       temp=temp|temp0;
 0214 0C28              or R0,R12
 0216 098A              std y+17,R0
 0218           ;                                       //temp=temp-0x01;
 0218           ;                                       //temp=ds[0];
 0218           ;                               }
 0218 02C0              xjmp L60
 021A           L59:
 021A           ; 				else
 021A           ; 				{
 021A           ; 					temp=0x00;
 021A 0024              clr R0
 021C 098A              std y+17,R0
 021E           ;                               }
 021E           L60:
 021E           ; 				//asctop=&ds[0];
 021E           ; 				//asctocon(asctop,2);
 021E           ; 			}
 021E           L56:
 021E           ; 			/*if(crc==0x00)
 021E           ; 			{
 021E           ; 				temp=ds[1];
 021E           ; 				temp=temp<<8;
 021E           ; 				temp+=ds[0];
 021E           ; 				asctop=&ds[0];
 021E           ; 				asctocon(asctop,2);
 021E           ; 			}
 021E           ; 			lcd_gotoxy(0,1);
 021E           ; 			if((temp&0xf800)!=0)
 021E           ; 			{
 021E           ; 				temp=0-temp;
 021E           ; 				lcd_puts("-");
 021E           ; 			}
 021E           ; 			else
 021E           ; 			        lcd_puts("+");
 021E           ; 			crc=temp/16;
 021E           ; 			for(i=0;i<3;i++)
 021E           ; 			{
 021E           ; 				ds[2-i]=table[crc%10];
 021E           ; 				crc=crc/10;
 021E           ; 			}
 021E           ; 			ds[3]='.';
 021E           ; 			crc=temp%16;
 021E           ; 			crc=crc*10;
 021E           ; 			ds[4]=table[crc/16];
 021E           ; 			ds[5]=0xdf;
 021E           ; 			ds[6]='C';*/
 021E           ; 		//}
 021E           ; 		return(temp);
 021E 0989              ldd R16,y+17
 0220           L47:
 0220 6296              adiw R28,18
 0222 0E940000          xcall pop_gset5
 0226                   .dbline 0 ; func end
 0226 0895              ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -