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

📄 emd.lst

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 LST
📖 第 1 页 / 共 5 页
字号:
  a                    --> R22
  b                    --> R20
  j                    --> R10
    012C D94A      RCALL	push_gset3
    012D 2EA0      MOV	R10,R16
(0178) }  
(0179) 
(0180) void lookup_led(unsigned char j)
(0181)    {
(0182)    unsigned char a,b;
(0183)    WDR();
    012E 95A8      WDR
(0184)    j=(j*4)+2;
    012F E084      LDI	R24,4
    0130 9D8A      MUL	R24,R10
    0131 2D80      MOV	R24,R0
    0132 5F8E      SUBI	R24,0xFE
    0133 2EA8      MOV	R10,R24
(0185)    a=EEPROM_read(j);	   
    0134 2F08      MOV	R16,R24
    0135 D5F0      RCALL	_EEPROM_read
    0136 2F60      MOV	R22,R16
(0186)    j++;
    0137 94A3      INC	R10
(0187)    b=EEPROM_read(j);
    0138 2D0A      MOV	R16,R10
    0139 D5EC      RCALL	_EEPROM_read
    013A 2F40      MOV	R20,R16
(0188)    j++;
    013B 94A3      INC	R10
(0189)    d3=a;
    013C 9360012A  STS	d3,R22
(0190)    d4=(b&0xf0)>>4;
    013E 2F84      MOV	R24,R20
    013F 7F80      ANDI	R24,0xF0
    0140 9582      SWAP	R24
    0141 708F      ANDI	R24,0xF
    0142 93800129  STS	d4,R24
(0191)    d5=(b&0x0f);
    0144 2F84      MOV	R24,R20
    0145 708F      ANDI	R24,0xF
    0146 93800128  STS	d5,R24
(0192)    if(d3<10) dipdata[3]=diptable[d3];
    0148 306A      CPI	R22,0xA
    0149 F450      BCC	0x0154
    014A E386      LDI	R24,0x36
    014B E090      LDI	R25,0
    014C 2FE6      MOV	R30,R22
    014D 27FF      CLR	R31
    014E 0FE8      ADD	R30,R24
    014F 1FF9      ADC	R31,R25
    0150 91E4      LPM	R30,0(Z)
    0151 93E00121  STS	dipdata+3,R30
    0153 C008      RJMP	0x015C
(0193)    else 
(0194)    {dipdata[3]=diptable[0];d3=0;}
    0154 E3E6      LDI	R30,0x36
    0155 E0F0      LDI	R31,0
    0156 91E4      LPM	R30,0(Z)
    0157 93E00121  STS	dipdata+3,R30
    0159 2422      CLR	R2
    015A 9220012A  STS	d3,R2
(0195)    if(d4<10) dipdata[4]=diptable[d4];
    015C 91800129  LDS	R24,d4
    015E 308A      CPI	R24,0xA
    015F F458      BCC	0x016B
    0160 E386      LDI	R24,0x36
    0161 E090      LDI	R25,0
    0162 91E00129  LDS	R30,d4
    0164 27FF      CLR	R31
    0165 0FE8      ADD	R30,R24
    0166 1FF9      ADC	R31,R25
    0167 91E4      LPM	R30,0(Z)
    0168 93E00122  STS	0x122,R30
    016A C008      RJMP	0x0173
(0196)    else 
(0197)    {dipdata[4]=diptable[0];d4=0;}
    016B E3E6      LDI	R30,0x36
    016C E0F0      LDI	R31,0
    016D 91E4      LPM	R30,0(Z)
    016E 93E00122  STS	0x122,R30
    0170 2422      CLR	R2
    0171 92200129  STS	d4,R2
(0198)    if(d5<10)  dipdata[5]=diptable[d5];
    0173 91800128  LDS	R24,d5
    0175 308A      CPI	R24,0xA
    0176 F458      BCC	0x0182
    0177 E386      LDI	R24,0x36
    0178 E090      LDI	R25,0
    0179 91E00128  LDS	R30,d5
    017B 27FF      CLR	R31
    017C 0FE8      ADD	R30,R24
    017D 1FF9      ADC	R31,R25
    017E 91E4      LPM	R30,0(Z)
    017F 93E00123  STS	0x123,R30
    0181 C008      RJMP	0x018A
(0199)    else 
(0200)    {dipdata[5]=diptable[0];d5=0;}
    0182 E3E6      LDI	R30,0x36
    0183 E0F0      LDI	R31,0
    0184 91E4      LPM	R30,0(Z)
    0185 93E00123  STS	0x123,R30
    0187 2422      CLR	R2
    0188 92200128  STS	d5,R2
    018A D8E4      RCALL	pop_gset3
    018B 9508      RET
_set_led:
  c                    --> Y+1
  b                    --> Y+1
  a                    --> Y+1
  j                    --> R20
  d                    --> R22
  e                    --> R10
  i                    --> R12
    018C D8E8      RCALL	push_gset4
(0201)    }
(0202) //设定模式
(0203) void set_led(void)
(0204) {
(0205) unsigned char i,j,a,b,c,d=0,e;
    018D 2766      CLR	R22
(0206) sec=30;
    018E E18E      LDI	R24,0x1E
    018F 93800104  STS	sec,R24
(0207) flagh &=~0x01; 
    0191 91800103  LDS	R24,flagh
    0193 7F8E      ANDI	R24,0xFE
    0194 93800103  STS	flagh,R24
(0208) dipdata[0]=diptable[0];		//在上一行显示记忆体位置
    0196 E3E6      LDI	R30,0x36
    0197 E0F0      LDI	R31,0
    0198 91E4      LPM	R30,0(Z)
    0199 93E0011E  STS	dipdata,R30
(0209) dipdata[1]=diptable[0]; 
    019B E3E6      LDI	R30,0x36
    019C E0F0      LDI	R31,0
    019D 91E4      LPM	R30,0(Z)
    019E 93E0011F  STS	dipdata+1,R30
(0210) dipdata[2]=diptable[0];
    01A0 E3E6      LDI	R30,0x36
    01A1 E0F0      LDI	R31,0
    01A2 91E4      LPM	R30,0(Z)
    01A3 93E00120  STS	dipdata+2,R30
(0211) lookup_led(d);			 //下一行显示门牌号
    01A5 2F06      MOV	R16,R22
    01A6 DF85      RCALL	_lookup_led
(0212) 
(0213) D1FC=1;
    01A7 E081      LDI	R24,1
    01A8 93800130  STS	D1FC,R24
    01AA C001      RJMP	0x01AC
(0214) 		while(!(PIND&0x80)) 
(0215) 		{
(0216) 		WDR(); 
    01AB 95A8      WDR
    01AC 9B4F      SBIS	0x09,7
    01AD CFFD      RJMP	0x01AB
    01AE C278      RJMP	0x0427
(0217) 		}
(0218) while(!(flagh&0x01))
(0219)   {
(0220)   WDR();
    01AF 95A8      WDR
(0221)   i=key_1();
    01B0 D81B      RCALL	_key_1
    01B1 2EC0      MOV	R12,R16
(0222)   if(i==1)			  //设置闪烁位
    01B2 3001      CPI	R16,1
    01B3 F009      BEQ	0x01B5
    01B4 C04E      RJMP	0x0203
(0223)      {
(0224) 	  WDR();
    01B5 95A8      WDR
(0225) 	 sec=30;
    01B6 E18E      LDI	R24,0x1E
    01B7 93800104  STS	sec,R24
(0226) 	 if((D3FC!=0)&&(D4FC!=0)&&(D5FC!=0))
    01B9 9020012E  LDS	R2,D3FC
    01BB 2022      TST	R2
    01BC F0A9      BEQ	0x01D2
    01BD 9020012D  LDS	R2,D4FC
    01BF 2022      TST	R2
    01C0 F089      BEQ	0x01D2
    01C1 9020012C  LDS	R2,D5FC
    01C3 2022      TST	R2
    01C4 F069      BEQ	0x01D2
(0227) 	     {
(0228) 		 D3FC=0;
    01C5 2422      CLR	R2
    01C6 9220012E  STS	D3FC,R2
(0229) 		 D4FC=0;
    01C8 9220012D  STS	D4FC,R2
(0230) 		 D5FC=0;
    01CA 9220012C  STS	D5FC,R2
(0231) 		 flagh |=0x01;
    01CC 91800103  LDS	R24,flagh
    01CE 6081      ORI	R24,1
    01CF 93800103  STS	flagh,R24
(0232) 		 goto exit_1;
    01D1 C031      RJMP	0x0203
(0233) 		 }
(0234) 	 if(D1FC!=0)	 
    01D2 90200130  LDS	R2,D1FC
    01D4 2022      TST	R2
    01D5 F039      BEQ	0x01DD
(0235) 	     {
(0236) 	 	 D1FC=0;
    01D6 2422      CLR	R2
    01D7 92200130  STS	D1FC,R2
(0237) 	 	 D3FC=1;
    01D9 E081      LDI	R24,1
    01DA 9380012E  STS	D3FC,R24
(0238) 		 goto exit_1;
    01DC C026      RJMP	0x0203
(0239) 		 }
(0240) 	 if(D3FC!=0)
    01DD 9020012E  LDS	R2,D3FC
    01DF 2022      TST	R2
    01E0 F039      BEQ	0x01E8
(0241) 	     {
(0242) 		 D3FC=0;
    01E1 2422      CLR	R2
    01E2 9220012E  STS	D3FC,R2
(0243) 		 D4FC=1;
    01E4 E081      LDI	R24,1
    01E5 9380012D  STS	D4FC,R24
(0244) 		 goto exit_1;
    01E7 C01B      RJMP	0x0203
(0245) 		 }
(0246) 	 if(D4FC!=0)
    01E8 9020012D  LDS	R2,D4FC
    01EA 2022      TST	R2
    01EB F039      BEQ	0x01F3
(0247) 	     {
(0248) 		 D4FC=0;
    01EC 2422      CLR	R2
    01ED 9220012D  STS	D4FC,R2
(0249) 		 D5FC=1;
    01EF E081      LDI	R24,1
    01F0 9380012C  STS	D5FC,R24
(0250) 		 goto exit_1;
    01F2 C010      RJMP	0x0203
(0251) 		 }
(0252) 	 if(D5FC!=0)
    01F3 9020012C  LDS	R2,D5FC
    01F5 2022      TST	R2
    01F6 F061      BEQ	0x0203
(0253) 	     {
(0254) 		 D5FC=1;
    01F7 E081      LDI	R24,1
    01F8 9380012C  STS	D5FC,R24
(0255) 		 D4FC=1;
    01FA 9380012D  STS	D4FC,R24
(0256) 		 D3FC=1; 
    01FC 9380012E  STS	D3FC,R24
(0257) 		 DECODER_FLAG_L;
    01FE 91800102  LDS	R24,flag
    0200 7F8B      ANDI	R24,0xFB
    0201 93800102  STS	flag,R24
(0258) 		 goto exit_1;
(0259) 		 }
(0260) 	exit_1:;
(0261) 	 }
(0262) 	 e=(key_2());
    0203 D7E3      RCALL	_key_2
    0204 2EA0      MOV	R10,R16
(0263)    if(e==1)			   //闪烁数据加一
    0205 3001      CPI	R16,1
    0206 F009      BEQ	0x0208
    0207 C0AB      RJMP	0x02B3
(0264)      {	
(0265) 	    sec=30;
    0208 E18E      LDI	R24,0x1E
    0209 93800104  STS	sec,R24
(0266) 	    if(D1FC!=0)
    020B 90200130  LDS	R2,D1FC
    020D 2022      TST	R2
    020E F409      BNE	0x0210
    020F C037      RJMP	0x0247
(0267) 		   {
(0268) 		   if(d<99) d++;	 //转成BCD到显示
    0210 3663      CPI	R22,0x63
    0211 F408      BCC	0x0213
    0212 9563      INC	R22
(0269) 		   dipdata[1]=diptable[(d/10)];
    0213 E02A      LDI	R18,0xA
    0214 E030      LDI	R19,0
    0215 2F06      MOV	R16,R22
    0216 2711      CLR	R17
    0217 D810      RCALL	div16s
    0218 01F8      MOVW	R30,R16
    0219 E386      LDI	R24,0x36
    021A E090      LDI	R25,0
    021B 0FE8      ADD	R30,R24
    021C 1FF9      ADC	R31,R25
    021D 91E4      LPM	R30,0(Z)
    021E 93E0011F  STS	dipdata+1,R30
(0270) 		   dipdata[2]=diptable[d%10];
    0220 E02A      LDI	R18,0xA
    0221 E030      LDI	R19,0
    0222 2F06      MOV	R16,R22
    0223 2711      CLR	R17
    0224 D7FF      RCALL	mod16s
    0225 01F8      MOVW	R30,R16
    0226 E386      LDI	R24,0x36
    0227 E090      LDI	R25,0
    0228 0FE8      ADD	R30,R24
    0229 1FF9      ADC	R31,R25
    022A 91E4      LPM	R30,0(Z)
    022B 93E00120  STS	dipdata+2,R30
(0271) 		   lookup_led(d);
    022D 2F06      MOV	R16,R22
    022E DEFD      RCALL	_lookup_led
(0272) 		   if((d3==0)&&(d4==0)&&(d5==0)) //未用过的EEPROM
    022F 9020012A  LDS	R2,d3
    0231 2022      TST	R2
    0232 F4A1      BNE	0x0247
    0233 90200129  LDS	R2,d4
    0235 2022      TST	R2
    0236 F481      BNE	0x0247
    0237 90200128  LDS	R2,d5
    0239 2022      TST	R2
    023A F461      BNE	0x0247
(0273) 		      {	  
(0274) 			  EEPROM_write((d*4)+2,0);
    023B 2722      CLR	R18
    023C E084      LDI	R24,4
    023D 9F86      MUL	R24,R22
    023E 2D00      MOV	R16,R0
    023F 5F0E      SUBI	R16,0xFE
    0240 D4DA      RCALL	_EEPROM_write
(0275) 			  EEPROM_write((d*4)+3,0);
    0241 2722      CLR	R18
    0242 E084      LDI	R24,4
    0243 9F86      MUL	R24,R22
    0244 2D00      MOV	R16,R0
    0245 5F0D      SUBI	R16,0xFD
    0246 D4D4      RCALL	_EEPROM_write
(0276) 			  }
(0277) 		   }
(0278) 		if((D3FC!=0)&&(D4FC==0))
    0247 9020012E  LDS	R2,D3FC
    0249 2022      TST	R2
    024A F0E1      BEQ	0x0267
    024B 9020012D  LDS	R2,D4FC
    024D 2022      TST	R2
    024E F4C1      BNE	0x0267
(0279) 		   {
(0280) 		   if(d3<9) d3++;
    024F 9180012A  LDS	R24,d3
    0251 3089      CPI	R24,0x9
    0252 F418      BCC	0x0256
    0253 5F8F      SUBI	R24,0xFF
    0254 9380012A  STS	d3,R24
(0281) 		   dipdata[3]=diptable[d3];
    0256 E386      LDI	R24,0x36
    0257 E090      LDI	R25,0
    0258 91E0012A  LDS	R30,d3
    025A 27FF      CLR	R31
    025B 0FE8      ADD	R30,R24
    025C 1FF9      ADC	R31,R25
    025D 91E4      LPM	R30,0(Z)
    025E 93E00121  STS	dipdata+3,R30
(0282) 		   EEPROM_write((d*4)+2,d3); 
    0260 9120012A  LDS	R18,d3
    0262 E084      LDI	R24,4
    0263 9F86      MUL	R24,R22
    0264 2D00      MOV	R16,R0
    0265 5F0E      SUBI	R16,0xFE
    0266 D4B4      RCALL	_EEPROM_write
(0283) 		   } 
(0284) 		if((D4FC!=0)&&(D5FC==0))
    0267 9020012D  LDS	R2,D4FC
    0269 2022      TST	R2
    026A F111      BEQ	0x028D
    026B 9020012C  LDS	R2,D5FC
    026D 2022      TST	R2
    026E F4F1      BNE	0x028D
(0285) 		   {
(0286) 		   if(d4<9) d4++;
    026F 91800129  LDS	R24,d4
    0271 3089      CPI	R24,0x9
    0272 F418      BCC	0x0276
    0273 5F8F      SUBI	R24,0xFF
    0274 93800129  STS	d4,R24
(0287) 		   dipdata[4]=diptable[d4];
    0276 E386      LDI	R24,0x36
    0277 E090      LDI	R25,0
    0278 91E00129  LDS	R30,d4
    027A 27FF      CLR	R31
    027B 0FE8      ADD	R30,R24
    027C 1FF9      ADC	R31,R25
    027D 91E4      LPM	R30,0(Z)
    027E 93E00122  STS	0x122,R30
(0288) 		   j=((d4<<4)+d5);
    0280 90200128  LDS	R2,d5
    0282 91400129  LDS	R20,d4
    0284 704F      ANDI	R20,0xF
    0285 9542      SWAP	R20
    0286 0D42      ADD	R20,R2
(0289) 		   EEPROM_write((d*4)+3,j); 
    0287 2F24      MOV	R18,R20
    0288 E084      LDI	R24,4
    0289 9F86      MUL	R24,R22
    028A 2D00      MOV	R16,R0
    028B 5F0D      SUBI	R16,0xFD
    028C D48E      RCALL	_EEPROM_write
(0290) 		   }
(0291) 		if((D5FC!=0)&&(D4FC==0))
    028D 9020012C  LDS	R2,D5FC
    028F 2022      TST	R2
    0290 F111      BEQ	0x02B3
    0291 9020012D  LDS	R2,D4FC
    0293 2022      TST	R2
    0294 F4F1      BNE	0x02B3
(0292) 		   {
(0293) 		   if(d5<9) d5++;
    0295 91800128  LDS	R24,d5
    0297 3089      CPI	R24,0x9
    0298 F418      BCC	0x029C
    0299 5F8F      SUBI	R24,0xFF
    029A 93800128  STS	d5,R24
(0294) 		   dipdata[5]=diptable[d5];
    029C E386      LDI	R24,0x36
    029D E090      LDI	R25,0
    029E 91E00128  LDS	R30,d5
    02A0 27FF      CLR	R31
    02A1 0FE8      ADD	R30,R24
    02A2 1FF9      ADC	R31,R25

⌨️ 快捷键说明

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