📄 main.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 + -