📄 ds18b20.lis
字号:
.module ds18b20.c
.area text(rom, con, rel)
0000 .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
.area vector(rom, abs)
.org 32
0020 64C0 rjmp _display_int
.area text(rom, con, rel)
0000 .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
.area data(ram, con, rel)
0000 .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
0000 _distable::
0000 .blkb 2
.area idata
0000 272F .byte 39,47
.area data(ram, con, rel)
0002 .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
0002 .blkb 2
.area idata
0002 373F .byte 55,63
.area data(ram, con, rel)
0004 .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
0004 .blkb 2
.area idata
0004 676F .byte 'g,'o
.area data(ram, con, rel)
0006 .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
0006 .blkb 2
.area idata
0006 777F .byte 'w,127
.area data(ram, con, rel)
0008 .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
0008 .blkb 2
.area idata
0008 A7AF .byte 167,175
.area data(ram, con, rel)
000A .dbfile ..\..\..\VB01D6~1\ComTest\DS18b20\ds18b20.c
000A .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
000A .dbsym e distable _distable A[10:10]c
000A _count2::
000A .blkb 1
.area idata
000A 00 .byte 0
.area data(ram, con, rel)
000B .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
000B .dbsym e count2 _count2 c
000B _count1::
000B .blkb 1
.area idata
000B 00 .byte 0
.area data(ram, con, rel)
000C .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
000C .dbsym e count1 _count1 c
.area vector(rom, abs)
.org 26
001A 4EC0 rjmp _timer1_int
.area data(ram, con, rel)
000C .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
000C _count3::
000C .blkb 1
.area idata
000C 00 .byte 0
.area data(ram, con, rel)
000D .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
000D .dbsym e count3 _count3 c
000D _flag1::
000D .blkb 1
.area idata
000D 00 .byte 0
.area data(ram, con, rel)
000E .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
000E .dbsym e flag1 _flag1 c
.area vector(rom, abs)
.org 36
0024 C5C1 rjmp _UartRece_int
.area data(ram, con, rel)
000E .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
.area text(rom, con, rel)
0000 .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
0000 .dbfunc e main _main fI
0000 ; tempL -> R10
0000 ; tempH -> R12
.even
0000 _main::
0000 .dbline -1
0000 .dbline 51
0000 ; /*************************************
0000 ; ds18b20测温程序
0000 ; 文 件 名 :ds18b20.c
0000 ; 设 计 :毕京鹏
0000 ; 最后修改日期:2008.11.13
0000 ; 版 本 :V1.0
0000 ; 主控芯片 :ATMEGA48V
0000 ; 工作频率 :外部16MHz晶振
0000 ; 备注 : 初步:实时测温并显示
0000 ; 1.读数据时的处理方式
0000 ; 2.数据口上需带上拉(5.1K)
0000 ; 3.配置成9位时后三位始终为0,以此类推
0000 ; 4.1s更新一次
0000 ; *************************************/
0000 ; #include<iom48v.h>
0000 ; #include<macros.h>
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; /*DQ 接在PC0上*/
0000 ; #define DQ(x) x ? (PORTC |= 0x01) : (PORTC &= 0xfe)
0000 ; #define DRC(y) y ? (DDRC |= 0x01 ) : (DDRC &= 0xfe)
0000 ; uchar flag;
0000 ; void Init_1wire(void);
0000 ; void WriteByte_1wire(uchar data);
0000 ; uchar ReadByte_1wire(void);
0000 ;
0000 ; void PortInit(void);
0000 ; void delay_1us(void);
0000 ; void delay_10us(uchar n);
0000 ; /*显示有关*/
0000 ; #pragma interrupt_handler display_int:17
0000 ; const uchar distable[]={0x27,0x2f,0x37,0x3f,0x67,0x6f,0x77,0x7f,0xa7,0xaf};
0000 ; // 0 1 2 3 4 5 6 7 8 9
0000 ; uchar time1,time2;
0000 ; uchar count2=0;
0000 ; uchar timeb1,timeb2,timeb3,timeb4,timeb5,timeb6;
0000 ; void convert(void);
0000 ; /*定时有关*/
0000 ; uchar count1=0;
0000 ; #pragma interrupt_handler timer1_int:14
0000 ; /*通信有关*/
0000 ; uchar Rece[2],Send[3];
0000 ; uchar count3=0;
0000 ; uchar flag1=0;
0000 ; void UartInit(void);
0000 ; void UartSend(uchar a[],uchar length);
0000 ; #pragma interrupt_handler UartRece_int:19
0000 ; /*******************主函数********************************/
0000 ; main()
0000 ; { uchar tempH,tempL;
0000 .dbline 52
0000 ; PortInit();
0000 02D1 rcall _PortInit
0002 .dbline 54
0002 ; /***********此部分在初次配置完成后可略去*****************/
0002 ; Init_1wire();
0002 47D1 rcall _Init_1wire
0004 .dbline 55
0004 ; WriteByte_1wire(0xcc);
0004 0CEC ldi R16,204
0006 61D1 rcall _WriteByte_1wire
0008 .dbline 56
0008 ; WriteByte_1wire(0x4e); //Write Scratchpad
0008 0EE4 ldi R16,78
000A 5FD1 rcall _WriteByte_1wire
000C .dbline 57
000C ; WriteByte_1wire(0x7f); //TH
000C 0FE7 ldi R16,127
000E 5DD1 rcall _WriteByte_1wire
0010 .dbline 58
0010 ; WriteByte_1wire(0xff); //TL
0010 0FEF ldi R16,255
0012 5BD1 rcall _WriteByte_1wire
0014 .dbline 59
0014 ; WriteByte_1wire(0x1f); //CONFIGURATION REGISTER 9位
0014 0FE1 ldi R16,31
0016 59D1 rcall _WriteByte_1wire
0018 .dbline 61
0018 ;
0018 ; Init_1wire();
0018 3CD1 rcall _Init_1wire
001A .dbline 62
001A ; WriteByte_1wire(0xcc);
001A 0CEC ldi R16,204
001C 56D1 rcall _WriteByte_1wire
001E .dbline 63
001E ; WriteByte_1wire(0x48); //Copy Scratchpad
001E 08E4 ldi R16,72
0020 54D1 rcall _WriteByte_1wire
0022 .dbline 65
0022 ; /***********************************************/
0022 ; SEI();
0022 7894 sei
0024 39C0 rjmp L3
0026 L2:
0026 .dbline 67
0026 ; while(1)
0026 ; {if(count1==100)
0026 .dbline 67
0026 80910B00 lds R24,_count1
002A 8436 cpi R24,100
002C D9F4 brne L5
002E X0:
002E .dbline 68
002E ; {count1=0;
002E .dbline 68
002E 2224 clr R2
0030 20920B00 sts _count1,R2
0034 .dbline 69
0034 ; Init_1wire();
0034 2ED1 rcall _Init_1wire
0036 .dbline 70
0036 ; WriteByte_1wire(0xcc);
0036 0CEC ldi R16,204
0038 48D1 rcall _WriteByte_1wire
003A .dbline 71
003A ; WriteByte_1wire(0x44);
003A 04E4 ldi R16,68
003C 46D1 rcall _WriteByte_1wire
003E .dbline 72
003E ; DRC(0); //判断转换是否完成
003E 87B1 in R24,0x7
0040 8E7F andi R24,254
0042 87B9 out 0x7,R24
0044 .dbline 73
0044 ; if(!(PINC&0x01));
0044 3099 sbic 0x6,0
0046 00C0 rjmp L7
0048 X1:
0048 .dbline 73
0048 L7:
0048 .dbline 74
0048 ; Init_1wire();
0048 24D1 rcall _Init_1wire
004A .dbline 75
004A ; WriteByte_1wire(0xcc);
004A 0CEC ldi R16,204
004C 3ED1 rcall _WriteByte_1wire
004E .dbline 76
004E ; WriteByte_1wire(0xbe);
004E 0EEB ldi R16,190
0050 3CD1 rcall _WriteByte_1wire
0052 .dbline 77
0052 ; tempL = ReadByte_1wire();
0052 5CD1 rcall _ReadByte_1wire
0054 A02E mov R10,R16
0056 .dbline 78
0056 ; tempH = ReadByte_1wire();
0056 5AD1 rcall _ReadByte_1wire
0058 C02E mov R12,R16
005A .dbline 80
005A ;
005A ; time1=tempH;
005A C0920C00 sts _time1,R12
005E .dbline 81
005E ; time2=tempL;
005E A0920B00 sts _time2,R10
0062 .dbline 82
0062 ; convert();
0062 EED0 rcall _convert
0064 .dbline 83
0064 ; }
0064 L5:
0064 .dbline 84
0064 ; if(flag1==1)
0064 80910D00 lds R24,_flag1
0068 8130 cpi R24,1
006A B1F4 brne L9
006C X2:
006C .dbline 85
006C ; {flag1=0;
006C .dbline 85
006C 2224 clr R2
006E 20920D00 sts _flag1,R2
0072 .dbline 86
0072 ; if((Rece[0]=='S')&&(Rece[1]=='T'))
0072 80910300 lds R24,_Rece
0076 8335 cpi R24,83
0078 79F4 brne L11
007A X3:
007A 80910400 lds R24,_Rece+1
007E 8435 cpi R24,84
0080 59F4 brne L11
0082 X4:
0082 .dbline 87
0082 ; {Send[0]='#';
0082 .dbline 87
0082 83E2 ldi R24,35
0084 80930000 sts _Send,R24
0088 .dbline 88
0088 ; Send[1]=tempH;
0088 C0920100 sts _Send+1,R12
008C .dbline 89
008C ; Send[2]=tempL;
008C A0920200 sts _Send+2,R10
0090 .dbline 90
0090 ; UartSend(Send,3); //向上位机发送数据
0090 23E0 ldi R18,3
0092 00E0 ldi R16,<_Send
0094 10E0 ldi R17,>_Send
0096 B0D1 rcall _UartSend
0098 .dbline 91
0098 ; }
0098 L11:
0098 .dbline 92
0098 ; }
0098 L9:
0098 .dbline 93
0098 ; }
0098 L3:
0098 .dbline 66
0098 C6CF rjmp L2
009A X5:
009A .dbline -2
009A L1:
009A .dbline 0 ; func end
009A 0895 ret
009C .dbsym r tempL 10 c
009C .dbsym r tempH 12 c
009C .dbend
009C .dbfunc e timer1_int _timer1_int fV
.even
009C _timer1_int::
009C 8A93 st -y,R24
009E 9A93 st -y,R25
00A0 8FB7 IN R24,63
00A2 8A93 st -y,R24
00A4 .dbline -1
00A4 .dbline 98
00A4 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -