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

📄 door1.lst

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0117) 		}
(0118) 	}
(0119)     return(crc); 	 
    00BC 91000076  LDS	R16,crc
    00BE D0AC      RCALL	pop_gset3
    00BF 9508      RET
(0120) }
(0121) 
(0122) 
(0123) //地址计算
(0124) void addr_f(void)
(0125) {
(0126)     unsigned char i; 
(0127)     unsigned char j;
(0128) data[0]=EEPROM_read(0);
_addr_f:
  j                    --> Y+1
  i                    --> Y+1
    00C0 2700      CLR	R16
    00C1 D09A      RCALL	_EEPROM_read
    00C2 9300006A  STS	data,R16
(0129) data[1]=EEPROM_read(1);		  //EEPORM内地址,最大FFFF
    00C4 E001      LDI	R16,1
    00C5 D096      RCALL	_EEPROM_read
    00C6 9300006B  STS	data+1,R16
(0130) data[2]=0;
    00C8 2422      CLR	R2
    00C9 9220006C  STS	data+2,R2
(0131) if(GetADC()<327)  data[2]|=0x80;
    00CB DF9F      RCALL	_GetADC
    00CC 3407      CPI	R16,0x47
    00CD E0E1      LDI	R30,1
    00CE 071E      CPC	R17,R30
    00CF F428      BCC	0x00D5
    00D0 9180006C  LDS	R24,data+2
    00D2 6880      ORI	R24,0x80
    00D3 9380006C  STS	data+2,R24
(0132) if(powbit) data[2]|=0x40;	   
    00D5 90200066  LDS	R2,powbit
    00D7 2022      TST	R2
    00D8 F029      BEQ	0x00DE
    00D9 9180006C  LDS	R24,data+2
    00DB 6480      ORI	R24,0x40
    00DC 9380006C  STS	data+2,R24
(0133) data[2]+=CRC3(data,3);
    00DE E023      LDI	R18,3
    00DF E60A      LDI	R16,0x6A
    00E0 E010      LDI	R17,0
    00E1 DF9B      RCALL	_CRC3
    00E2 9020006C  LDS	R2,data+2
    00E4 0E20      ADD	R2,R16
    00E5 9220006C  STS	data+2,R2
    00E7 9508      RET
(0134) }
(0135) //要发送的数据1
(0136) void data_1(void)
(0137) {
(0138)  RF_OFF;
_data_1:
    00E8 98C1      CBI	0x18,1
(0139)  del(700);
    00E9 EB0C      LDI	R16,0xBC
    00EA E012      LDI	R17,2
    00EB DF48      RCALL	_del
(0140)  RF_ON;
    00EC 9AC1      SBI	0x18,1
(0141)  del(350);
    00ED E50E      LDI	R16,0x5E
    00EE E011      LDI	R17,1
    00EF DF44      RCALL	_del
    00F0 9508      RET
(0142) }
(0143) //要发送的数据0
(0144) void data_0(void)
(0145) {
(0146)  RF_OFF;
_data_0:
    00F1 98C1      CBI	0x18,1
(0147)  del(350);
    00F2 E50E      LDI	R16,0x5E
    00F3 E011      LDI	R17,1
    00F4 DF3F      RCALL	_del
(0148)  RF_ON;
    00F5 9AC1      SBI	0x18,1
(0149)  del(700);
    00F6 EB0C      LDI	R16,0xBC
    00F7 E012      LDI	R17,2
    00F8 DF3B      RCALL	_del
    00F9 9508      RET
_rf:
  i                    --> R20
  j                    --> R10
  dataf                --> R22
    00FA D076      RCALL	push_gset3
    00FB 2F60      MOV	R22,R16
    00FC 2F71      MOV	R23,R17
(0150) } 
(0151) //发送数据 
(0152) void rf (unsigned char *dataf)
(0153) {
(0154)     unsigned char i; 
(0155)     unsigned char j;
(0156)  RF_ON;			//起始位
    00FD 9AC1      SBI	0x18,1
(0157)  del(350);
    00FE E50E      LDI	R16,0x5E
    00FF E011      LDI	R17,1
    0100 DF33      RCALL	_del
(0158)  for(i=0;i<3;i++)
    0101 2744      CLR	R20
    0102 C01B      RJMP	0x011E
(0159)  {		 for(j=0;j<8;j++)
    0103 24AA      CLR	R10
    0104 C013      RJMP	0x0118
(0160)  		 {
(0161)          if(*dataf& (0x80>>j))  //如果该位为1 
    0105 2D2A      MOV	R18,R10
    0106 2733      CLR	R19
    0107 E800      LDI	R16,0x80
    0108 E010      LDI	R17,0
    0109 D058      RCALL	asr16
    010A 2FE6      MOV	R30,R22
    010B 2FF7      MOV	R31,R23
    010C 8020      LDD	R2,Z+0
    010D 2433      CLR	R3
    010E 2220      AND	R2,R16
    010F 2231      AND	R3,R17
    0110 2022      TST	R2
    0111 F411      BNE	0x0114
    0112 2033      TST	R3
    0113 F011      BEQ	0x0116
(0162)             data_1();
    0114 DFD3      RCALL	_data_1
    0115 C001      RJMP	0x0117
(0163)             else data_0();
    0116 DFDA      RCALL	_data_0
    0117 94A3      INC	R10
    0118 2D8A      MOV	R24,R10
    0119 3088      CPI	R24,0x8
    011A F350      BCS	0x0105
(0164) 		} 
(0165) 		dataf++; 
    011B 5F6F      SUBI	R22,0xFF
    011C 4F7F      SBCI	R23,0xFF
    011D 9543      INC	R20
    011E 3043      CPI	R20,3
    011F F318      BCS	0x0103
(0166)  }
(0167)  RF_OFF;
    0120 98C1      CBI	0x18,1
    0121 D049      RCALL	pop_gset3
    0122 9508      RET
(0168) }
(0169) //主函数!不用解释了
(0170) void main()
(0171) {
(0172) 
(0173)    unsigned char i;
(0174) 	//以下初始化硬件
(0175) 	port_init();	//端口初始化  
_main:
  i                    --> R20
    0123 DF31      RCALL	_port_init
(0176) 	adc_init();	//ADC初始化
    0124 DF35      RCALL	_adc_init
(0177) 	watchdog_init();//初始化看门狗	
    0125 DF3F      RCALL	_watchdog_init
(0178) 	POWER_ON;
    0126 9AC2      SBI	0x18,2
(0179) 	if(!(PINB&0X10)) powbit=1;	
    0127 99B4      SBIC	0x16,4
    0128 C003      RJMP	0x012C
    0129 E081      LDI	R24,1
    012A 93800066  STS	powbit,R24
(0180) 	delay(1);
    012C E001      LDI	R16,1
    012D E010      LDI	R17,0
    012E DF17      RCALL	_delay
    012F C022      RJMP	0x0152
(0181) 
(0182) 	while(1)
(0183) 	{
(0184) 	WDR();	
    0130 95A8      WDR
(0185)     LED_ON;
    0131 9AC0      SBI	0x18,0
(0186) 	delay(100);
    0132 E604      LDI	R16,0x64
    0133 E010      LDI	R17,0
    0134 DF11      RCALL	_delay
(0187) 	addr_f();
    0135 DF8A      RCALL	_addr_f
(0188) 	for(i=0;i<50;i++)
    0136 2744      CLR	R20
    0137 C013      RJMP	0x014B
(0189) 	{
(0190) 	dataf[0]=data[0]; 
    0138 9020006A  LDS	R2,data
    013A 92200067  STS	dataf,R2
(0191) 	dataf[1]=data[1];
    013C 9020006B  LDS	R2,data+1
    013E 92200068  STS	dataf+1,R2
(0192) 	dataf[2]=data[2];
    0140 9020006C  LDS	R2,data+2
    0142 92200069  STS	dataf+2,R2
(0193) 	rf(dataf);  
    0144 E607      LDI	R16,0x67
    0145 E010      LDI	R17,0
    0146 DFB3      RCALL	_rf
(0194) 	delay(3);
    0147 E003      LDI	R16,3
    0148 E010      LDI	R17,0
    0149 DEFC      RCALL	_delay
    014A 9543      INC	R20
    014B 3342      CPI	R20,0x32
    014C F358      BCS	0x0138
(0195) 	} 
(0196) 	POWER_OFF;
    014D 98C2      CBI	0x18,2
(0197) 	delay(100);
    014E E604      LDI	R16,0x64
    014F E010      LDI	R17,0
    0150 DEF5      RCALL	_delay
(0198) 	LED_OFF; 
    0151 98C0      CBI	0x18,0
    0152 CFDD      RJMP	0x0130
    0153 9508      RET
FILE: E:\abol\file\EMD\programme\EM-PB-2129\eeprom.c
(0001) 
(0002) /* 文件名称:main.c  主函数								*/
(0003) /* 编译:ICC-AVR application builder					*/
(0004) 
(0005) 
(0006) 
(0007) #include <iot13v.h>
(0008) #include <macros.h>
(0009) #include "eeprom.h"
(0010) 
(0011) 
(0012) 
(0013) /*		EEPROM 写入	*/	
(0014) void EEPROM_write(unsigned char uiaddress,unsigned char ucdata)
(0015) {
(0016)  WDR();
_EEPROM_write:
  ucdata               --> R18
  uiaddress            --> R16
    0154 95A8      WDR
(0017)  while(EECR&(1<<EEWE)); /*等待上一次写操作结束*/
    0155 99E1      SBIC	0x1C,1
    0156 CFFE      RJMP	0x0155
(0018)  EEAR=uiaddress; /*设置地址寄存器*/
    0157 BB0E      OUT	0x1E,R16
(0019)  EEDR=ucdata;
    0158 BB2D      OUT	0x1D,R18
(0020)  EECR|=(1<<EEMWE);
    0159 9AE2      SBI	0x1C,2
(0021)  EECR|=(1<<EEWE); /*置位EEMWE 置位EEWE以启动写操作*/
    015A 9AE1      SBI	0x1C,1
    015B 9508      RET
(0022) }
(0023) 
(0024) /*      EEPROM 读取     */
(0025) unsigned char EEPROM_read(unsigned char uiaddress)
(0026) {
(0027)    while(EECR&(1<<EEWE));  /*等待上一次写操作结束*/
_EEPROM_read:
  uiaddress            --> R16
    015C 99E1      SBIC	0x1C,1
    015D CFFE      RJMP	_EEPROM_read
(0028)    EEAR=uiaddress;    /*设置地址寄存器*/
    015E BB0E      OUT	0x1E,R16
(0029) 	EECR|=(1<<EERE);	/*置位EEMWE 置位EEWE以启动读操作*/ 
    015F 9AE0      SBI	0x1C,0
(0030) 	return EEDR;	/*自数据存贮器返回数据*/
FILE: <library>
    0160 B30D      IN	R16,0x1D
    0161 9508      RET
asr16:
    0162 2322      TST	R18
    0163 F021      BEQ	0x0168
    0164 9515      ASR	R17
    0165 9507      ROR	R16
    0166 952A      DEC	R18
    0167 CFFA      RJMP	asr16
    0168 9508      RET
pop_gset2:
    0169 E0E2      LDI	R30,2
    016A C00E      RJMP	pop
pop_gset3:
    016B E0E4      LDI	R30,4
    016C C00C      RJMP	pop
push_gset5:
    016D 92FA      ST	R15,-Y
    016E 92EA      ST	R14,-Y
push_gset4:
    016F 92DA      ST	R13,-Y
    0170 92CA      ST	R12,-Y
push_gset3:
    0171 92BA      ST	R11,-Y
    0172 92AA      ST	R10,-Y
push_gset2:
    0173 937A      ST	R23,-Y
    0174 936A      ST	R22,-Y
push_gset1:
    0175 935A      ST	R21,-Y
    0176 934A      ST	R20,-Y
    0177 9508      RET
pop_gset1:
    0178 E0E1      LDI	R30,1
pop:
    0179 9149      LD	R20,Y+
    017A 9159      LD	R21,Y+
    017B FDE0      SBRC	R30,0
    017C 9508      RET
    017D 9169      LD	R22,Y+
    017E 9179      LD	R23,Y+
    017F FDE1      SBRC	R30,1
    0180 9508      RET
    0181 90A9      LD	R10,Y+
    0182 90B9      LD	R11,Y+
    0183 FDE2      SBRC	R30,2
    0184 9508      RET
    0185 90C9      LD	R12,Y+
    0186 90D9      LD	R13,Y+
    0187 FDE3      SBRC	R30,3
    0188 9508      RET
    0189 90E9      LD	R14,Y+
    018A 90F9      LD	R15,Y+
    018B 9508      RET

⌨️ 快捷键说明

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