📄 main.lst
字号:
00ED 2422 CLR R2
00EE BA2A OUT 0x1A,R2
(0024) PORTB = 0xFF;
00EF BB88 OUT 0x18,R24
(0025) DDRB = 0xFF; //输出
00F0 BB87 OUT 0x17,R24
(0026) PORTC = 0xFF; //m103 output only
00F1 BB85 OUT 0x15,R24
(0027) DDRC = 0xFF; //输出
00F2 BB84 OUT 0x14,R24
(0028) DDRD = 0xFF;
00F3 BB81 OUT 0x11,R24
(0029) PORTD = 0xFF;
00F4 BB82 OUT 0x12,R24
00F5 9508 RET
_USART_Init:
tmp --> R10
baud --> R10
00F6 940E01ED CALL push_gset3
00F8 0158 MOVW R10,R16
FILE: D:\桌面\ds18b20\main.c
(0001) /****************************************Copyright (c)**************************************************
(0002) ** 杭 州 鑫 高 科 技 有 限 公 司
(0003) ** 开 发 部
(0004) ** http://www.hzxingao.com
(0005) ** 文 件 名: main.c
(0006) ** 最后修改日期: 2005年05月11日
(0007) ** 描 述:
(0008) ** 版 本: V1.0
(0009) ** 主 控 芯 片:M16 晶振频率:7.3728MHZ, 波特率19200
(0010) **********************************************************************************************************/
(0011) #include <iom16v.h>
(0012) #include <macros.h>
(0013) #include "define.h"
(0014) #include "function.h"
(0015) #include "para.h"
(0016)
(0017) #define F_CPU 7372800
(0018)
(0019) void USART_Init( unsigned int baud )
(0020) {
(0021) unsigned int tmp;
(0022) /* 设置波特率*/
(0023) tmp= F_CPU/baud/16-1;
00F9 0115 MOVW R2,R10
00FA 2444 CLR R4
00FB 2455 CLR R5
00FC E040 LDI R20,0
00FD E850 LDI R21,0x80
00FE E760 LDI R22,0x70
00FF E070 LDI R23,0
0100 925A ST R5,-Y
0101 924A ST R4,-Y
0102 923A ST R3,-Y
0103 922A ST R2,-Y
0104 018A MOVW R16,R20
0105 019B MOVW R18,R22
0106 940E0178 CALL div32s
0108 E140 LDI R20,0x10
0109 E050 LDI R21,0
010A E060 LDI R22,0
010B E070 LDI R23,0
010C 937A ST R23,-Y
010D 936A ST R22,-Y
010E 935A ST R21,-Y
010F 934A ST R20,-Y
0110 940E0178 CALL div32s
0112 0118 MOVW R2,R16
0113 0129 MOVW R4,R18
0114 E041 LDI R20,1
0115 E050 LDI R21,0
0116 E060 LDI R22,0
0117 E070 LDI R23,0
0118 1A24 SUB R2,R20
0119 0A35 SBC R3,R21
011A 0A46 SBC R4,R22
011B 0A57 SBC R5,R23
011C 0151 MOVW R10,R2
(0024) UBRRH = (unsigned char)(tmp>>8);
011D 2C23 MOV R2,R3
011E 2433 CLR R3
011F BC20 OUT 0x20,R2
(0025) UBRRL = (unsigned char)tmp;
0120 B8A9 OUT 0x09,R10
(0026) /* 接收器与发送器使能*/
(0027) UCSRB = (1<<RXEN)|(1<<TXEN);
0121 E188 LDI R24,0x18
0122 B98A OUT 0x0A,R24
(0028) /* 设置帧格式: 8 个数据位, 2 个停止位*/
(0029) UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1);
0123 E88E LDI R24,0x8E
0124 BD80 OUT 0x20,R24
0125 940E01E6 CALL pop_gset3
0127 9508 RET
(0030) }
(0031)
(0032) // 数据发送【发送5 到8 位数据位的帧】
(0033) void USART_Transmit( unsigned char data )
(0034) {
(0035) /* 等待发送缓冲器为空 */
(0036) while ( !( UCSRA & (1<<UDRE)) )
_USART_Transmit:
data --> R16
0128 9B5D SBIS 0x0B,5
0129 CFFE RJMP _USART_Transmit
(0037) ;
(0038) /* 将数据放入缓冲器,发送数据 */
(0039) UDR = data;
012A B90C OUT 0x0C,R16
012B 9508 RET
_delay:
i --> R20
012C 940E01F1 CALL push_gset1
(0040) }
(0041)
(0042)
(0043) void delay(void)
(0044) {
(0045) unsigned int i;
(0046) for(i=1255;i!=0;i--)
012E EE47 LDI R20,0xE7
012F E054 LDI R21,4
0130 C005 RJMP 0x0136
(0047) delayUs(255);
0131 EF0F LDI R16,0xFF
0132 940E004B CALL _delayUs
0134 5041 SUBI R20,1
0135 4050 SBCI R21,0
0136 3040 CPI R20,0
0137 0745 CPC R20,R21
0138 F7C1 BNE 0x0131
0139 940E01F4 CALL pop_gset1
013B 9508 RET
(0048) }
(0049)
(0050)
(0051) WORD i;
(0052)
(0053) void main()
(0054) {
(0055)
(0056) unsigned char temp=0;
_main:
temp --> R20
013C 2744 CLR R20
(0057)
(0058) port_init();
013D 940E00EB CALL _port_init
(0059)
(0060) USART_Init(9600); //波特率9600 初始化串口
013F E800 LDI R16,0x80
0140 E215 LDI R17,0x25
0141 DFB4 RCALL _USART_Init
(0061) USART_Transmit('O');
0142 E40F LDI R16,0x4F
0143 DFE4 RCALL _USART_Transmit
(0062) USART_Transmit('K');
0144 E40B LDI R16,0x4B
0145 DFE2 RCALL _USART_Transmit
0146 C029 RJMP 0x0170
(0063)
(0064) while(1)
(0065) {
(0066) USART_Transmit(0x0d); //发送一个回车
0147 E00D LDI R16,0xD
0148 DFDF RCALL _USART_Transmit
(0067) USART_Transmit(0x0a); //发送一个换行
0149 E00A LDI R16,0xA
014A DFDD RCALL _USART_Transmit
(0068) i=resetDS18B20();
014B 940E0051 CALL _resetDS18B20
014D 2E20 MOV R2,R16
014E 2433 CLR R3
014F 92300061 STS i+1,R3
0151 92200060 STS i,R2
(0069) i=readTempDS18B20();
0153 940E00D2 CALL _readTempDS18B20
0155 93100061 STS i+1,R17
0157 93000060 STS i,R16
(0070) if(i&(1<<3)) //判断倒数第四位是1还是0
0159 FF03 SBRS R16,3
015A C006 RJMP 0x0161
(0071) {
(0072) temp=i>>4+1;
015B E025 LDI R18,5
015C E030 LDI R19,0
015D 940E0208 CALL lsr16
015F 2F40 MOV R20,R16
(0073) }
0160 C00C RJMP 0x016D
(0074) else
(0075) {
(0076) temp=i>>4;
0161 91400060 LDS R20,i
0163 91500061 LDS R21,i+1
0165 9556 LSR R21
0166 9547 ROR R20
0167 9556 LSR R21
0168 9547 ROR R20
0169 9556 LSR R21
016A 9547 ROR R20
016B 9556 LSR R21
016C 9547 ROR R20
(0077) }
(0078) USART_Transmit(temp);
016D 2F04 MOV R16,R20
016E DFB9 RCALL _USART_Transmit
(0079) delay();
FILE: <library>
016F DFBC RCALL _delay
0170 CFD6 RJMP 0x0147
0171 9508 RET
div32u:
0172 94E8 BCLR 6
0173 C001 RJMP 0x0175
mod32u:
0174 9468 BSET 6
0175 D02F RCALL long_div_prolog
0176 24CC CLR R12
0177 C008 RJMP 0x0180
div32s:
0178 94E8 BCLR 6
0179 C001 RJMP 0x017B
mod32s:
017A 9468 BSET 6
017B D029 RCALL long_div_prolog
017C FD37 SBRC R19,7
017D D053 RCALL neg_R16_R19
017E FDB7 SBRC R27,7
017F D05A RCALL neg_R24_R27
0180 2477 CLR R7
0181 2488 CLR R8
0182 2499 CLR R9
0183 24AA CLR R10
0184 24BB CLR R11
0185 D041 RCALL tst_R16_R19
0186 F0C1 BEQ 0x019F
0187 D044 RCALL tst_R24_R27
0188 F0B1 BEQ 0x019F
0189 E2E8 LDI R30,0x28
018A 0F00 LSL R16
018B 1F11 ROL R17
018C 1F22 ROL R18
018D 1F33 ROL R19
018E 1C77 ROL R7
018F 1C88 ROL R8
0190 1C99 ROL R9
0191 1CAA ROL R10
0192 1CBB ROL R11
0193 1688 CP R8,R24
0194 0699 CPC R9,R25
0195 06AA CPC R10,R26
0196 06BB CPC R11,R27
0197 F028 BCS 0x019D
0198 1A88 SUB R8,R24
0199 0A99 SBC R9,R25
019A 0AAA SBC R10,R26
019B 0ABB SBC R11,R27
019C 9503 INC R16
019D 95EA DEC R30
019E F759 BNE 0x018A
019F F426 BRTC 0x01A4
01A0 2D08 MOV R16,R8
01A1 2D19 MOV R17,R9
01A2 2D2A MOV R18,R10
01A3 2D3B MOV R19,R11
01A4 C013 RJMP long_div_epilog
long_div_prolog:
01A5 927A ST R7,-Y
01A6 928A ST R8,-Y
01A7 929A ST R9,-Y
01A8 92AA ST R10,-Y
01A9 92BA ST R11,-Y
01AA 92CA ST R12,-Y
01AB 93EA ST R30,-Y
01AC 938A ST R24,-Y
01AD 939A ST R25,-Y
01AE 93AA ST R26,-Y
01AF 93BA ST R27,-Y
01B0 858B LDD R24,Y+11
01B1 859C LDD R25,Y+12
01B2 85AD LDD R26,Y+13
01B3 85BE LDD R27,Y+14
01B4 2EC3 MOV R12,R19
01B5 F00E BRTS 0x01B7
01B6 26CB EOR R12,R27
01B7 9508 RET
long_div_epilog:
01B8 FCC7 SBRC R12,7
01B9 D017 RCALL neg_R16_R19
01BA 91B9 LD R27,Y+
01BB 91A9 LD R26,Y+
01BC 9199 LD R25,Y+
01BD 9189 LD R24,Y+
01BE 91E9 LD R30,Y+
01BF 90C9 LD R12,Y+
01C0 90B9 LD R11,Y+
01C1 90A9 LD R10,Y+
01C2 9099 LD R9,Y+
01C3 9089 LD R8,Y+
01C4 9079 LD R7,Y+
01C5 9624 ADIW R28,4
01C6 9508 RET
tst_R16_R19:
01C7 2FE0 MOV R30,R16
01C8 2BE1 OR R30,R17
01C9 2BE2 OR R30,R18
01CA 2BE3 OR R30,R19
01CB 9508 RET
tst_R24_R27:
01CC 2FE8 MOV R30,R24
01CD 2BE9 OR R30,R25
01CE 2BEA OR R30,R26
01CF 2BEB OR R30,R27
01D0 9508 RET
neg_R16_R19:
01D1 9500 COM R16
01D2 9510 COM R17
01D3 9520 COM R18
01D4 9530 COM R19
01D5 5F0F SUBI R16,0xFF
01D6 4F1F SBCI R17,0xFF
01D7 4F2F SBCI R18,0xFF
01D8 4F3F SBCI R19,0xFF
01D9 9508 RET
neg_R24_R27:
01DA 9580 COM R24
01DB 9590 COM R25
01DC 95A0 COM R26
01DD 95B0 COM R27
01DE 5F8F SUBI R24,0xFF
01DF 4F9F SBCI R25,0xFF
01E0 4FAF SBCI R26,0xFF
01E1 4FBF SBCI R27,0xFF
01E2 9508 RET
pop_gset2:
01E3 E0E2 LDI R30,2
01E4 940C01F5 JMP pop
pop_gset3:
01E6 E0E4 LDI R30,4
01E7 940C01F5 JMP pop
push_gset5:
01E9 92FA ST R15,-Y
01EA 92EA ST R14,-Y
push_gset4:
01EB 92DA ST R13,-Y
01EC 92CA ST R12,-Y
push_gset3:
01ED 92BA ST R11,-Y
01EE 92AA ST R10,-Y
push_gset2:
01EF 937A ST R23,-Y
01F0 936A ST R22,-Y
push_gset1:
01F1 935A ST R21,-Y
01F2 934A ST R20,-Y
01F3 9508 RET
pop_gset1:
01F4 E0E1 LDI R30,1
pop:
01F5 9149 LD R20,Y+
01F6 9159 LD R21,Y+
01F7 FDE0 SBRC R30,0
01F8 9508 RET
01F9 9169 LD R22,Y+
01FA 9179 LD R23,Y+
01FB FDE1 SBRC R30,1
01FC 9508 RET
01FD 90A9 LD R10,Y+
01FE 90B9 LD R11,Y+
01FF FDE2 SBRC R30,2
0200 9508 RET
0201 90C9 LD R12,Y+
0202 90D9 LD R13,Y+
0203 FDE3 SBRC R30,3
0204 9508 RET
0205 90E9 LD R14,Y+
0206 90F9 LD R15,Y+
0207 9508 RET
lsr16:
0208 2322 TST R18
0209 F021 BEQ 0x020E
020A 9516 LSR R17
020B 9507 ROR R16
020C 952A DEC R18
020D CFFA RJMP lsr16
020E 9508 RET
lsr8:
020F 2311 TST R17
0210 F019 BEQ 0x0214
0211 9506 LSR R16
0212 951A DEC R17
0213 CFFB RJMP lsr8
0214 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -