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

📄 main.lst

📁 一个关于AVR单片机的例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
    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 + -