📄 111.lis
字号:
.module _111.c
.area text(rom, con, rel)
0000 .dbfile ..\..\..\..\PROTEU~2\5.avr\19.温度测量ds18b20\1.精确延时\111.c
0000 .dbfile D:\教程及心得\Proteus\PROTEU~2\5.avr\19.温度测量ds18b20\1.精确延时\111.c
0000 .dbfunc e delay _delay fV
.even
0000 _delay::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2008/11/17 1:48:21
0000 ; // Target : M8
0000 ; // Crystal: 1.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #define uchar unsigned char
0000 ; void delay()
0000 ; {
0000 .dbline -2
0000 L1:
0000 .dbline 0 ; func end
0000 0895 ret
0002 .dbend
0002 .dbfunc e port_init _port_init fV
.even
0002 _port_init::
0002 .dbline -1
0002 .dbline 13
0002 ;
0002 ; }
0002 ; void port_init(void)
0002 ; {
0002 .dbline 14
0002 ; PORTB = 0x00;
0002 2224 clr R2
0004 28BA out 0x18,R2
0006 .dbline 15
0006 ; DDRB = 0x00;
0006 27BA out 0x17,R2
0008 .dbline 16
0008 ; PORTC = 0x00; //m103 output only
0008 25BA out 0x15,R2
000A .dbline 17
000A ; DDRC = 0xff;
000A 8FEF ldi R24,255
000C 84BB out 0x14,R24
000E .dbline 18
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 19
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline -2
0012 L2:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e init_devices _init_devices fV
.even
0014 _init_devices::
0014 .dbline -1
0014 .dbline 24
0014 ; }
0014 ;
0014 ; //call this routine to initialize all peripherals
0014 ; void init_devices(void)
0014 ; {
0014 .dbline 26
0014 ; //stop errant interrupts until set up
0014 ; CLI(); //disable all interrupts
0014 F894 cli
0016 .dbline 27
0016 ; port_init();
0016 F5DF rcall _port_init
0018 .dbline 29
0018 ;
0018 ; MCUCR = 0x00;
0018 2224 clr R2
001A 25BE out 0x35,R2
001C .dbline 30
001C ; GICR = 0x00;
001C 2BBE out 0x3b,R2
001E .dbline 31
001E ; TIMSK = 0x00; //timer interrupt sources
001E 29BE out 0x39,R2
0020 .dbline 32
0020 ; SEI(); //re-enable interrupts
0020 7894 sei
0022 .dbline -2
0022 L3:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e main _main fV
.even
0024 _main::
0024 .dbline -1
0024 .dbline 37
0024 ; //all peripherals are now initialized
0024 ; }
0024 ;
0024 ; void main(void)
0024 ; {
0024 .dbline 38
0024 ; init_devices();
0024 F7DF rcall _init_devices
0026 .dbline 42
0026 ; /*精确延时111us,晶振4MHz */
0026 ; /*us级精确延时 766us/晶振以内 延时=1+n*3 */
0026 ; // CLI;//屏蔽中断
0026 ; asm("LDI R18,147");//1t ,寄存器R15~R30
0026 23E9 LDI R18,147
0028 .dbline 43
0028 ; asm("CLZ");//1t
0028 9894 CLZ
002A .dbline 44
002A ; asm("LOOP1:DEC R18");//1t
002A 2A95 LOOP1:DEC R18
002C .dbline 45
002C ; asm("BRNE LOOP1");//1t或2t//标志位Z是0就转移
002C F1F7 BRNE LOOP1
002E .dbline 46
002E ; asm("NOP");//1t
002E 0000 NOP
0030 .dbline 47
0030 ; asm("NOP");//1t
0030 0000 NOP
0032 .dbline 52
0032 ; // SEI;
0032 ; /*us级精确延时 766us/晶振以内,可用nop补足余数*/
0032 ; /*精确延时0ms 111us */
0032 ;
0032 ; PORTC=0xff;
0032 8FEF ldi R24,255
0034 85BB out 0x15,R24
0036 .dbline -2
0036 L4:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
0038 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -