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

📄 18b20.lst

📁 avr基础程序大全
💻 LST
📖 第 1 页 / 共 2 页
字号:
    000D1 2F14      MOV	R17,R20
    000D2 940E 01A0 CALL	lsl8
    000D4 2AA0      OR	R10,R16
    000D5 C007      RJMP	0x00DD
(0090)       else  
(0091)       temp&=~(1<<n);  
    000D6 E001      LDI	R16,1
    000D7 2F14      MOV	R17,R20
    000D8 940E 01A0 CALL	lsl8
    000DA 2E20      MOV	R2,R16
    000DB 9420      COM	R2
    000DC 20A2      AND	R10,R2
(0092)       delay_nus(50); //60~120us      
    000DD E302      LDI	R16,0x32
    000DE E010      LDI	R17,0
    000DF DF92      RCALL	_delay_nus
(0093)       SET_DIR_1WIRE;  
    000E0 9A8F      SBI	0x11,7
    000E1 9543      INC	R20
    000E2 3048      CPI	R20,0x8
    000E3 F330      BCS	0x00CA
(0094)    }  
(0095)    return (temp);  
    000E4 2D0A      MOV	R16,R10
    000E5 940C 0187 JMP	pop_xgsetF00C
_gettemp:
  wm3                  --> R10
  wm1                  --> R10
  wm0                  --> R20
  teml                 --> R10
  temh                 --> R22
  wm2                  --> R12
    000E7 940E 018E CALL	push_xgsetF03C
(0096) }   
(0097) 
(0098) void gettemp()    //读取温度值 
(0099) {  
(0100)      unsigned char temh,teml,wm0,wm1,wm2,wm3;  
(0101)      init_1820();        //复位18b20  
    000E9 DFAE      RCALL	_init_1820
(0102)      write_1820(0xcc);   // 发出转换命令  
    000EA EC0C      LDI	R16,0xCC
    000EB DFBE      RCALL	_write_1820
(0103)      write_1820(0x44); 
    000EC E404      LDI	R16,0x44
    000ED DFBC      RCALL	_write_1820
(0104)  //  delay_nms(800);     //不延时也好使,不知道怎么回事! 
(0105)      init_1820();  
    000EE DFA9      RCALL	_init_1820
(0106)      write_1820(0xcc);  //发出读命令  
    000EF EC0C      LDI	R16,0xCC
    000F0 DFB9      RCALL	_write_1820
(0107)      write_1820(0xbe);  
    000F1 EB0E      LDI	R16,0xBE
    000F2 DFB7      RCALL	_write_1820
(0108)      teml=read_1820();  //读数据  
    000F3 DFD1      RCALL	_read_1820
    000F4 2EA0      MOV	R10,R16
(0109)      temh=read_1820();  
    000F5 DFCF      RCALL	_read_1820
    000F6 2F60      MOV	R22,R16
(0110)      wm0=teml>>4;       //只要高8位的低四位和低8位的高四位,温度范围0~99啦! 
    000F7 2D4A      MOV	R20,R10
    000F8 9542      SWAP	R20
    000F9 704F      ANDI	R20,0xF
(0111)      wm1=temh<<4; 
    000FA 2F86      MOV	R24,R22
    000FB 708F      ANDI	R24,0xF
    000FC 9582      SWAP	R24
(0112)      wm2=wm1+wm0;        //16进制转10进制 
    000FD 2EC8      MOV	R12,R24
    000FE 0EC4      ADD	R12,R20
(0113)      wm3=wm2/100; 
    000FF E614      LDI	R17,0x64
    00100 2D0C      MOV	R16,R12
    00101 940E 0156 CALL	div8u
    00103 2EA0      MOV	R10,R16
(0114)      wmh=(wm2%100)/10;   //出口参数了!wmh是显示的高位,wml使显示的低位 
    00104 E614      LDI	R17,0x64
    00105 2D0C      MOV	R16,R12
    00106 940E 0154 CALL	mod8u
    00108 E01A      LDI	R17,0xA
    00109 940E 0156 CALL	div8u
    0010B 9300 007A STS	wmh,R16
(0115)      wml=(wm2%100)%10; 
    0010D E614      LDI	R17,0x64
    0010E 2D0C      MOV	R16,R12
    0010F 940E 0154 CALL	mod8u
    00111 E01A      LDI	R17,0xA
    00112 940E 0154 CALL	mod8u
    00114 9300 0079 STS	wml,R16
(0116) 	 show(wm3,2);
    00116 E022      LDI	R18,2
    00117 E030      LDI	R19,0
    00118 2D0A      MOV	R16,R10
    00119 2711      CLR	R17
    0011A 940E 0139 CALL	_show
(0117) 	 show( wmh,1);
    0011C E021      LDI	R18,1
    0011D E030      LDI	R19,0
    0011E 9100 007A LDS	R16,wmh
    00120 2711      CLR	R17
    00121 940E 0139 CALL	_show
(0118) 	 show(wml,0);
    00123 2722      CLR	R18
    00124 2733      CLR	R19
    00125 9100 0079 LDS	R16,wml
    00127 2711      CLR	R17
    00128 940E 0139 CALL	_show
    0012A 940C 0197 JMP	pop_xgsetF03C
(0119) }   
(0120) 
(0121) 
(0122) //延时程序: 
(0123) 
(0124) 
(0125) void main()
(0126) {smginit();
_main:
    0012C 940E 0135 CALL	_smginit
(0127)  DDRA=0XFF;
    0012E EF8F      LDI	R24,0xFF
    0012F BB8A      OUT	0x1A,R24
(0128)  DDRC=0XFF;
    00130 BB84      OUT	0x14,R24
    00131 C001      RJMP	0x0133
(0129)  while(1)
(0130)  {gettemp();}
FILE: <library>
    00132 DFB4      RCALL	_gettemp
    00133 CFFE      RJMP	0x0132
    00134 9508      RET
_smginit:
    00135 EF8F      LDI	R24,0xFF
    00136 BB8A      OUT	0x1A,R24
    00137 BB84      OUT	0x14,R24
    00138 9508      RET
_show:
  k                    --> R10
  j                    --> R12
    00139 92AA      ST	-Y,R10
    0013A 92CA      ST	-Y,R12
    0013B 2EA2      MOV	R10,R18
    0013C 2EC0      MOV	R12,R16
    0013D E680      LDI	R24,0x60
    0013E E090      LDI	R25,0
    0013F 2DEC      MOV	R30,R12
    00140 27FF      CLR	R31
    00141 0FE8      ADD	R30,R24
    00142 1FF9      ADC	R31,R25
    00143 8020      LD	R2,Z
    00144 BA2B      OUT	0x1B,R2
    00145 E781      LDI	R24,0x71
    00146 E090      LDI	R25,0
    00147 2DEA      MOV	R30,R10
    00148 27FF      CLR	R31
    00149 0FE8      ADD	R30,R24
    0014A 1FF9      ADC	R31,R25
    0014B 8020      LD	R2,Z
    0014C BA25      OUT	0x15,R2
    0014D E002      LDI	R16,2
    0014E E010      LDI	R17,0
    0014F 940E 005A CALL	_Delay_1ms
    00151 90C9      LD	R12,Y+
    00152 90A9      LD	R10,Y+
    00153 9508      RET
mod8u:
    00154 9468      BSET	6
    00155 C001      RJMP	xdiv8u
div8u:
    00156 94E8      BCLR	6
xdiv8u:
    00157 932A      ST	-Y,R18
    00158 92FA      ST	-Y,R15
    00159 92EA      ST	-Y,R14
    0015A 24FF      CLR	R15
    0015B 24EE      CLR	R14
    0015C E120      LDI	R18,0x10
    0015D 0F00      LSL	R16
    0015E 1CFF      ROL	R15
    0015F 1CEE      ROL	R14
    00160 16E1      CP	R14,R17
    00161 F010      BCS	0x0164
    00162 1AE1      SUB	R14,R17
    00163 9503      INC	R16
    00164 952A      DEC	R18
    00165 F7B9      BNE	0x015D
    00166 F40E      BRTC	0x0168
    00167 2D0E      MOV	R16,R14
    00168 90E9      LD	R14,Y+
    00169 90F9      LD	R15,Y+
    0016A 9129      LD	R18,Y+
    0016B 9508      RET
push_xgset300C:
    0016C 935A      ST	-Y,R21
    0016D 934A      ST	-Y,R20
    0016E 92BA      ST	-Y,R11
    0016F 92AA      ST	-Y,R10
    00170 9508      RET
pop_xgset300C:
    00171 90A9      LD	R10,Y+
    00172 90B9      LD	R11,Y+
    00173 9149      LD	R20,Y+
    00174 9159      LD	R21,Y+
    00175 9508      RET
push_xgsetF000:
    00176 937A      ST	-Y,R23
    00177 936A      ST	-Y,R22
    00178 935A      ST	-Y,R21
    00179 934A      ST	-Y,R20
    0017A 9508      RET
pop_xgsetF000:
    0017B 9149      LD	R20,Y+
    0017C 9159      LD	R21,Y+
    0017D 9169      LD	R22,Y+
    0017E 9179      LD	R23,Y+
    0017F 9508      RET
push_xgsetF00C:
    00180 937A      ST	-Y,R23
    00181 936A      ST	-Y,R22
    00182 935A      ST	-Y,R21
    00183 934A      ST	-Y,R20
    00184 92BA      ST	-Y,R11
    00185 92AA      ST	-Y,R10
    00186 9508      RET
pop_xgsetF00C:
    00187 90A9      LD	R10,Y+
    00188 90B9      LD	R11,Y+
    00189 9149      LD	R20,Y+
    0018A 9159      LD	R21,Y+
    0018B 9169      LD	R22,Y+
    0018C 9179      LD	R23,Y+
    0018D 9508      RET
push_xgsetF03C:
    0018E 937A      ST	-Y,R23
    0018F 936A      ST	-Y,R22
    00190 935A      ST	-Y,R21
    00191 934A      ST	-Y,R20
    00192 92DA      ST	-Y,R13
    00193 92CA      ST	-Y,R12
    00194 92BA      ST	-Y,R11
    00195 92AA      ST	-Y,R10
    00196 9508      RET
pop_xgsetF03C:
    00197 90A9      LD	R10,Y+
    00198 90B9      LD	R11,Y+
    00199 90C9      LD	R12,Y+
    0019A 90D9      LD	R13,Y+
    0019B 9149      LD	R20,Y+
    0019C 9159      LD	R21,Y+
    0019D 9169      LD	R22,Y+
    0019E 9179      LD	R23,Y+
    0019F 9508      RET
lsl8:
    001A0 2311      TST	R17
    001A1 F019      BEQ	0x01A5
    001A2 0F00      LSL	R16
    001A3 951A      DEC	R17
    001A4 CFFB      RJMP	lsl8
    001A5 9508      RET

⌨️ 快捷键说明

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