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

📄 ds18b20.lis

📁 DS18B20温度监控程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .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 + -