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

📄 main.lis

📁 用的avr icc 开发的atmega16的超声波测距仪模型。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -