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

📄 pt100.lst

📁 原创
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    0220 E5CF      LDI	R28,0x5F
    0221 E0D4      LDI	R29,4
    0222 BFCD      OUT	0x3D,R28
    0223 BFDE      OUT	0x3E,R29
    0224 51C0      SUBI	R28,0x10
    0225 40D0      SBCI	R29,0
    0226 EA0A      LDI	R16,0xAA
    0227 8308      STD	Y+0,R16
    0228 2400      CLR	R0
    0229 EDE9      LDI	R30,0xD9
    022A E0F0      LDI	R31,0
    022B E011      LDI	R17,1
    022C 3DEE      CPI	R30,0xDE
    022D 07F1      CPC	R31,R17
    022E F011      BEQ	0x0231
    022F 9201      ST	R0,Z+
    0230 CFFB      RJMP	0x022C
    0231 8300      STD	Z+0,R16
    0232 ECE6      LDI	R30,0xC6
    0233 E0F3      LDI	R31,3
    0234 E6A0      LDI	R26,0x60
    0235 E0B0      LDI	R27,0
    0236 E014      LDI	R17,4
    0237 33EF      CPI	R30,0x3F
    0238 07F1      CPC	R31,R17
    0239 F021      BEQ	0x023E
    023A 95C8      LPM
    023B 9631      ADIW	R30,1
    023C 920D      ST	R0,X+
    023D CFF9      RJMP	0x0237
    023E 940E0630  CALL	_main
_exit:
    0240 CFFF      RJMP	_exit
FILE: E:\avrwork3_pt100\eeprom.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003)  
(0004)  
(0005) unsigned char EEPROMread( int location)
(0006) {
(0007)     while (EECR & 0x02);                // Wait until any earlier write is done.
_EEPROMread:
  location             --> R16
    0241 99E1      SBIC	0x1C,1
    0242 CFFE      RJMP	_EEPROMread
(0008)                                         // This is just a safety incase a write
(0009)                                         // was done and is not completed when
(0010)                                         // the read was called. If this test is
(0011)                                         // not done, the current write operation
(0012)                                         // will fail due to that the address or
(0013)                                         // data is changed.
(0014) 
(0015) 	EEAR = location;
    0243 BB1F      OUT	0x1F,R17
    0244 BB0E      OUT	0x1E,R16
(0016)     
(0017)     EECR |= 0x01;                       // Set READ strobe
    0245 9AE0      SBI	0x1C,0
(0018)     
(0019)     return (EEDR);                      // Return byte
    0246 B30D      IN	R16,0x1D
    0247 9508      RET
_EEPROMReadBytes:
  dst                  --> R10
  size                 --> R12
  ptr                  --> Y+6
  addr                 --> R14
    0248 933A      ST	R19,-Y
    0249 932A      ST	R18,-Y
    024A 940E08A7  CALL	push_gset5x
    024C 0178      MOVW	R14,R16
    024D 84C8      LDD	R12,Y+8
    024E 84D9      LDD	R13,Y+9
(0020) }
(0021) 
(0022) 
(0023) void EEPROMReadBytes(int addr, void *ptr, int size)
(0024) 	{
(0025) 	char *dst = ptr;
    024F 80AE      LDD	R10,Y+6
    0250 80BF      LDD	R11,Y+7
    0251 C00A      RJMP	0x025C
(0026) 
(0027) 	while (size--)
(0028) 		{
(0029) 		*dst = EEPROMread(addr);
    0252 0187      MOVW	R16,R14
    0253 DFED      RCALL	_EEPROMread
    0254 01F5      MOVW	R30,R10
    0255 8300      STD	Z+0,R16
(0030) 		addr++;
    0256 01C7      MOVW	R24,R14
    0257 9601      ADIW	R24,1
    0258 017C      MOVW	R14,R24
(0031) 		dst++;
    0259 01CF      MOVW	R24,R30
    025A 9601      ADIW	R24,1
    025B 015C      MOVW	R10,R24
    025C 0116      MOVW	R2,R12
    025D 01C1      MOVW	R24,R2
    025E 9701      SBIW	R24,1
    025F 016C      MOVW	R12,R24
    0260 2022      TST	R2
    0261 F781      BNE	0x0252
    0262 2033      TST	R3
    0263 F771      BNE	0x0252
    0264 940E089D  CALL	pop_gset5x
    0266 9622      ADIW	R28,2
    0267 9508      RET
_EEPROMwrite:
  oldSREG              --> R10
  byte                 --> R18
  location             --> R16
    0268 940E08A0  CALL	push_gset3x
(0032) 		}
(0033) 	}
(0034) 	
(0035) 	
(0036) int EEPROMwrite( int location, unsigned char byte)
(0037) {
(0038) 	unsigned char oldSREG;
(0039) 
(0040)     while (EECR & 0x02);                // Wait until any earlier write is done
    026A 99E1      SBIC	0x1C,1
    026B CFFE      RJMP	0x026A
(0041) 
(0042) 	EEAR = location;
    026C BB1F      OUT	0x1F,R17
    026D BB0E      OUT	0x1E,R16
(0043) 
(0044)     EEDR = byte;
    026E BB2D      OUT	0x1D,R18
(0045) 
(0046) 	oldSREG = SREG;
    026F B6AF      IN	R10,0x3F
(0047) 	SREG &= ~0x80;		// disable interrupt
    0270 94F8      BCLR	7
(0048) 
(0049)     EECR |= 0x04;                       // Set MASTER WRITE enable
    0271 9AE2      SBI	0x1C,2
(0050)     EECR |= 0x02;                       // Set WRITE strobe
    0272 9AE1      SBI	0x1C,1
(0051) 
(0052) 	SREG = oldSREG;
    0273 BEAF      OUT	0x3F,R10
(0053)     return 0;                           // return Success.
    0274 2700      CLR	R16
    0275 2711      CLR	R17
    0276 940E088E  CALL	pop_gset3x
    0278 9508      RET
_EEPROMWriteBytes:
  src                  --> R10
  size                 --> R12
  ptr                  --> Y+6
  addr                 --> R14
    0279 933A      ST	R19,-Y
    027A 932A      ST	R18,-Y
    027B 940E08A7  CALL	push_gset5x
    027D 0178      MOVW	R14,R16
    027E 84C8      LDD	R12,Y+8
    027F 84D9      LDD	R13,Y+9
(0054)                                         // Could be expanded so that
(0055)                                         // the routine checks that the address
(0056)                                         // is within the range of the chip.
(0057) }                   
(0058) 
(0059) 
(0060) 
(0061) void EEPROMWriteBytes(int addr, void *ptr, int size)
(0062) 	{
(0063) 	char *src = ptr;
    0280 80AE      LDD	R10,Y+6
    0281 80BF      LDD	R11,Y+7
    0282 C00A      RJMP	0x028D
(0064) 
(0065) 	while (size--)
(0066) 		{
(0067) 		EEPROMwrite(addr, *src);
    0283 01F5      MOVW	R30,R10
    0284 8120      LDD	R18,Z+0
    0285 0187      MOVW	R16,R14
    0286 DFE1      RCALL	_EEPROMwrite
(0068) 		addr++;
    0287 01C7      MOVW	R24,R14
    0288 9601      ADIW	R24,1
    0289 017C      MOVW	R14,R24
(0069) 		src++;
    028A 01C5      MOVW	R24,R10
    028B 9601      ADIW	R24,1
    028C 015C      MOVW	R10,R24
    028D 0116      MOVW	R2,R12
    028E 01C1      MOVW	R24,R2
    028F 9701      SBIW	R24,1
    0290 016C      MOVW	R12,R24
    0291 2022      TST	R2
    0292 F781      BNE	0x0283
    0293 2033      TST	R3
    0294 F771      BNE	0x0283
    0295 940E089D  CALL	pop_gset5x
    0297 9622      ADIW	R28,2
    0298 9508      RET
FILE: E:\avrwork3_pt100\hal.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #include "hal.h"
(0004) #include "main.h"
(0005) #include "uart.h"
(0006) #include "Temp.h"
(0007)    
(0008) 
(0009) uint8 u7_data=0xff,u9_data=0xff,u18_data=0xff,u19_data=0xff;
(0010) 
(0011) /*************************************************************************************************************
(0012) *	函数名称 :
(0013) *	功能描述 :
(0014) *	实际参数 :
(0015) *	返回值   :
(0016) *	说明     :
(0017) *************************************************************************************************************/
(0018) void U7 (uint8 data){
(0019) 	 CLR_CS0;
_U7:
  data                 --> R16
    0299 9893      CBI	0x12,3
(0020)  
(0021) 	 PORTB = data;
    029A BB08      OUT	0x18,R16
(0022) 	 asm ("nop");
    029B 0000      NOP
(0023) 	 asm ("nop");
    029C 0000      NOP
(0024) 	 asm ("nop"); 
    029D 0000      NOP
(0025) 	  
(0026) 	 SET_CS0;
    029E 9A93      SBI	0x12,3
(0027) 	 
(0028) 	 asm ("nop");
    029F 0000      NOP
(0029) 	 asm ("nop");
    02A0 0000      NOP
(0030) 	 asm ("nop"); 	
    02A1 0000      NOP
(0031) 	  
(0032) 	 CLR_CS0;	 
    02A2 9893      CBI	0x12,3
    02A3 9508      RET
(0033) }
(0034) /*************************************************************************************************************
(0035) *	函数名称 :
(0036) *	功能描述 :
(0037) *	实际参数 :
(0038) *	返回值   :
(0039) *	说明     :
(0040) *************************************************************************************************************/
(0041) void U18 (uint8 data){
(0042) 	 CLR_CS1;
_U18:
  data                 --> R16
    02A4 9895      CBI	0x12,5
(0043)  
(0044) 	 PORTB = data;
    02A5 BB08      OUT	0x18,R16
(0045) 	 asm ("nop");
    02A6 0000      NOP
(0046) 	 asm ("nop");
    02A7 0000      NOP
(0047) 	 asm ("nop"); 
    02A8 0000      NOP
(0048) 	  
(0049) 	 SET_CS1;
    02A9 9A95      SBI	0x12,5
(0050) 	 
(0051) 	 asm ("nop");
    02AA 0000      NOP
(0052) 	 asm ("nop");
    02AB 0000      NOP
(0053) 	 asm ("nop"); 	
    02AC 0000      NOP
(0054) 	  
(0055) 	 CLR_CS1;	
    02AD 9895      CBI	0x12,5
    02AE 9508      RET
(0056) }
(0057) /*************************************************************************************************************
(0058) *	函数名称 :
(0059) *	功能描述 :
(0060) *	实际参数 :
(0061) *	返回值   :
(0062) *	说明     :
(0063) *************************************************************************************************************/
(0064) void U9 (uint8 data){
(0065) 	 CLR_CS2;
_U9:
  data                 --> R16
    02AF 9894      CBI	0x12,4
(0066)  
(0067) 	 PORTB = data;
    02B0 BB08      OUT	0x18,R16
(0068) 	 asm ("nop");
    02B1 0000      NOP
(0069) 	 asm ("nop");
    02B2 0000      NOP
(0070) 	 asm ("nop"); 
    02B3 0000      NOP
(0071) 	  
(0072) 	 SET_CS2;
    02B4 9A94      SBI	0x12,4
(0073) 	 
(0074) 	 asm ("nop");
    02B5 0000      NOP
(0075) 	 asm ("nop");
    02B6 0000      NOP
(0076) 	 asm ("nop"); 	
    02B7 0000      NOP
(0077) 	  
(0078) 	 CLR_CS2;	 
    02B8 9894      CBI	0x12,4
    02B9 9508      RET
(0079) }
(0080) /*************************************************************************************************************
(0081) *	函数名称 :
(0082) *	功能描述 :
(0083) *	实际参数 :
(0084) *	返回值   :
(0085) *	说明     :
(0086) *************************************************************************************************************/
(0087) void U19 (uint8 data){
(0088) 	 CLR_CS3;
_U19:
  data                 --> R16
    02BA 9896      CBI	0x12,6
(0089)  
(0090) 	 PORTB = data;
    02BB BB08      OUT	0x18,R16
(0091) 	 asm ("nop");
    02BC 0000      NOP
(0092) 	 asm ("nop");
    02BD 0000      NOP
(0093) 	 asm ("nop"); 
    02BE 0000      NOP
(0094) 	  
(0095) 	 SET_CS3;
    02BF 9A96      SBI	0x12,6
(0096) 	 
(0097) 	 asm ("nop");
    02C0 0000      NOP
(0098) 	 asm ("nop");
    02C1 0000      NOP
(0099) 	 asm ("nop"); 	
    02C2 0000      NOP
(0100) 	  
(0101) 	 CLR_CS3;		 
    02C3 9896      CBI	0x12,6
    02C4 9508      RET
(0102) }
(0103) /*************************************************************************************************************
(0104) *	函数名称 :TempCs
(0105) *	功能描述 :6675片选
(0106) *	实际参数 :选择为0
(0107) *	返回值   :
(0108) *	说明     :
(0109) *************************************************************************************************************/
(0110) void TempCs(unsigned char onoff){
(0111) 	if(onoff){
_TempCs:
  onoff                --> R16
    02C5 2300      TST	R16
    02C6 F011      BEQ	0x02C9
(0112) 		 PORTA|= 0x08;
    02C7 9ADB      SBI	0x1B,3
(0113) 	}
    02C8 C001      RJMP	0x02CA
(0114) 	else{
(0115) 		 PORTA&=~0x08;
    02C9 98DB      CBI	0x1B,3
(0116) 	}
    02CA 9508      RET
_TempRelayOnoff:
  number               --> R10
  onoff                --> R12
    02CB 940E08A3  CALL	push_gset4x
    02CD 2EA2      MOV	R10,R18
    02CE 2EC0      MOV	R12,R16
(0117) }
(0118) 
(0119) /*************************************************************************************************************
(0120) *	函数名称 :TempRelayOnoff
(0121) *	功能描述 :
(0122) *	实际参数 :        
(0123) *	返回值   :
(0124) *	说明     :
(0125) **************************************************************************************************************/
(0126) void TempRelayOnoff(unsigned char onoff,unsigned char number){
(0127) 	 if (onoff){		  //ON
    02CF 20CC      TST	R12
    02D0 F409      BNE	0x02D2
    02D1 C05D      RJMP	0x032F
(0128) 	    u7_data = 0x00;
    02D2 2422      CLR	R2
    02D3 92200060  STS	u7_data,R2
(0129) 		u19_data&=~0x03;
    02D5 91800063  LDS	R24,u19_data
    02D7 7F8C      ANDI	R24,0xFC
    02D8 93800063  STS	u19_data,R24

⌨️ 快捷键说明

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