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

📄 main.lis

📁 ds18b20+1602液晶显示 基于atmega16l单片机的编程
💻 LIS
字号:
                        .module main.c
                        .area data(ram, con, rel)
 0000           _flag10ms::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
 0001                   .dbsym e flag10ms _flag10ms c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 13
 0000           ; //ICC-AVR application builder : 2008-8-2 15:50:57
 0000           ; // Target : M16
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "lm1602.h"
 0000           ; #include "ds18b20.h"
 0000           ; 
 0000           ; byte flag10ms = 0;
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 14
 0000           ;  PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 15
 0004           ;  DDRA  = 0xE0;
 0004 80EE              ldi R24,224
 0006 8ABB              out 0x1a,R24
 0008                   .dbline 16
 0008           ;  PORTB = 0x00;
 0008 28BA              out 0x18,R2
 000A                   .dbline 17
 000A           ;  DDRB  = 0xFF;
 000A 8FEF              ldi R24,255
 000C 87BB              out 0x17,R24
 000E                   .dbline 18
 000E           ;  PORTC = 0x00; //m103 output only
 000E 25BA              out 0x15,R2
 0010                   .dbline 19
 0010           ;  DDRC  = 0x00;
 0010 24BA              out 0x14,R2
 0012                   .dbline 20
 0012           ;  PORTD = 0x00;
 0012 22BA              out 0x12,R2
 0014                   .dbline 21
 0014           ;  DDRD  = 0x00;
 0014 21BA              out 0x11,R2
 0016                   .dbline -2
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0018           _timer1_init::
 0018                   .dbline -1
 0018                   .dbline 30
 0018           ; }
 0018           ; 
 0018           ; 
 0018           ; //TIMER1 initialize - prescale:64
 0018           ; // WGM: 0) Normal, TOP=0xFFFF
 0018           ; // desired value: 10mSec
 0018           ; // actual value: 10.000mSec (0.0%)
 0018           ; void timer1_init(void)
 0018           ; {
 0018                   .dbline 31
 0018           ;  TCCR1B = 0x00; //stop
 0018 2224              clr R2
 001A 2EBC              out 0x2e,R2
 001C                   .dbline 32
 001C           ;  TCNT1H = 0xFB; //setup
 001C 8BEF              ldi R24,251
 001E 8DBD              out 0x2d,R24
 0020                   .dbline 33
 0020           ;  TCNT1L = 0x1E;
 0020 8EE1              ldi R24,30
 0022 8CBD              out 0x2c,R24
 0024                   .dbline 34
 0024           ;  TCCR1A = 0x00;
 0024 2FBC              out 0x2f,R2
 0026                   .dbline 35
 0026           ;  TCCR1B = 0x03; //start Timer
 0026 83E0              ldi R24,3
 0028 8EBD              out 0x2e,R24
 002A                   .dbline -2
 002A           L2:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C941600          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 002C                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
                        .area data(ram, con, rel)
 0001                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
 0001           L4:
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
                        .area text(rom, con, rel)
 002C                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
 002C                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
 002C                   .dbsym s cnt L4 c
                        .even
 002C           _timer1_ovf_isr::
 002C 2A92              st -y,R2
 002E 8A93              st -y,R24
 0030 9A93              st -y,R25
 0032 2FB6              in R2,0x3f
 0034 2A92              st -y,R2
 0036                   .dbline -1
 0036                   .dbline 40
 0036                   .dbline 43
 0036 8BEF              ldi R24,251
 0038 8DBD              out 0x2d,R24
 003A                   .dbline 44
 003A 8EE1              ldi R24,30
 003C 8CBD              out 0x2c,R24
 003E                   .dbline 45
 003E 80910100          lds R24,L4
 0042 8F5F              subi R24,255    ; addi 1
 0044 80930100          sts L4,R24
 0048                   .dbline 46
 0048 8233              cpi R24,50
 004A 30F0              brlo L5
 004C                   .dbline 47
 004C                   .dbline 48
 004C 2224              clr R2
 004E 20920100          sts L4,R2
 0052                   .dbline 49
 0052 81E0              ldi R24,1
 0054 80930000          sts _flag10ms,R24
 0058                   .dbline 50
 0058           L5:
 0058                   .dbline -2
 0058           L3:
 0058 2990              ld R2,y+
 005A 2FBE              out 0x3f,R2
 005C 9991              ld R25,y+
 005E 8991              ld R24,y+
 0060 2990              ld R2,y+
 0062                   .dbline 0 ; func end
 0062 1895              reti
 0064                   .dbend
 0064                   .dbfunc e init_devices _init_devices fV
                        .even
 0064           _init_devices::
 0064                   .dbline -1
 0064                   .dbline 56
 0064           ; }
 0064           ; 
 0064           ; #pragma interrupt_handler timer1_ovf_isr:9
 0064           ; void timer1_ovf_isr(void)
 0064           ; {
 0064           ;  static unsigned char cnt =0;
 0064           ;  //TIMER1 has overflowed
 0064           ;  TCNT1H = 0xFB; //reload counter high value
 0064           ;  TCNT1L = 0x1E; //reload counter low value
 0064           ;  cnt++;
 0064           ;  if(cnt>=50)
 0064           ;  {
 0064           ;   cnt = 0;
 0064           ;   flag10ms = 1;
 0064           ;   }
 0064           ; }
 0064           ; 
 0064           ; 
 0064           ; //call this routine to initialize all peripherals
 0064           ; void init_devices(void)
 0064           ; {
 0064                   .dbline 58
 0064           ;  //stop errant interrupts until set up
 0064           ;  CLI(); //disable all interrupts
 0064 F894              cli
 0066                   .dbline 59
 0066           ;  port_init();
 0066 CCDF              xcall _port_init
 0068                   .dbline 60
 0068           ;  timer1_init();
 0068 D7DF              xcall _timer1_init
 006A                   .dbline 62
 006A           ;  
 006A           ;  MCUCR = 0x00;
 006A 2224              clr R2
 006C 25BE              out 0x35,R2
 006E                   .dbline 63
 006E           ;  GICR  = 0x00;
 006E 2BBE              out 0x3b,R2
 0070                   .dbline 64
 0070           ;  TIMSK = 0x04; //timer interrupt sources
 0070 84E0              ldi R24,4
 0072 89BF              out 0x39,R24
 0074                   .dbline 65
 0074           ;  SEI(); //re-enable interrupts
 0074 7894              sei
 0076                   .dbline -2
 0076           L7:
 0076                   .dbline 0 ; func end
 0076 0895              ret
 0078                   .dbend
 0078                   .dbfunc e main _main fV
 0078           ;      temp_data -> R20,R21
                        .even
 0078           _main::
 0078 2297              sbiw R28,2
 007A                   .dbline -1
 007A                   .dbline 71
 007A           ;  //all peripherals are now initialized
 007A           ; }
 007A           ; 
 007A           ; //
 007A           ; void main(void)
 007A           ; {
 007A                   .dbline 73
 007A           ;  unsigned int temp_data;
 007A           ;  init_devices();
 007A F4DF              xcall _init_devices
 007C                   .dbline 74
 007C           ;  LcdInit();
 007C 0E940000          xcall _LcdInit
 0080                   .dbline 75
 0080           ;  DisString(0, 1, "DS18B20 test");
 0080 80E0              ldi R24,<L9
 0082 90E0              ldi R25,>L9
 0084 9983              std y+1,R25
 0086 8883              std y+0,R24
 0088 21E0              ldi R18,1
 008A 0027              clr R16
 008C 0E940000          xcall _DisString
 0090 1DC0              xjmp L11
 0092           L10:
 0092                   .dbline 78
 0092           ;  //insert your functional code here...
 0092           ;  while(1)
 0092           ;  {
 0092                   .dbline 79
 0092           ;     if(flag10ms)
 0092 20900000          lds R2,_flag10ms
 0096 2220              tst R2
 0098 C9F0              breq L13
 009A                   .dbline 80
 009A           ;       {
 009A                   .dbline 81
 009A           ;          flag10ms =0;
 009A 2224              clr R2
 009C 20920000          sts _flag10ms,R2
 00A0                   .dbline 82
 00A0           ;           temp_data = ReadTemperature(); 
 00A0 0E940000          xcall _ReadTemperature
 00A4 A801              movw R20,R16
 00A6                   .dbline 83
 00A6           ;         if( temp_data!=0xffff)
 00A6 0F3F              cpi R16,255
 00A8 EFEF              ldi R30,255
 00AA 1E07              cpc R17,R30
 00AC 39F0              breq L15
 00AE                   .dbline 84
 00AE           ;         {
 00AE                   .dbline 85
 00AE           ;             LCD_Dis_Temperature(1,1,temp_data);       //温度数据转换和显示函数
 00AE 5983              std y+1,R21
 00B0 4883              std y+0,R20
 00B2 21E0              ldi R18,1
 00B4 01E0              ldi R16,1
 00B6 0E940000          xcall _LCD_Dis_Temperature
 00BA                   .dbline 86
 00BA           ;         }
 00BA 08C0              xjmp L16
 00BC           L15:
 00BC                   .dbline 88
 00BC           ;         else
 00BC           ;          {
 00BC                   .dbline 89
 00BC           ;             DisString(1,1,"DS18B20 Error!");
 00BC 80E0              ldi R24,<L17
 00BE 90E0              ldi R25,>L17
 00C0 9983              std y+1,R25
 00C2 8883              std y+0,R24
 00C4 21E0              ldi R18,1
 00C6 01E0              ldi R16,1
 00C8 0E940000          xcall _DisString
 00CC                   .dbline 90
 00CC           ;          }
 00CC           L16:
 00CC                   .dbline 91
 00CC           ;       }
 00CC           L13:
 00CC                   .dbline 92
 00CC           L11:
 00CC                   .dbline 77
 00CC E2CF              xjmp L10
 00CE           X0:
 00CE                   .dbline -2
 00CE           L8:
 00CE 2296              adiw R28,2
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbsym r temp_data 20 i
 00D2                   .dbend
                        .area data(ram, con, rel)
 0002                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
 0002           L17:
 0002                   .blkb 15
                        .area idata
 0002 44533138423230204572726F722100    .byte 'D,'S,49,56,'B,50,48,32,'E,'r,'r,'o,'r,33,0
                        .area data(ram, con, rel)
 0011                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c
 0011           L9:
 0011                   .blkb 13
                        .area idata
 0011 44533138423230207465737400        .byte 'D,'S,49,56,'B,50,48,32,'t,'e,'s,'t,0
                        .area data(ram, con, rel)
 001E                   .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\main.c

⌨️ 快捷键说明

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