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

📄 210.lst

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0155)             j = 0; 
    00C1 2766      CLR	R22
(0156)             data++; 
    00C2 5F4F      SUBI	R20,0xFF
    00C3 4F5F      SBCI	R21,0xFF
(0157)             len--; 
    00C4 94AA      DEC	R10
    00C5 20AA      TST	R10
    00C6 F651      BNE	0x0091
(0158)          }
(0159) 		}
(0160) 	}
(0161)     return(crc); 	 
    00C7 91000072  LDS	R16,crc
    00C9 D0BD      RCALL	pop_gset3
    00CA 9508      RET
(0162) }
(0163) 
(0164) 
(0165) 
(0166) //地址计算
(0167) void addr_f(void)
(0168) {
(0169)     unsigned char i; 
(0170)     unsigned char j;		 //data[0]data[1]地址
(0171) data[0]=EEPROM_read(0);
_addr_f:
  j                    --> Y+1
  i                    --> Y+1
    00CB 2700      CLR	R16
    00CC DF7E      RCALL	_EEPROM_read
    00CD 93000069  STS	data,R16
(0172) data[1]=EEPROM_read(1);		   //EEPORM内地址,最大FFFF           	  	
    00CF E001      LDI	R16,1
    00D0 DF7A      RCALL	_EEPROM_read
    00D1 9300006A  STS	data+1,R16
(0173) data[2]=0;
    00D3 2422      CLR	R2
    00D4 9220006B  STS	data+2,R2
(0174) if(GetADC()<579) data[2]|=0x80;	 //2.5/(3.3/13.3)/(1.1/1024)=579
    00D6 DF9B      RCALL	_GetADC
    00D7 3403      CPI	R16,0x43
    00D8 E0E2      LDI	R30,2
    00D9 071E      CPC	R17,R30
    00DA F428      BCC	0x00E0
    00DB 9180006B  LDS	R24,data+2
    00DD 6880      ORI	R24,0x80
    00DE 9380006B  STS	data+2,R24
(0175) if(PINBS) data[2]|=0x40;	
    00E0 9020006E  LDS	R2,PINBS
    00E2 2022      TST	R2
    00E3 F029      BEQ	0x00E9
    00E4 9180006B  LDS	R24,data+2
    00E6 6480      ORI	R24,0x40
    00E7 9380006B  STS	data+2,R24
(0176) data[2]+=CRC3(data,3);
    00E9 E023      LDI	R18,3
    00EA E609      LDI	R16,0x69
    00EB E010      LDI	R17,0
    00EC DF9B      RCALL	_CRC3
    00ED 9020006B  LDS	R2,data+2
    00EF 0E20      ADD	R2,R16
    00F0 9220006B  STS	data+2,R2
    00F2 9508      RET
(0177) }
(0178) //要发送的数据1
(0179) void data_1(void)
(0180) {
(0181)  RF_OFF;
_data_1:
    00F3 98C2      CBI	0x18,2
(0182)  del(700);
    00F4 EB0C      LDI	R16,0xBC
    00F5 E012      LDI	R17,2
    00F6 DF5A      RCALL	_del
(0183)  RF_ON;
    00F7 9AC2      SBI	0x18,2
(0184)  del(350);
    00F8 E50E      LDI	R16,0x5E
    00F9 E011      LDI	R17,1
    00FA DF56      RCALL	_del
    00FB 9508      RET
(0185) }
(0186) //要发送的数据0
(0187) void data_0(void)
(0188) {
(0189)  RF_OFF;
_data_0:
    00FC 98C2      CBI	0x18,2
(0190)  del(350);
    00FD E50E      LDI	R16,0x5E
    00FE E011      LDI	R17,1
    00FF DF51      RCALL	_del
(0191)  RF_ON;
    0100 9AC2      SBI	0x18,2
(0192)  del(700);
    0101 EB0C      LDI	R16,0xBC
    0102 E012      LDI	R17,2
    0103 DF4D      RCALL	_del
    0104 9508      RET
_rf:
  i                    --> R20
  j                    --> R10
  dataf                --> R22
    0105 D087      RCALL	push_gset3
    0106 2F60      MOV	R22,R16
    0107 2F71      MOV	R23,R17
(0193) } 
(0194) //发送数据 
(0195) void rf (unsigned char *dataf)
(0196) {
(0197)     unsigned char i; 
(0198)     unsigned char j;
(0199)  RF_ON;			//起始位
    0108 9AC2      SBI	0x18,2
(0200)  del(350);
    0109 E50E      LDI	R16,0x5E
    010A E011      LDI	R17,1
    010B DF45      RCALL	_del
(0201)  for(i=0;i<3;i++)
    010C 2744      CLR	R20
    010D C01B      RJMP	0x0129
(0202)  {		 for(j=0;j<8;j++)
    010E 24AA      CLR	R10
    010F C013      RJMP	0x0123
(0203)  		 {
(0204)          if(*dataf & (0x80>>j))  //如果该位为1 
    0110 2D2A      MOV	R18,R10
    0111 2733      CLR	R19
    0112 E800      LDI	R16,0x80
    0113 E010      LDI	R17,0
    0114 D069      RCALL	asr16
    0115 2FE6      MOV	R30,R22
    0116 2FF7      MOV	R31,R23
    0117 8020      LDD	R2,Z+0
    0118 2433      CLR	R3
    0119 2220      AND	R2,R16
    011A 2231      AND	R3,R17
    011B 2022      TST	R2
    011C F411      BNE	0x011F
    011D 2033      TST	R3
    011E F011      BEQ	0x0121
(0205)             data_1();
    011F DFD3      RCALL	_data_1
    0120 C001      RJMP	0x0122
(0206)             else data_0();
    0121 DFDA      RCALL	_data_0
    0122 94A3      INC	R10
    0123 2D8A      MOV	R24,R10
    0124 3088      CPI	R24,0x8
    0125 F350      BCS	0x0110
(0207) 		} 
(0208) 		dataf++; 
    0126 5F6F      SUBI	R22,0xFF
    0127 4F7F      SBCI	R23,0xFF
    0128 9543      INC	R20
    0129 3043      CPI	R20,3
    012A F318      BCS	0x010E
(0209)  }
(0210)  RF_OFF;
    012B 98C2      CBI	0x18,2
    012C D05A      RCALL	pop_gset3
    012D 9508      RET
_PCINT0_ovf_isr:
    012E 920A      ST	R0,-Y
    012F B60F      IN	R0,0x3F
    0130 920A      ST	R0,-Y
(0211) }
(0212) 
(0213) #pragma interrupt_handler PCINT0_ovf_isr:03
(0214) void PCINT0_ovf_isr(void)     //中断程序 
(0215) {
(0216)  NOP();
    0131 0000      NOP
    0132 9009      LD	R0,Y+
    0133 BE0F      OUT	0x3F,R0
    0134 9009      LD	R0,Y+
    0135 9518      RETI
(0217) }
(0218) //主函数!不用解释了
(0219) void main()
(0220) {
(0221) 
(0222)    unsigned char i;
(0223) 	//以下初始化硬件
(0224) 	port_init();	//端口初始化
_main:
  i                    --> R20
    0136 DEFC      RCALL	_port_init
(0225) 	adc_init();
    0137 DF00      RCALL	_adc_init
(0226) //	watchdog_init();//初始化看门狗	
(0227) 	SEI(); //re-enable interrupts 
    0138 9478      BSET	7
(0228) 	GetADC();
    0139 DF38      RCALL	_GetADC
(0229) 	delay(10);
    013A E00A      LDI	R16,0xA
    013B E010      LDI	R17,0
    013C DF26      RCALL	_delay
    013D C03E      RJMP	0x017C
(0230) 	while(1)
(0231) 	{
(0232) 	if((!(PINB&0x08))||(!(PINB&0x01)))
    013E 9BB3      SBIS	0x16,3
    013F C002      RJMP	0x0142
    0140 99B0      SBIC	0x16,0
    0141 C01B      RJMP	0x015D
(0233) 	{
(0234) 	WDR();
    0142 95A8      WDR
(0235) 	EN_ON;
    0143 9AC1      SBI	0x18,1
(0236) 	addr_f();
    0144 DF86      RCALL	_addr_f
(0237) 	for(i=0;i<50;i++)
    0145 2744      CLR	R20
    0146 C013      RJMP	0x015A
(0238) 	{
(0239) 	dataf[0]=data[0]; 
    0147 90200069  LDS	R2,data
    0149 92200066  STS	dataf,R2
(0240) 	dataf[1]=data[1];
    014B 9020006A  LDS	R2,data+1
    014D 92200067  STS	dataf+1,R2
(0241) 	dataf[2]=data[2]; 
    014F 9020006B  LDS	R2,data+2
    0151 92200068  STS	dataf+2,R2
(0242) 	rf(dataf);  
    0153 E606      LDI	R16,0x66
    0154 E010      LDI	R17,0
    0155 DFAF      RCALL	_rf
(0243) 	delay(3);
    0156 E003      LDI	R16,3
    0157 E010      LDI	R17,0
    0158 DF0A      RCALL	_delay
    0159 9543      INC	R20
    015A 3342      CPI	R20,0x32
    015B F358      BCS	0x0147
(0244) 	} 
(0245) 	EN_OFF;
    015C 98C1      CBI	0x18,1
(0246) 	}
(0247) 	GIMSK|=(1<<PCIE);
    015D B78B      IN	R24,0x3B
    015E 6280      ORI	R24,0x20
    015F BF8B      OUT	0x3B,R24
(0248) 	PCMSK|=(1<<PCINT0);	
    0160 9AA8      SBI	0x15,0
(0249) 	PCMSK|=(1<<PCINT3);
    0161 9AAB      SBI	0x15,3
(0250) 	ADCSRA=0; 	
    0162 2422      CLR	R2
    0163 B826      OUT	0x06,R2
(0251) 		MCUCR |= BIT(SM1); 
    0164 B785      IN	R24,0x35
    0165 6180      ORI	R24,0x10
    0166 BF85      OUT	0x35,R24
(0252) 
(0253)         MCUCR |= BIT(SE); 
    0167 B785      IN	R24,0x35
    0168 6280      ORI	R24,0x20
    0169 BF85      OUT	0x35,R24
(0254) 
(0255) 		asm("sleep\n");								//进入睡眠状态
    016A 9588      SLEEP
(0256) 		NOP();
    016B 0000      NOP
(0257) 		MCUCR=0;
    016C BE25      OUT	0x35,R2
(0258) 		delay(2);
    016D E002      LDI	R16,2
    016E E010      LDI	R17,0
    016F DEF3      RCALL	_delay
(0259) 		if(!(PINB&0x08)) PINBS=1;
    0170 99B3      SBIC	0x16,3
    0171 C004      RJMP	0x0176
    0172 E081      LDI	R24,1
    0173 9380006E  STS	PINBS,R24
    0175 C003      RJMP	0x0179
(0260) 		else PINBS=0;
    0176 2422      CLR	R2
    0177 9220006E  STS	PINBS,R2
(0261) 		GIMSK=0;
    0179 2422      CLR	R2
    017A BE2B      OUT	0x3B,R2
(0262) 		adc_init();
FILE: <library>
    017B DEBC      RCALL	_adc_init
    017C CFC1      RJMP	0x013E
    017D 9508      RET
asr16:
    017E 2322      TST	R18
    017F F021      BEQ	0x0184
    0180 9515      ASR	R17
    0181 9507      ROR	R16
    0182 952A      DEC	R18
    0183 CFFA      RJMP	asr16
    0184 9508      RET
pop_gset2:
    0185 E0E2      LDI	R30,2
    0186 C00E      RJMP	pop
pop_gset3:
    0187 E0E4      LDI	R30,4
    0188 C00C      RJMP	pop
push_gset5:
    0189 92FA      ST	R15,-Y
    018A 92EA      ST	R14,-Y
push_gset4:
    018B 92DA      ST	R13,-Y
    018C 92CA      ST	R12,-Y
push_gset3:
    018D 92BA      ST	R11,-Y
    018E 92AA      ST	R10,-Y
push_gset2:
    018F 937A      ST	R23,-Y
    0190 936A      ST	R22,-Y
push_gset1:
    0191 935A      ST	R21,-Y
    0192 934A      ST	R20,-Y
    0193 9508      RET
pop_gset1:
    0194 E0E1      LDI	R30,1
pop:
    0195 9149      LD	R20,Y+
    0196 9159      LD	R21,Y+
    0197 FDE0      SBRC	R30,0
    0198 9508      RET
    0199 9169      LD	R22,Y+
    019A 9179      LD	R23,Y+
    019B FDE1      SBRC	R30,1
    019C 9508      RET
    019D 90A9      LD	R10,Y+
    019E 90B9      LD	R11,Y+
    019F FDE2      SBRC	R30,2
    01A0 9508      RET
    01A1 90C9      LD	R12,Y+
    01A2 90D9      LD	R13,Y+
    01A3 FDE3      SBRC	R30,3
    01A4 9508      RET
    01A5 90E9      LD	R14,Y+
    01A6 90F9      LD	R15,Y+
    01A7 9508      RET

⌨️ 快捷键说明

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