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

📄 1820.lis

📁 利用AVRM16和DX18B20温度传感器通信
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -