📄 1820.lis
字号:
036C 8A83 std y+2,R24
036E .dbline 349
036E ; temp=temp%1000;
036E 28EE ldi R18,1000
0370 33E0 ldi R19,3
0372 8501 movw R16,R10
0374 0E940000 xcall mod16u
0378 5801 movw R10,R16
037A .dbline 350
037A ; T[1]='0'+temp/100;
037A 24E6 ldi R18,100
037C 30E0 ldi R19,0
037E 0E940000 xcall div16u
0382 C801 movw R24,R16
0384 C096 adiw R24,48
0386 8B83 std y+3,R24
0388 .dbline 351
0388 ; temp=temp%100;
0388 24E6 ldi R18,100
038A 30E0 ldi R19,0
038C 8501 movw R16,R10
038E 0E940000 xcall mod16u
0392 5801 movw R10,R16
0394 .dbline 352
0394 ; T[2]='.';
0394 8EE2 ldi R24,46
0396 8C83 std y+4,R24
0398 .dbline 353
0398 ; T[3]='0'+temp/10;
0398 2AE0 ldi R18,10
039A 30E0 ldi R19,0
039C 0E940000 xcall div16u
03A0 C801 movw R24,R16
03A2 C096 adiw R24,48
03A4 8D83 std y+5,R24
03A6 .dbline 354
03A6 ; temp=temp%10;
03A6 2AE0 ldi R18,10
03A8 30E0 ldi R19,0
03AA 8501 movw R16,R10
03AC 0E940000 xcall mod16u
03B0 5801 movw R10,R16
03B2 .dbline 355
03B2 ; T[4]='0'+temp/1;
03B2 C501 movw R24,R10
03B4 C096 adiw R24,48
03B6 8E83 std y+6,R24
03B8 .dbline 356
03B8 ; LCD_write_string(i,j,T);
03B8 CE01 movw R24,R28
03BA 0296 adiw R24,2
03BC 9983 std y+1,R25
03BE 8883 std y+0,R24
03C0 262F mov R18,R22
03C2 042F mov R16,R20
03C4 8DDE xcall _LCD_write_string
03C6 .dbline -2
03C6 L46:
03C6 2B96 adiw R28,11
03C8 0E940000 xcall pop_gset4
03CC .dbline 0 ; func end
03CC 0895 ret
03CE .dbsym l l 3 c
03CE .dbsym l T 2 A[5:5]c
03CE .dbsym r temp 10 i
03CE .dbsym l num 19 D
03CE .dbsym r j 22 c
03CE .dbsym r i 20 c
03CE .dbend
03CE .dbfunc e delay_1us _delay_1us fV
.even
03CE _delay_1us::
03CE .dbline -1
03CE .dbline 386
03CE ;
03CE ; }
03CE ; /*void displayTemp(char x,char y,float num)
03CE ; {
03CE ; /*uint Tempp=num*10;
03CE ; char s[3],i;
03CE ; for(i=0;i<3;i++)
03CE ; {
03CE ; s[i]= Tempp%10;
03CE ; Tempp=Tempp/10;
03CE ; }
03CE ; for(i=0;i<4;i++)
03CE ; {
03CE ; if(i<2)
03CE ; LCD_write_char(x++,y,s[2-i]+'0');
03CE ; if(i==2)
03CE ; LCD_write_char(x++, y,'.');
03CE ; if(i==3)
03CE ; LCD_write_char(x++,y,s[0]+'0');
03CE ; }
03CE ; }*/
03CE ; /******************************************************************************
03CE ; DS18B20驱动程序
03CE ; ******************************************************************************/
03CE ;
03CE ;
03CE ;
03CE ; //********************延时函数
03CE ; void delay_1us(void) //1us延时函数
03CE ; {
03CE .dbline 387
03CE ; asm("nop");
03CE 0000 nop
03D0 .dbline -2
03D0 L55:
03D0 .dbline 0 ; func end
03D0 0895 ret
03D2 .dbend
03D2 .dbfunc e delay_nus _delay_nus fV
03D2 ; i -> R20,R21
03D2 ; n -> R22,R23
.even
03D2 _delay_nus::
03D2 0E940000 xcall push_gset2
03D6 B801 movw R22,R16
03D8 .dbline -1
03D8 .dbline 391
03D8 ; }
03D8 ;
03D8 ; void delay_nus(unsigned int n) //N us延时函数
03D8 ; {
03D8 .dbline 392
03D8 ; unsigned int i=0;
03D8 4427 clr R20
03DA 5527 clr R21
03DC .dbline 393
03DC ; for (i=0;i<n;i++)
03DC 03C0 xjmp L60
03DE L57:
03DE .dbline 394
03DE F7DF xcall _delay_1us
03E0 L58:
03E0 .dbline 393
03E0 4F5F subi R20,255 ; offset = 1
03E2 5F4F sbci R21,255
03E4 L60:
03E4 .dbline 393
03E4 4617 cp R20,R22
03E6 5707 cpc R21,R23
03E8 D0F3 brlo L57
03EA .dbline -2
03EA L56:
03EA 0E940000 xcall pop_gset2
03EE .dbline 0 ; func end
03EE 0895 ret
03F0 .dbsym r i 20 i
03F0 .dbsym r n 22 i
03F0 .dbend
03F0 .dbfunc e delay_1ms _delay_1ms fV
03F0 ; i -> R16,R17
.even
03F0 _delay_1ms::
03F0 .dbline -1
03F0 .dbline 398
03F0 ; delay_1us();
03F0 ; }
03F0 ;
03F0 ; void delay_1ms(void) //1ms延时函数
03F0 ; {
03F0 .dbline 400
03F0 0027 clr R16
03F2 1127 clr R17
03F4 02C0 xjmp L65
03F6 L62:
03F6 .dbline 400
03F6 L63:
03F6 .dbline 400
03F6 0F5F subi R16,255 ; offset = 1
03F8 1F4F sbci R17,255
03FA L65:
03FA .dbline 400
03FA ; unsigned int i;
03FA ; for (i=0;i<1140;i++);
03FA 0437 cpi R16,116
03FC E4E0 ldi R30,4
03FE 1E07 cpc R17,R30
0400 D0F3 brlo L62
0402 .dbline -2
0402 L61:
0402 .dbline 0 ; func end
0402 0895 ret
0404 .dbsym r i 16 i
0404 .dbend
0404 .dbfunc e delay_nms _delay_nms fV
0404 ; i -> R20,R21
0404 ; n -> R22,R23
.even
0404 _delay_nms::
0404 0E940000 xcall push_gset2
0408 B801 movw R22,R16
040A .dbline -1
040A .dbline 404
040A ; }
040A ;
040A ; void delay_nms(unsigned int n) //N ms延时函数
040A ; {
040A .dbline 405
040A ; unsigned int i=0;
040A 4427 clr R20
040C 5527 clr R21
040E .dbline 406
040E ; for (i=0;i<n;i++)
040E 03C0 xjmp L70
0410 L67:
0410 .dbline 407
0410 EFDF xcall _delay_1ms
0412 L68:
0412 .dbline 406
0412 4F5F subi R20,255 ; offset = 1
0414 5F4F sbci R21,255
0416 L70:
0416 .dbline 406
0416 4617 cp R20,R22
0418 5707 cpc R21,R23
041A D0F3 brlo L67
041C .dbline -2
041C L66:
041C 0E940000 xcall pop_gset2
0420 .dbline 0 ; func end
0420 0895 ret
0422 .dbsym r i 20 i
0422 .dbsym r n 22 i
0422 .dbend
0422 .dbfunc e port_init _port_init fV
.even
0422 _port_init::
0422 .dbline -1
0422 .dbline 413
0422 ; delay_1ms();
0422 ; }
0422 ; //********************延时函数
0422 ;
0422 ; //端口初始化
0422 ; void port_init(void)
0422 ; {
0422 .dbline 414
0422 ; PORTA = 0xff;
0422 8FEF ldi R24,255
0424 8BBB out 0x1b,R24
0426 .dbline 415
0426 ; DDRA = 0xff;
0426 8ABB out 0x1a,R24
0428 .dbline 416
0428 ; PORTB = 0x00;
0428 2224 clr R2
042A 28BA out 0x18,R2
042C .dbline 417
042C ; DDRB = 0xff;
042C 87BB out 0x17,R24
042E .dbline 418
042E ; PORTD = 0xff;
042E 82BB out 0x12,R24
0430 .dbline 419
0430 ; DDRD = 0xe0;
0430 80EE ldi R24,224
0432 81BB out 0x11,R24
0434 .dbline -2
0434 L71:
0434 .dbline 0 ; func end
0434 0895 ret
0436 .dbend
0436 .dbfunc e main _main fI
0436 ; i -> y+4
.even
0436 _main::
0436 2897 sbiw R28,8
0438 .dbline -1
0438 .dbline 424
0438 ; }
0438 ;
0438 ; //主函数
0438 ; main()
0438 ; {
0438 .dbline 425
0438 ; float i=0;
0438 00E0 ldi R16,<L73
043A 10E0 ldi R17,>L73
043C 0E940000 xcall lpm32
0440 FE01 movw R30,R28
0442 0483 std z+4,R16
0444 1583 std z+5,R17
0446 2683 std z+6,R18
0448 3783 std z+7,R19
044A .dbline 427
044A ; //port_init();
044A ; LCD_init();
044A DADD xcall _LCD_init
044C .dbline 429
044C ;
044C ; LCD_write_string(0,0 ,"welcome");
044C 80E0 ldi R24,<L74
044E 90E0 ldi R25,>L74
0450 9983 std y+1,R25
0452 8883 std y+0,R24
0454 2227 clr R18
0456 0027 clr R16
0458 43DE xcall _LCD_write_string
045A 15C0 xjmp L76
045C L75:
045C .dbline 432
045C .dbline 432
045C F5DE xcall _realTemp
045E FE01 movw R30,R28
0460 0483 std z+4,R16
0462 1583 std z+5,R17
0464 2683 std z+6,R18
0466 3783 std z+7,R19
0468 .dbline 434
0468 FE01 movw R30,R28
046A 2480 ldd R2,z+4
046C 3580 ldd R3,z+5
046E 4680 ldd R4,z+6
0470 5780 ldd R5,z+7
0472 2882 std y+0,R2
0474 3982 std y+1,R3
0476 4A82 std y+2,R4
0478 5B82 std y+3,R5
047A 21E0 ldi R18,1
047C 0027 clr R16
047E 1BDF xcall _displayTemp
0480 .dbline 435
0480 0CED ldi R16,1500
0482 15E0 ldi R17,5
0484 BFDF xcall _delay_nms
0486 .dbline 438
0486 L76:
0486 .dbline 431
0486 EACF xjmp L75
0488 X0:
0488 .dbline -2
0488 L72:
0488 2896 adiw R28,8
048A .dbline 0 ; func end
048A 0895 ret
048C .dbsym l i 4 D
048C .dbend
.area data(ram, con, rel)
0000 .dbfile E:\单片机\AVR程序\温度传感器\1820.c
0000 L74:
0000 .blkb 8
.area idata
0000 77656C636F6D6500 .byte 'w,'e,'l,'c,'o,'m,'e,0
.area data(ram, con, rel)
0008 .dbfile E:\单片机\AVR程序\温度传感器\1820.c
.area lit(rom, con, rel)
0000 L73:
0000 00000000 .word 0x0,0x0
0004 L50:
0004 00000047 .word 0x0,0x4700
0008 L49:
0008 0000C842 .word 0x0,0x42c8
000C L45:
000C 00000040 .word 0x0,0x4000
0010 L44:
0010 0000803D .word 0x0,0x3d80
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -