📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _JS::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0001 .dbsym e JS _JS c
0001 _JC::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0002 .dbsym e JC _JC c
0002 _JSM::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0003 .dbsym e JSM _JSM c
0003 _mcount::
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0004 .dbsym e mcount _mcount c
0004 _TIMEHH::
0004 .blkb 2
.area idata
0004 0000 .word 0
.area data(ram, con, rel)
0006 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0006 .dbsym e TIMEHH _TIMEHH i
0006 _jydata::
0006 .blkb 4
.area idata
0006 00000000 .word 0,0
.area data(ram, con, rel)
000A .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
000A .dbsym e jydata _jydata L
.area vector(rom, abs)
.org 44
002C 0C940000 jmp _uart0_rx_isr
.area data(ram, con, rel)
000A .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
.area text(rom, con, rel)
0000 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0000 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0000 _uart0_rx_isr::
0000 2A92 st -y,R2
0002 2FB6 in R2,0x3f
0004 2A92 st -y,R2
0006 .dbline -1
0006 .dbline 46
0006 ; /**************************************
0006 ; **工程名称:雪深探测
0006 ; **编译器类型及版本:ICCAVR 6.31A
0006 ; **日期:2006.2.13
0006 ; **创建人:覃道堂
0006 ; **所属公司:北京华创升达
0006 ; **************************************/
0006 ; #include <iom16v.h>
0006 ; #include <macros.h>
0006 ; #include "init.h"
0006 ; #include "Uart.h"
0006 ; #include "crc.h"
0006 ; #include "Eeprom16.h"
0006 ; #include "DS18B20.H"
0006 ; //============================================================
0006 ; //定义串口缓冲,同时声明数据Buffer
0006 ; unsigned char SendData[100];
0006 ; unsigned char SendBuf[100];
0006 ; unsigned char ReceiveBuf[150];
0006 ; //============================================================
0006 ; //申明外部温度变量
0006 ; extern float temperature;
0006 ; //============================================================
0006 ; //定义EE缓冲变量
0006 ; unsigned char EEBuffer[100];
0006 ; extern a b;
0006 ; //AT91S_PMC pAic1;
0006 ; char JS=0,JC=0,JSM=0,mcount=0;
0006 ; unsigned int TIMEL,TIMEH,TIMEHH=0;//超声波检测时间的低位字节和高位字节
0006 ; long int LENGTH,jydata=0;
0006 ; /**************************************
0006 ; **芯片类型:ATmega16
0006 ; **时钟频率:8M
0006 ; **硬件接口说明:无
0006 ; **函数功能说明:接收从串口接收到的数据
0006 ; **函数输入参数及说明:无
0006 ; **函数返回值:无
0006 ; **在本函数以外定义的变量:字符型JSM
0006 ; **调用的函数说明:无
0006 ; **修改人:
0006 ; **修改日期:
0006 ; **修改说明:
0006 ; **************************************/
0006 ; #pragma interrupt_handler uart0_rx_isr:12
0006 ; void uart0_rx_isr(void)
0006 ; {
0006 .dbline 47
0006 ; JSM=UDR;
0006 2CB0 in R2,0xc
0008 20920200 sts _JSM,R2
000C .dbline -2
000C .dbline 48
000C ; }
000C L1:
000C 2990 ld R2,y+
000E 2FBE out 0x3f,R2
0010 2990 ld R2,y+
0012 .dbline 0 ; func end
0012 1895 reti
0014 .dbend
.area vector(rom, abs)
.org 36
0024 0C940A00 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0014 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0014 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0014 _timer0_ovf_isr::
0014 2A92 st -y,R2
0016 8A93 st -y,R24
0018 9A93 st -y,R25
001A 2FB6 in R2,0x3f
001C 2A92 st -y,R2
001E .dbline -1
001E .dbline 64
001E .dbline 65
001E 8DE3 ldi R24,61
0020 82BF out 0x32,R24
0022 .dbline 66
0022 80910300 lds R24,_mcount
0026 8F5F subi R24,255 ; addi 1
0028 80930300 sts _mcount,R24
002C .dbline 67
002C 8830 cpi R24,8
002E 31F4 brne L3
0030 .dbline 68
0030 .dbline 68
0030 2224 clr R2
0032 20920300 sts _mcount,R2
0036 .dbline 69
0036 8FEF ldi R24,255
0038 80930100 sts _JC,R24
003C .dbline 69
003C L3:
003C .dbline -2
003C .dbline 70
003C ; /**************************************
003C ; **芯片类型:ATmega16
003C ; **时钟频率:4M
003C ; **硬件接口说明:无
003C ; **函数功能说明:利用定时器0使检测标志5HZ变化一次
003C ; **函数输入参数及说明:无
003C ; **函数返回值:无
003C ; **在本函数以外定义的变量:无
003C ; **调用的函数说明:无
003C ; **修改人:
003C ; **修改日期:
003C ; **修改说明:
003C ; **************************************/
003C ; #pragma interrupt_handler timer0_ovf_isr:10
003C ; void timer0_ovf_isr(void)
003C ; {
003C ; TCNT0 = 0x3D;//reload counter value
003C ; mcount++;
003C ; if(mcount==8)
003C ; {mcount=0;
003C ; JC=0xFF;}
003C ; }
003C L2:
003C 2990 ld R2,y+
003E 2FBE out 0x3f,R2
0040 9991 ld R25,y+
0042 8991 ld R24,y+
0044 2990 ld R2,y+
0046 .dbline 0 ; func end
0046 1895 reti
0048 .dbend
.area vector(rom, abs)
.org 4
0004 0C942400 jmp _int0_isr
.area text(rom, con, rel)
0048 .dbfile D:\MY_COMPUTER\d\avr16\atmegal16\main.c
0048 .dbfunc e int0_isr _int0_isr fV
.even
0048 _int0_isr::
0048 2A92 st -y,R2
004A 3A92 st -y,R3
004C 8A93 st -y,R24
004E 2FB6 in R2,0x3f
0050 2A92 st -y,R2
0052 .dbline -1
0052 .dbline 87
0052 ; /**************************************
0052 ; **芯片类型:ATmega16
0052 ; **时钟频率:4M
0052 ; **硬件接口说明:无
0052 ; **函数功能说明:利用外部中断0来检测超声波传感器回波
0052 ; 收到回波后将计数器的值保存,并置位回波标志
0052 ; **函数输入参数及说明:无
0052 ; **函数返回值:无
0052 ; **在本函数以外定义的变量:TIMEL、TIMEH、JS
0052 ; **调用的函数说明:无
0052 ; **修改人:
0052 ; **修改日期:
0052 ; **修改说明:
0052 ; **************************************/
0052 ; #pragma interrupt_handler int0_isr:02
0052 ; void int0_isr(void)
0052 ; {
0052 .dbline 88
0052 ; TCCR1B =0x00;
0052 2224 clr R2
0054 2EBC out 0x2e,R2
0056 .dbline 89
0056 ; TIMEL =TCNT1L;
0056 2CB4 in R2,0x2c
0058 3324 clr R3
005A 30920700 sts _TIMEL+1,R3
005E 20920600 sts _TIMEL,R2
0062 .dbline 90
0062 ; TIMEH =TCNT1H;
0062 2DB4 in R2,0x2d
0064 3324 clr R3
0066 30920500 sts _TIMEH+1,R3
006A 20920400 sts _TIMEH,R2
006E .dbline 91
006E ; JS =0xFF;
006E 8FEF ldi R24,255
0070 80930000 sts _JS,R24
0074 .dbline -2
0074 .dbline 92
0074 ; }
0074 L5:
0074 2990 ld R2,y+
0076 2FBE out 0x3f,R2
0078 8991 ld R24,y+
007A 3990 ld R3,y+
007C 2990 ld R2,y+
007E .dbline 0 ; func end
007E 1895 reti
0080 .dbend
0080 .dbfunc e measure _measure fL
0080 ; i -> R16
.even
0080 _measure::
0080 0E940000 xcall push_gset2
0084 .dbline -1
0084 .dbline 107
0084 ; /**************************************
0084 ; **芯片类型:ATmega16
0084 ; **时钟频率:8M
0084 ; **硬件接口说明:无
0084 ; **函数功能说明:检测函数,向超声波传感器发送检测脉冲同时启动定时器1进行计时
0084 ; **函数输入参数及说明:无
0084 ; **函数返回值:LENGTH
0084 ; **在本函数以外定义的变量:TIMEL、TIMEH、LENGTH、JS
0084 ; **调用的函数说明:无
0084 ; **修改人:
0084 ; **修改日期:
0084 ; **修改说明:
0084 ; **************************************/
0084 ; long int measure(void)
0084 ; {unsigned char i;
0084 .dbline 108
0084 ; DDRA|=0x20;
0084 D59A sbi 0x1a,5
0086 .dbline 109
0086 ; DDRD|=0x80;
0086 8F9A sbi 0x11,7
0088 .dbline 110
0088 ; TCNT1H=0x00;
0088 2224 clr R2
008A 2DBC out 0x2d,R2
008C .dbline 111
008C ; TCNT1L=0x00;
008C 2CBC out 0x2c,R2
008E .dbline 112
008E ; LENGTH=0x00;
008E 40E0 ldi R20,0
0090 50E0 ldi R21,0
0092 60E0 ldi R22,0
0094 70E0 ldi R23,0
0096 50930100 sts _LENGTH+1,R21
009A 40930000 sts _LENGTH,R20
009E 70930300 sts _LENGTH+2+1,R23
00A2 60930200 sts _LENGTH+2,R22
00A6 .dbline 113
00A6 ; PORTA&=0xdf;
00A6 8BB3 in R24,0x1b
00A8 8F7D andi R24,223
00AA 8BBB out 0x1b,R24
00AC .dbline 114
00AC ; TCCR1B = 0x02; //clk I/O/8(来自预分频器) 0.125us(微秒)
00AC 82E0 ldi R24,2
00AE 8EBD out 0x2e,R24
00B0 .dbline 115
00B0 0027 clr R16
00B2 01C0 xjmp L10
00B4 L7:
00B4 .dbline 115
00B4 L8:
00B4 .dbline 115
00B4 0395 inc R16
00B6 L10:
00B6 .dbline 115
00B6 ; for(i=0;i<50;i++);
00B6 0233 cpi R16,50
00B8 E8F3 brlo L7
00BA .dbline 116
00BA ; PORTD&=0x7f;
00BA 82B3 in R24,0x12
00BC 8F77 andi R24,127
00BE 82BB out 0x12,R24
00C0 .dbline 117
00C0 ; PORTD|=0x80;
00C0 979A sbi 0x12,7
00C2 L11:
00C2 .dbline 120
00C2 L12:
00C2 .dbline 120
00C2 ; //for(i=0;i<50;i++);
00C2 ; //PORTA&=0xdf;
00C2 ; while(JS==0x00);
00C2 20900000 lds R2,_JS
00C6 2220 tst R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -