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

📄 main.lis

📁 非常经典的基于AVR m16的DS18B20 C 程序 !1
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\DS18B20\main.c
 0000                   .dbfile E:\DS18B20\ds18b20.h
 0000                   .dbfunc e rst_DS18B20 _rst_DS18B20 fc
 0000           ;        errTime -> R20
                        .even
 0000           _rst_DS18B20::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 22
 0004           ; /****************************************
 0004           ; ** 文 件 名: main.c                                  **
 0004           ; ** 日    期: 2007年04月08日                      **
 0004           ; ** 描    述: 主函数                                      **
 0004           ; ** 作    者:tonghe                                      **
 0004           ; ** 版  本: V1.0                                          **
 0004           ; ** 主控芯片:M16                                         **
 0004           ; ** 晶振频率:7.3728MHZ, 波特率9600       **
 0004           ; ****************************************/
 0004           ; #include <iom16v.h>
 0004           ; #include <macros.h>
 0004           ; #include <E:\DS18B20\define.h>
 0004           ; #include <E:\DS18B20\function.h>
 0004           ; #include <E:\DS18B20\ds18b20.h>
 0004           ; #include <E:\DS18B20\lcd1602_4h.h>
 0004           ; 
 0004           ; uint i;
 0004           ; uchar xs[5];
 0004           ; 
 0004           ; void xs_zh(uint da)
 0004           ;     {
 0004           ;       uint i=da*10/16;
 0004                   .dbline 23
 0004           ;       lcd_da('+');
 0004 4427              clr R20
 0006                   .dbline 24
 0006           ;       xs[0]=(i/10000+0x30);
 0006 8D98              cbi 0x11,5
 0008                   .dbline 25
 0008           ;       if(xs[0]!=0x30)
 0008 0000              nop
 000A                   .dbline 26
 000A           ;          lcd_da(xs[0]);
 000A 8D9A              sbi 0x11,5
 000C                   .dbline 27
 000C           ;       i=i%10000;
 000C 9598              cbi 0x12,5
 000E                   .dbline 28
 000E           ;       xs[1]=(i/1000+0x30);
 000E 0FEF              ldi R16,255
 0010 10E0              ldi R17,0
 0012 0E940000          xcall _delay_us
 0016                   .dbline 29
 0016           ;       if(xs[1]!=0x30)
 0016 0FEF              ldi R16,255
 0018 10E0              ldi R17,0
 001A 0E940000          xcall _delay_us
 001E                   .dbline 30
 001E           ;          lcd_da(xs[1]);
 001E 0FEF              ldi R16,255
 0020 10E0              ldi R17,0
 0022 0E940000          xcall _delay_us
 0026                   .dbline 32
 0026           ;       i=i%1000;
 0026           ;       xs[2]=(i/100+0x30);
 0026 8D98              cbi 0x11,5
 0028                   .dbline 33
 0028           ;       if(xs[2]!=0x30)
 0028 0000              nop
 002A 0AC0              xjmp L3
 002C           L2:
 002C                   .dbline 35
 002C           ;         lcd_da(xs[2]);
 002C           ;       i=i%100;
 002C                   .dbline 36
 002C           ;       xs[3]=(i/10+0x30);
 002C 04E0              ldi R16,4
 002E 10E0              ldi R17,0
 0030 0E940000          xcall _delay_us
 0034                   .dbline 37
 0034           ;       lcd_da(xs[3]);
 0034 4395              inc R20
 0036                   .dbline 38
 0036           ;       lcd_da('.');
 0036 84E1              ldi R24,20
 0038 8417              cp R24,R20
 003A 10F4              brsh L5
 003C                   .dbline 39
 003C           ;       i=i%10;
 003C 0027              clr R16
 003E 11C0              xjmp L1
 0040           L5:
 0040                   .dbline 40
 0040           L3:
 0040                   .dbline 34
 0040 8599              sbic 0x10,5
 0042 F4CF              rjmp L2
 0044                   .dbline 41
 0044           ;       xs[4]=(i+0x30);
 0044           ;       lcd_da(xs[4]);
 0044 4427              clr R20
 0046 0AC0              xjmp L8
 0048           L7:
 0048                   .dbline 43
 0048           ;       lcd_da('C');
 0048           ;       }
 0048                   .dbline 44
 0048           ; 
 0048 04E0              ldi R16,4
 004A 10E0              ldi R17,0
 004C 0E940000          xcall _delay_us
 0050                   .dbline 45
 0050           ; void main()
 0050 4395              inc R20
 0052                   .dbline 46
 0052           ;       {
 0052 82E3              ldi R24,50
 0054 8417              cp R24,R20
 0056 10F4              brsh L10
 0058                   .dbline 47
 0058           ;       port_init();
 0058 0027              clr R16
 005A 03C0              xjmp L1
 005C           L10:
 005C                   .dbline 48
 005C           L8:
 005C                   .dbline 42
 005C 859B              sbis 0x10,5
 005E F4CF              rjmp L7
 0060                   .dbline 49
 0060           ;       PORTB|=1<<3;
 0060           ;       delay_ms(500);
 0060 0FEF              ldi R16,255
 0062                   .dbline -2
 0062           L1:
 0062 0E940000          xcall pop_gset1
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbsym r errTime 20 c
 0068                   .dbend
 0068                   .dbfunc e read_DS18B20 _read_DS18B20 fc
 0068           ;         retVal -> R20
 0068           ;              i -> R22
                        .even
 0068           _read_DS18B20::
 0068 0E940000          xcall push_gset2
 006C                   .dbline -1
 006C                   .dbline 59
 006C           ;       lcd_init();
 006C           ;       delay_ms(100);
 006C           ;       lcd_comm(0x84);                          //写指令:第1行地址
 006C           ;       delay_ms(10);
 006C           ; //    lcd_da(20);     
 006C           ; //    lcd_da(20);
 006C           ; //    lcd_da(20);     
 006C           ; //    lcd_da(20);
 006C           ;       lcd_da('T');                             //温度的前导字
 006C           ;       lcd_da('e');
 006C                   .dbline 61
 006C           ;       lcd_da('m');
 006C           ;       lcd_da('p');
 006C 4427              clr R20
 006E                   .dbline 62
 006E           ;       lcd_da(':');
 006E 8D98              cbi 0x11,5
 0070                   .dbline 63
 0070           ;       while(1)
 0070 68E0              ldi R22,8
 0072 1DC0              xjmp L16
 0074           L13:
 0074                   .dbline 64
 0074           ;           {
 0074                   .dbline 65
 0074           ;               lcd_comm(0xC4);                          //写指令:第2行地址
 0074 4695              lsr R20
 0076                   .dbline 66
 0076           ;               i=rst_DS18B20();
 0076 8D9A              sbi 0x11,5
 0078                   .dbline 67
 0078           ;               i=read_Temp();
 0078 9598              cbi 0x12,5
 007A                   .dbline 68
 007A           ;               xs_zh(i);
 007A 05E0              ldi R16,5
 007C 10E0              ldi R17,0
 007E 0E940000          xcall _delay_us
 0082                   .dbline 69
 0082           ;               delay_ms(200);
 0082 8D98              cbi 0x11,5
 0084                   .dbline 70
 0084           ;               }
 0084 02E0              ldi R16,2
 0086 10E0              ldi R17,0
 0088 0E940000          xcall _delay_us
 008C                   .dbline 71
 008C           ;     }
 008C 859B              sbis 0x10,5
 008E 01C0              rjmp L17
 0090                   .dbline 72
 0090           ; 
 0090 4068              ori R20,128
 0092           L17:
 0092                   .dbline 73
 0092 00E1              ldi R16,16
 0094 10E0              ldi R17,0
 0096 0E940000          xcall _delay_us
 009A                   .dbline 74
 009A 00E1              ldi R16,16
 009C 10E0              ldi R17,0
 009E 0E940000          xcall _delay_us
 00A2                   .dbline 75
 00A2 8D98              cbi 0x11,5
 00A4                   .dbline 76
 00A4 03E2              ldi R16,35
 00A6 10E0              ldi R17,0
 00A8 0E940000          xcall _delay_us
 00AC                   .dbline 77
 00AC           L14:
 00AC                   .dbline 63
 00AC 6A95              dec R22
 00AE           L16:
 00AE                   .dbline 63
 00AE 80E0              ldi R24,0
 00B0 8617              cp R24,R22
 00B2 00F3              brlo L13
 00B4                   .dbline 78
 00B4           ; 
 00B4           ; 
 00B4           ; 
 00B4           ; 
 00B4           ; 
 00B4           ; 
 00B4 02E0              ldi R16,2
 00B6 10E0              ldi R17,0
 00B8 0E940000          xcall _delay_us
 00BC                   .dbline 79
 00BC           ; 
 00BC 042F              mov R16,R20
 00BE                   .dbline -2
 00BE           L12:
 00BE 0E940000          xcall pop_gset2
 00C2                   .dbline 0 ; func end
 00C2 0895              ret
 00C4                   .dbsym r retVal 20 c
 00C4                   .dbsym r i 22 c
 00C4                   .dbend
 00C4                   .dbfunc e write_DS18B20 _write_DS18B20 fV
 00C4           ;           temp -> R20
 00C4           ;              i -> R22
 00C4           ;             wb -> R10
                        .even
 00C4           _write_DS18B20::
 00C4 0E940000          xcall push_gset3
 00C8 A02E              mov R10,R16
 00CA                   .dbline -1
 00CA                   .dbline 89
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA                   .dbline 92
 00CA           ; 
 00CA           ; 
 00CA           ; 
 00CA 8D98              cbi 0x11,5
 00CC                   .dbline 93
 00CC           ; 
 00CC 6627              clr R22
 00CE 1EC0              xjmp L23
 00D0           L20:
 00D0                   .dbline 94
 00D0           ; 
 00D0                   .dbline 95
 00D0           ; 
 00D0 8D9A              sbi 0x11,5
 00D2                   .dbline 96
 00D2           ; 
 00D2 9598              cbi 0x12,5
 00D4                   .dbline 97
 00D4           ; 
 00D4 00E1              ldi R16,16
 00D6 10E0              ldi R17,0
 00D8 0E940000          xcall _delay_us
 00DC                   .dbline 98
 00DC           ; 
 00DC 0A2D              mov R16,R10
 00DE 162F              mov R17,R22
 00E0 0E940000          xcall lsr8
 00E4 402F              mov R20,R16
 00E6                   .dbline 99
 00E6           ; 
 00E6 4170              andi R20,1
 00E8                   .dbline 100
 00E8           ; 
 00E8 11F0              breq L24
 00EA                   .dbline 101
 00EA           ; 
 00EA 8D98              cbi 0x11,5
 00EC 01C0              xjmp L25
 00EE           L24:
 00EE                   .dbline 103
 00EE           ; 
 00EE           ; 
 00EE 9598              cbi 0x12,5
 00F0           L25:
 00F0                   .dbline 104
 00F0 00E1              ldi R16,16
 00F2 10E0              ldi R17,0
 00F4 0E940000          xcall _delay_us
 00F8                   .dbline 105
 00F8 03E2              ldi R16,35
 00FA 10E0              ldi R17,0

⌨️ 快捷键说明

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