📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\桌面\ds18b20\main.c
0000 .dbfunc e USART_Init _USART_Init fV
0000 ; tmp -> R10,R11
0000 ; baud -> R10,R11
.even
0000 _USART_Init::
0000 0E940000 xcall push_gset3
0004 5801 movw R10,R16
0006 .dbline -1
0006 .dbline 20
0006 ; /****************************************Copyright (c)**************************************************
0006 ; ** 杭 州 鑫 高 科 技 有 限 公 司
0006 ; ** 开 发 部
0006 ; ** http://www.hzxingao.com
0006 ; ** 文 件 名: main.c
0006 ; ** 最后修改日期: 2005年05月11日
0006 ; ** 描 述:
0006 ; ** 版 本: V1.0
0006 ; ** 主 控 芯 片:M16 晶振频率:7.3728MHZ, 波特率19200
0006 ; **********************************************************************************************************/
0006 ; #include <iom16v.h>
0006 ; #include <macros.h>
0006 ; #include "define.h"
0006 ; #include "function.h"
0006 ; #include "para.h"
0006 ;
0006 ; #define F_CPU 7372800
0006 ;
0006 ; void USART_Init( unsigned int baud )
0006 ; {
0006 .dbline 23
0006 ; unsigned int tmp;
0006 ; /* 设置波特率*/
0006 ; tmp= F_CPU/baud/16-1;
0006 1501 movw R2,R10
0008 4424 clr R4
000A 5524 clr R5
000C 40E0 ldi R20,0
000E 50E8 ldi R21,128
0010 60E7 ldi R22,112
0012 70E0 ldi R23,0
0014 5A92 st -y,R5
0016 4A92 st -y,R4
0018 3A92 st -y,R3
001A 2A92 st -y,R2
001C 8A01 movw R16,R20
001E 9B01 movw R18,R22
0020 0E940000 xcall div32s
0024 40E1 ldi R20,16
0026 50E0 ldi R21,0
0028 60E0 ldi R22,0
002A 70E0 ldi R23,0
002C 7A93 st -y,R23
002E 6A93 st -y,R22
0030 5A93 st -y,R21
0032 4A93 st -y,R20
0034 0E940000 xcall div32s
0038 1801 movw R2,R16
003A 2901 movw R4,R18
003C 41E0 ldi R20,1
003E 50E0 ldi R21,0
0040 60E0 ldi R22,0
0042 70E0 ldi R23,0
0044 241A sub R2,R20
0046 350A sbc R3,R21
0048 460A sbc R4,R22
004A 570A sbc R5,R23
004C 5101 movw R10,R2
004E .dbline 24
004E ; UBRRH = (unsigned char)(tmp>>8);
004E 232C mov R2,R3
0050 3324 clr R3
0052 20BC out 0x20,R2
0054 .dbline 25
0054 ; UBRRL = (unsigned char)tmp;
0054 A9B8 out 0x9,R10
0056 .dbline 27
0056 ; /* 接收器与发送器使能*/
0056 ; UCSRB = (1<<RXEN)|(1<<TXEN);
0056 88E1 ldi R24,24
0058 8AB9 out 0xa,R24
005A .dbline 29
005A ; /* 设置帧格式: 8 个数据位, 2 个停止位*/
005A ; UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
005A 8EE8 ldi R24,142
005C 80BD out 0x20,R24
005E .dbline -2
005E L1:
005E 0E940000 xcall pop_gset3
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbsym r tmp 10 i
0064 .dbsym r baud 10 i
0064 .dbend
0064 .dbfunc e USART_Transmit _USART_Transmit fV
0064 ; data -> R16
.even
0064 _USART_Transmit::
0064 .dbline -1
0064 .dbline 34
0064 ; }
0064 ;
0064 ; // 数据发送【发送5 到8 位数据位的帧】
0064 ; void USART_Transmit( unsigned char data )
0064 ; {
0064 L3:
0064 .dbline 37
0064 L4:
0064 .dbline 36
0064 ; /* 等待发送缓冲器为空 */
0064 ; while ( !( UCSRA & (1<<UDRE)) )
0064 5D9B sbis 0xb,5
0066 FECF rjmp L3
0068 .dbline 39
0068 ; ;
0068 ; /* 将数据放入缓冲器,发送数据 */
0068 ; UDR = data;
0068 0CB9 out 0xc,R16
006A .dbline -2
006A L2:
006A .dbline 0 ; func end
006A 0895 ret
006C .dbsym r data 16 c
006C .dbend
006C .dbfunc e delay _delay fV
006C ; i -> R20,R21
.even
006C _delay::
006C 0E940000 xcall push_gset1
0070 .dbline -1
0070 .dbline 44
0070 ; }
0070 ;
0070 ;
0070 ; void delay(void)
0070 ; {
0070 .dbline 46
0070 ; unsigned int i;
0070 ; for(i=1255;i!=0;i--)
0070 47EE ldi R20,1255
0072 54E0 ldi R21,4
0074 05C0 xjmp L10
0076 L7:
0076 .dbline 47
0076 0FEF ldi R16,255
0078 0E940000 xcall _delayUs
007C L8:
007C .dbline 46
007C 4150 subi R20,1
007E 5040 sbci R21,0
0080 L10:
0080 .dbline 46
0080 4030 cpi R20,0
0082 4507 cpc R20,R21
0084 C1F7 brne L7
0086 X0:
0086 .dbline -2
0086 L6:
0086 0E940000 xcall pop_gset1
008A .dbline 0 ; func end
008A 0895 ret
008C .dbsym r i 20 i
008C .dbend
008C .dbfunc e main _main fV
008C ; temp -> R20
.even
008C _main::
008C .dbline -1
008C .dbline 54
008C ; delayUs(255);
008C ; }
008C ;
008C ;
008C ; WORD i;
008C ;
008C ; void main()
008C ; {
008C .dbline 56
008C ;
008C ; unsigned char temp=0;
008C 4427 clr R20
008E .dbline 58
008E ;
008E ; port_init();
008E 0E940000 xcall _port_init
0092 .dbline 60
0092 ;
0092 ; USART_Init(9600); //波特率9600 初始化串口
0092 00E8 ldi R16,9600
0094 15E2 ldi R17,37
0096 B4DF xcall _USART_Init
0098 .dbline 61
0098 ; USART_Transmit('O');
0098 0FE4 ldi R16,79
009A E4DF xcall _USART_Transmit
009C .dbline 62
009C ; USART_Transmit('K');
009C 0BE4 ldi R16,75
009E E2DF xcall _USART_Transmit
00A0 29C0 xjmp L13
00A2 L12:
00A2 .dbline 65
00A2 ;
00A2 ; while(1)
00A2 ; {
00A2 .dbline 66
00A2 ; USART_Transmit(0x0d); //发送一个回车
00A2 0DE0 ldi R16,13
00A4 DFDF xcall _USART_Transmit
00A6 .dbline 67
00A6 ; USART_Transmit(0x0a); //发送一个换行
00A6 0AE0 ldi R16,10
00A8 DDDF xcall _USART_Transmit
00AA .dbline 68
00AA ; i=resetDS18B20();
00AA 0E940000 xcall _resetDS18B20
00AE 202E mov R2,R16
00B0 3324 clr R3
00B2 30920100 sts _i+1,R3
00B6 20920000 sts _i,R2
00BA .dbline 69
00BA ; i=readTempDS18B20();
00BA 0E940000 xcall _readTempDS18B20
00BE 10930100 sts _i+1,R17
00C2 00930000 sts _i,R16
00C6 .dbline 70
00C6 ; if(i&(1<<3)) //判断倒数第四位是1还是0
00C6 03FF sbrs R16,3
00C8 06C0 rjmp L15
00CA .dbline 71
00CA ; {
00CA .dbline 72
00CA ; temp=i>>4+1;
00CA 25E0 ldi R18,5
00CC 30E0 ldi R19,0
00CE 0E940000 xcall lsr16
00D2 402F mov R20,R16
00D4 .dbline 73
00D4 ; }
00D4 0CC0 xjmp L16
00D6 L15:
00D6 .dbline 75
00D6 ; else
00D6 ; {
00D6 .dbline 76
00D6 ; temp=i>>4;
00D6 40910000 lds R20,_i
00DA 50910100 lds R21,_i+1
00DE 5695 lsr R21
00E0 4795 ror R20
00E2 5695 lsr R21
00E4 4795 ror R20
00E6 5695 lsr R21
00E8 4795 ror R20
00EA 5695 lsr R21
00EC 4795 ror R20
00EE .dbline 77
00EE ; }
00EE L16:
00EE .dbline 78
00EE 042F mov R16,R20
00F0 B9DF xcall _USART_Transmit
00F2 .dbline 79
00F2 BCDF xcall _delay
00F4 .dbline 80
00F4 L13:
00F4 .dbline 64
00F4 D6CF xjmp L12
00F6 X1:
00F6 .dbline -2
00F6 L11:
00F6 .dbline 0 ; func end
00F6 0895 ret
00F8 .dbsym r temp 20 c
00F8 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\桌面\ds18b20\main.c
0000 _i::
0000 .blkb 2
0002 .dbsym e i _i i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -