📄 main.lis
字号:
.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 + -