📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _data::
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 0000 .byte 0,0
.area data(ram, con, rel)
0004 .dbfile D:\NEW\ECHO/main.h
0004 .dbsym e data _data A[4:4]c
0004 _ASCII_T::
0004 .blkb 2
.area idata
0004 0000 .byte 0,0
.area data(ram, con, rel)
0006 .dbfile D:\NEW\ECHO/main.h
0006 .blkb 2
.area idata
0006 0000 .byte 0,0
.area data(ram, con, rel)
0008 .dbfile D:\NEW\ECHO/main.h
0008 .dbsym e ASCII_T _ASCII_T A[4:4]c
.area text(rom, con, rel)
0000 .dbfile D:\NEW\ECHO/main.h
0000 .dbfile D:\NEW\ECHO\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 7
0000 ; #define MAIN_C
0000 ; #include "includes.h"
0000 ; //ICC-AVR application builder : 2007-1-22 9:46:41
0000 ; // Target : M16
0000 ; // Crystal: 4.0000Mhz
0000 ; void port_init(void)
0000 ; {
0000 .dbline 8
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 9
0004 ; DDRA = 0x00;
0004 2224 clr R2
0006 2ABA out 0x1a,R2
0008 .dbline 10
0008 ; PORTB = 0xfe;// SEND ECHO
0008 8EEF ldi R24,254
000A 88BB out 0x18,R24
000C .dbline 11
000C ; DDRB = 0x01;
000C 81E0 ldi R24,1
000E 87BB out 0x17,R24
0010 .dbline 12
0010 ; PORTC = 0xff; //m103 output only
0010 8FEF ldi R24,255
0012 85BB out 0x15,R24
0014 .dbline 13
0014 ; DDRC = 0x00;
0014 24BA out 0x14,R2
0016 .dbline 14
0016 ; PORTD = 0xFF;
0016 82BB out 0x12,R24
0018 .dbline 15
0018 ; DDRD = 0x00;
0018 21BA out 0x11,R2
001A .dbline -2
001A .dbline 16
001A ; }
001A L1:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
001C .dbfunc e init_devices _init_devices fV
.even
001C _init_devices::
001C .dbline -1
001C .dbline 20
001C ;
001C ; //call this routine to initialise all peripherals
001C ; void init_devices(void)
001C ; {
001C .dbline 22
001C ; //stop errant interrupts until set up
001C ; CLI(); //disable all interrupts
001C F894 cli
001E .dbline 23
001E ; port_init();
001E F0DF xcall _port_init
0020 .dbline 24
0020 ; Init_LCD();
0020 0E940000 xcall _Init_LCD
0024 .dbline 25
0024 ; timer1_init();
0024 0E940000 xcall _timer1_init
0028 .dbline 26
0028 ; MCUCR = 0x00;
0028 2224 clr R2
002A 25BE out 0x35,R2
002C .dbline 27
002C ; GICR = 0x00;
002C 2BBE out 0x3b,R2
002E .dbline 28
002E ; TIMSK = 0x24; //OVR(0x20)+ICP(0x04) interrupt sources
002E 84E2 ldi R24,36
0030 89BF out 0x39,R24
0032 .dbline 29
0032 ; SEI(); //re-enable interrupts
0032 7894 sei
0034 .dbline -2
0034 .dbline 31
0034 ; //all peripherals are now initialised
0034 ; }
0034 L2:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbend
0036 .dbfunc e display_temprature _display_temprature fV
.even
0036 _display_temprature::
0036 .dbline -1
0036 .dbline 34
0036 ;
0036 ; void display_temprature(void)
0036 ; {
0036 .dbline 35
0036 ; temprature= readTempDS18B20();
0036 0E940000 xcall _readTempDS18B20
003A 10930400 sts _temprature+1,R17
003E 00930300 sts _temprature,R16
0042 .dbline 37
0042 ;
0042 ; temprature_flag=(temprature>>8)&0xf8;//h8bit(5bit)
0042 C801 movw R24,R16
0044 892F mov R24,R25
0046 9927 clr R25
0048 887F andi R24,248
004A 9070 andi R25,0
004C 80930200 sts _temprature_flag,R24
0050 .dbline 39
0050 ;
0050 ; if(temprature_flag==0) //signed temprature
0050 8823 tst R24
0052 51F5 brne L4
0054 .dbline 40
0054 ; {
0054 .dbline 41
0054 ; temprature/=8;
0054 1801 movw R2,R16
0056 3694 lsr R3
0058 2794 ror R2
005A 3694 lsr R3
005C 2794 ror R2
005E 3694 lsr R3
0060 2794 ror R2
0062 30920400 sts _temprature+1,R3
0066 20920300 sts _temprature,R2
006A .dbline 42
006A ; temprature*=5;
006A 9101 movw R18,R2
006C 05E0 ldi R16,5
006E 10E0 ldi R17,0
0070 0E940000 xcall empy16s
0074 10930400 sts _temprature+1,R17
0078 00930300 sts _temprature,R16
007C .dbline 43
007C ; LCD_Cursor(1,8);
007C 28E0 ldi R18,8
007E 01E0 ldi R16,1
0080 0E940000 xcall _LCD_Cursor
0084 .dbline 44
0084 ; LCD_DisplayCharacter('+');
0084 0BE2 ldi R16,43
0086 0E940000 xcall _LCD_DisplayCharacter
008A .dbline 45
008A ; speed=3314+temprature*6; //set speed for echo
008A 20910300 lds R18,_temprature
008E 30910400 lds R19,_temprature+1
0092 06E0 ldi R16,6
0094 10E0 ldi R17,0
0096 0E940000 xcall empy16s
009A C801 movw R24,R16
009C 8E50 subi R24,14 ; offset = 3314
009E 934F sbci R25,243
00A0 90930100 sts _speed+1,R25
00A4 80930000 sts _speed,R24
00A8 .dbline 46
00A8 ; }
00A8 L4:
00A8 .dbline 48
00A8 ;
00A8 ; if(temprature_flag!=0)
00A8 20900200 lds R2,_temprature_flag
00AC 2220 tst R2
00AE D9F1 breq L6
00B0 .dbline 49
00B0 ; {
00B0 .dbline 50
00B0 ; temprature=~temprature+1;
00B0 80910300 lds R24,_temprature
00B4 90910400 lds R25,_temprature+1
00B8 8095 com R24
00BA 9095 com R25
00BC 0196 adiw R24,1
00BE 90930400 sts _temprature+1,R25
00C2 80930300 sts _temprature,R24
00C6 .dbline 51
00C6 ; temprature&=~0xf800;
00C6 9770 andi R25,7
00C8 90930400 sts _temprature+1,R25
00CC 80930300 sts _temprature,R24
00D0 .dbline 52
00D0 ; temprature/=8;
00D0 1C01 movw R2,R24
00D2 3694 lsr R3
00D4 2794 ror R2
00D6 3694 lsr R3
00D8 2794 ror R2
00DA 3694 lsr R3
00DC 2794 ror R2
00DE 30920400 sts _temprature+1,R3
00E2 20920300 sts _temprature,R2
00E6 .dbline 53
00E6 ; temprature*=5;
00E6 9101 movw R18,R2
00E8 05E0 ldi R16,5
00EA 10E0 ldi R17,0
00EC 0E940000 xcall empy16s
00F0 10930400 sts _temprature+1,R17
00F4 00930300 sts _temprature,R16
00F8 .dbline 54
00F8 ; LCD_Cursor(1,8);
00F8 28E0 ldi R18,8
00FA 01E0 ldi R16,1
00FC 0E940000 xcall _LCD_Cursor
0100 .dbline 55
0100 ; LCD_DisplayCharacter('-');
0100 0DE2 ldi R16,45
0102 0E940000 xcall _LCD_DisplayCharacter
0106 .dbline 56
0106 ; speed=3314-temprature*6; //set speed for echo
0106 20910300 lds R18,_temprature
010A 30910400 lds R19,_temprature+1
010E 06E0 ldi R16,6
0110 10E0 ldi R17,0
0112 0E940000 xcall empy16s
0116 82EF ldi R24,3314
0118 9CE0 ldi R25,12
011A 801B sub R24,R16
011C 910B sbc R25,R17
011E 90930100 sts _speed+1,R25
0122 80930000 sts _speed,R24
0126 .dbline 57
0126 ; }
0126 L6:
0126 .dbline 61
0126 ;
0126 ; //temprature=speed;//testing!!!!!!!!!!!!!!!!!!!!!!!!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -