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

📄 zuopin.lis

📁 18b20的程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0084           ;     m=(PIND&0X80);   //读数据,从低位开始 
 0084 60B3              in R22,0x10
 0086 6078              andi R22,128
 0088                   .dbline 57
 0088           ;     if(m) 
 0088 29F0              breq L19
 008A                   .dbline 58
 008A           ;     n|=(1<<i); 
 008A 01E0              ldi R16,1
 008C 1A2D              mov R17,R10
 008E 00D0              rcall lsl8
 0090 402B              or R20,R16
 0092 06C0              rjmp L20
 0094           L19:
 0094                   .dbline 60
 0094           ;     else 
 0094           ;     n&=~(1<<i); 
 0094 01E0              ldi R16,1
 0096 1A2D              mov R17,R10
 0098 00D0              rcall lsl8
 009A 202E              mov R2,R16
 009C 2094              com R2
 009E 4221              and R20,R2
 00A0           L20:
 00A0                   .dbline 61
 00A0 00E5              ldi R16,80
 00A2 10E0              ldi R17,0
 00A4 AFDF              rcall _delay
 00A6                   .dbline 62
 00A6 8F9A              sbi 0x11,7
 00A8                   .dbline 63
 00A8           L16:
 00A8                   .dbline 50
 00A8 A394              inc R10
 00AA           L18:
 00AA                   .dbline 50
 00AA 8A2D              mov R24,R10
 00AC 8830              cpi R24,8
 00AE 20F3              brlo L15
 00B0                   .dbline 64
 00B0           ;     delay(80); 
 00B0           ;     DDRD|=0X80; 
 00B0           ;   } 
 00B0           ;   return (n); 
 00B0 042F              mov R16,R20
 00B2                   .dbline -2
 00B2           L14:
 00B2 00D0              rcall pop_gset3
 00B4                   .dbline 0 ; func end
 00B4 0895              ret
 00B6                   .dbsym r n 20 c
 00B6                   .dbsym r m 22 c
 00B6                   .dbsym r i 10 c
 00B6                   .dbend
 00B6                   .dbfunc e temperature_read _temperature_read fV
 00B6           ;       tempture -> <dead>
 00B6           ;           teml -> R22
 00B6           ;           temh -> R20
 00B6           ;              i -> R20
                        .even
 00B6           _temperature_read::
 00B6 00D0              rcall push_gset2
 00B8                   .dbline -1
 00B8                   .dbline 67
 00B8           ; } 
 00B8           ; void temperature_read()  //读取温度值
 00B8           ; {
 00B8                   .dbline 70
 00B8           ;   unsigned char tempture;
 00B8           ;   unsigned char i,temh,teml; 
 00B8           ;   init_1820();     //复位18b20 
 00B8 B0DF              rcall _init_1820
 00BA                   .dbline 71
 00BA           ;   write_1820(0xcc);   // 发出转换命令 
 00BA 0CEC              ldi R16,204
 00BC C1DF              rcall _write_1820
 00BE                   .dbline 72
 00BE           ;   write_1820(0x44);    //启动温度转换
 00BE 04E4              ldi R16,68
 00C0 BFDF              rcall _write_1820
 00C2                   .dbline 73
 00C2           ;   delay(400); 
 00C2 00E9              ldi R16,400
 00C4 11E0              ldi R17,1
 00C6 9EDF              rcall _delay
 00C8                   .dbline 74
 00C8           ;   init_1820();    
 00C8 A8DF              rcall _init_1820
 00CA                   .dbline 75
 00CA           ;   write_1820(0xcc); //发出读命令 
 00CA 0CEC              ldi R16,204
 00CC B9DF              rcall _write_1820
 00CE                   .dbline 76
 00CE           ;   write_1820(0xbe);  //读数据
 00CE 0EEB              ldi R16,190
 00D0 B7DF              rcall _write_1820
 00D2                   .dbline 77
 00D2           ;   teml=read_1820(); 
 00D2 CEDF              rcall _read_1820
 00D4 602F              mov R22,R16
 00D6                   .dbline 78
 00D6           ;   temh=read_1820(); 
 00D6 CCDF              rcall _read_1820
 00D8 402F              mov R20,R16
 00DA                   .dbline 79
 00DA           ;   UDR=teml;
 00DA 6CB9              out 0xc,R22
 00DC                   .dbline 80
 00DC           ;   delay(150);
 00DC 06E9              ldi R16,150
 00DE 10E0              ldi R17,0
 00E0 91DF              rcall _delay
 00E2                   .dbline 81
 00E2           ;   UDR=temh;
 00E2 4CB9              out 0xc,R20
 00E4                   .dbline 82
 00E4           ;   for(i=0;i<100;i++)   //延时等待
 00E4 4427              clr R20
 00E6 04C0              rjmp L25
 00E8           L22:
 00E8                   .dbline 83
 00E8 04EF              ldi R16,500
 00EA 11E0              ldi R17,1
 00EC 8BDF              rcall _delay
 00EE           L23:
 00EE                   .dbline 82
 00EE 4395              inc R20
 00F0           L25:
 00F0                   .dbline 82
 00F0 4436              cpi R20,100
 00F2 D0F3              brlo L22
 00F4                   .dbline -2
 00F4           L21:
 00F4 00D0              rcall pop_gset2
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym l tempture 1 c
 00F8                   .dbsym r teml 22 c
 00F8                   .dbsym r temh 20 c
 00F8                   .dbsym r i 20 c
 00F8                   .dbend
 00F8                   .dbfunc e uart0_init _uart0_init fV
                        .even
 00F8           _uart0_init::
 00F8                   .dbline -1
 00F8                   .dbline 91
 00F8           ;   delay(500);     
 00F8           ; }
 00F8           ; //UART0 initialize
 00F8           ; // desired baud rate: 9600
 00F8           ; // actual: baud rate:9615 (0.2%)
 00F8           ; // char size: 8 bit
 00F8           ; // parity: Disabled
 00F8           ; void uart0_init(void)     //初始化uart
 00F8           ; {
 00F8                   .dbline 92
 00F8           ;  UCSRB = 0x00; //disable while setting baud rate
 00F8 2224              clr R2
 00FA 2AB8              out 0xa,R2
 00FC                   .dbline 93
 00FC           ;  UCSRA = 0x00;
 00FC 2BB8              out 0xb,R2
 00FE                   .dbline 94
 00FE           ;  UCSRC = BIT(URSEL) | 0x06;
 00FE 86E8              ldi R24,134
 0100 80BD              out 0x20,R24
 0102                   .dbline 95
 0102           ;  UBRRL = 0x33; //set baud rate lo
 0102 83E3              ldi R24,51
 0104 89B9              out 0x9,R24
 0106                   .dbline 96
 0106           ;  UBRRH = 0x00; //set baud rate hi
 0106 20BC              out 0x20,R2
 0108                   .dbline 97
 0108           ;  UCSRB = 0x18;
 0108 88E1              ldi R24,24
 010A 8AB9              out 0xa,R24
 010C                   .dbline -2
 010C           L26:
 010C                   .dbline 0 ; func end
 010C 0895              ret
 010E                   .dbend
 010E                   .dbfunc e main _main fV
                        .even
 010E           _main::
 010E                   .dbline -1
 010E                   .dbline 101
 010E           ; }
 010E           ; 
 010E           ; void main(void) //主函数 
 010E           ; { 
 010E                   .dbline 102
 010E           ; delay(1000); 
 010E 08EE              ldi R16,1000
 0110 13E0              ldi R17,3
 0112 78DF              rcall _delay
 0114                   .dbline 103
 0114           ; DDRD=0Xff; 
 0114 8FEF              ldi R24,255
 0116 81BB              out 0x11,R24
 0118                   .dbline 104
 0118           ; PORTD=0Xff; 
 0118 82BB              out 0x12,R24
 011A                   .dbline 105
 011A           ; uart0_init();
 011A EEDF              rcall _uart0_init
 011C 01C0              rjmp L29
 011E           L28:
 011E                   .dbline 107
 011E CBDF              rcall _temperature_read
 0120           L29:
 0120                   .dbline 106
 0120 FECF              rjmp L28
 0122           X1:
 0122                   .dbline -2
 0122           L27:
 0122                   .dbline 0 ; func end
 0122 0895              ret
 0124                   .dbend

⌨️ 快捷键说明

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