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

📄 111.lst

📁 温度测量ds18b20.rar
💻 LST
字号:
__start:
__text_start:
      13 E5CF      LDI	R28,0x5F
      14 E0D4      LDI	R29,4
      15 BFCD      OUT	0x3D,R28
      16 BFDE      OUT	0x3E,R29
      17 51CE      SUBI	R28,0x1E
      18 40D0      SBCI	R29,0
      19 EA0A      LDI	R16,0xAA
      1A 8308      STD	Y+0,R16
      1B 2400      CLR	R0
      1C E6E0      LDI	R30,0x60
      1D E0F0      LDI	R31,0
      1E E010      LDI	R17,0
      1F 36E0      CPI	R30,0x60
      20 07F1      CPC	R31,R17
      21 F011      BEQ	0x0024
      22 9201      ST	R0,Z+
      23 CFFB      RJMP	0x001F
      24 8300      STD	Z+0,R16
      25 E2E6      LDI	R30,0x26
      26 E0F0      LDI	R31,0
      27 E6A0      LDI	R26,0x60
      28 E0B0      LDI	R27,0
      29 E010      LDI	R17,0
      2A E000      LDI	R16,0
      2B BF0B      OUT	0x3B,R16
      2C 32E6      CPI	R30,0x26
      2D 07F1      CPC	R31,R17
      2E F021      BEQ	0x0033
      2F 95C8      LPM
      30 9631      ADIW	R30,1
      31 920D      ST	R0,X+
      32 CFF9      RJMP	0x002C
      33 D019      RCALL	_main
_exit:
      34 CFFF      RJMP	_exit
FILE: D:\教程及心得\Proteus\PROTEU~2\5.avr\19.温度测量ds18b20\2.精确延时函数\111.c
(0001) //ICC-AVR application builder : 2008/11/17 22:33:32
(0002) // Target : M8
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom8v.h>
(0006) #include <macros.h>
(0007) #include "mydelay.h"
(0008) #define uchar unsigned char
(0009) void delay0ms5us(void)
(0010) {
(0011) /*精确延时0ms 5us ,晶振8MHz*/
(0012) /*us级精确延时 766us/晶振以内 延时=1+n*3 */
(0013) // CLI;//屏蔽中断
(0014) asm("LDI R18,10");//1t ,寄存器R15~R30
_delay0ms5us:
      35 E02A      LDI	R18,0xA
(0015) asm("CLZ");//1t
      36 9498      BCLR	1
(0016) asm("LOOP1:DEC R18");//1t
      37 952A      DEC	R18
(0017) asm("BRNE LOOP1");//1t或2t//标志位Z是0就转移
      38 F7F1      BNE	0x0037
(0018) asm("NOP");//1t
      39 0000      NOP
(0019) asm("NOP");//1t
      3A 0000      NOP
      3B 9508      RET
(0020) // SEI;
(0021) /*us级精确延时 24543us以内,可用nop补足余数*/
(0022) //===精确延时 4.125us,晶振8MHz ===//
(0023) //===调用函数及返回花费0.875us==//
(0024) }
(0025) 
(0026) void port_init(void)
(0027) {
(0028)  PORTB = 0x00;
_port_init:
      3C 2422      CLR	R2
      3D BA28      OUT	0x18,R2
(0029)  DDRB  = 0x00;
      3E BA27      OUT	0x17,R2
(0030)  PORTC = 0x00; //m103 output only
      3F BA25      OUT	0x15,R2
(0031)  DDRC  = 0xff;
      40 EF8F      LDI	R24,0xFF
      41 BB84      OUT	0x14,R24
(0032)  PORTD = 0x00;
      42 BA22      OUT	0x12,R2
(0033)  DDRD  = 0x00;
      43 BA21      OUT	0x11,R2
      44 9508      RET
(0034) }
(0035) 
(0036) //call this routine to initialize all peripherals
(0037) void init_devices(void)
(0038) {
(0039)  //stop errant interrupts until set up
(0040)  CLI(); //disable all interrupts
_init_devices:
      45 94F8      BCLR	7
(0041)  port_init();
      46 DFF5      RCALL	_port_init
(0042) 
(0043)  MCUCR = 0x00;
      47 2422      CLR	R2
      48 BE25      OUT	0x35,R2
(0044)  GICR  = 0x00;
      49 BE2B      OUT	0x3B,R2
(0045)  TIMSK = 0x00; //timer interrupt sources
      4A BE29      OUT	0x39,R2
(0046)  SEI(); //re-enable interrupts
      4B 9478      BSET	7
      4C 9508      RET
(0047)  //all peripherals are now initialized
(0048) }
(0049) 
(0050) void main(void)
(0051) {
(0052)   init_devices();
_main:
      4D DFF7      RCALL	_init_devices
(0053)   PORTC=0x00;
      4E 2422      CLR	R2
      4F BA25      OUT	0x15,R2
(0054)   delay0ms900us();  
      50 D003      RCALL	_delay0ms900us
(0055)   PORTC=0xff;
      51 EF8F      LDI	R24,0xFF
      52 BB85      OUT	0x15,R24
      53 9508      RET
FILE: D:\教程及心得\Proteus\PROTEU~2\5.avr\19.温度测量ds18b20\2.精确延时函数\mydelay.c
(0001) #include "mydelay.h"
(0002) void delay0ms900us(void)
(0003) {
(0004) /*精确延时0ms 900us ,晶振1MHz*/
(0005) /*us级 196348us/晶振即196ms/晶振以内 延时=n*(m*3+5)*/
(0006) // CLI;//屏蔽中断吗?
(0007) asm("LDI R18,2");//外圈循环n
_delay0ms900us:
      54 E022      LDI	R18,2
(0008) asm("LOOP3:LDI R19,147");//内圈循环m
      55 E933      LDI	R19,0x93
(0009) asm("CLZ");//1t
      56 9498      BCLR	1
(0010) asm("LOOP2:DEC R19");//1t
      57 953A      DEC	R19
(0011) asm("BRNE LOOP2");
      58 F7F1      BNE	0x0057
(0012) asm("CLZ");//1t
      59 9498      BCLR	1
(0013) asm("DEC R18");//1t
      5A 952A      DEC	R18
(0014) asm("BRNE LOOP3");
      5B F7C9      BNE	0x0055
(0015) asm("NOP");//1t
FILE: <library>
      5C 0000      NOP
      5D 9508      RET

⌨️ 快捷键说明

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