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

📄 main.s

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 S
📖 第 1 页 / 共 4 页
字号:
; 		   }
L116:
	.dbline 328
; 		if((D4FC!=0)&&(D5FC==0))
	lds R2,_D4FC
	tst R2
	breq L121
	lds R2,_D5FC
	tst R2
	brne L121
	.dbline 329
; 		   {
	.dbline 330
; 		   if(d4!=0) d4--;
	lds R2,_d4
	tst R2
	breq L123
	.dbline 330
	mov R24,R2
	subi R24,1
	sts _d4,R24
L123:
	.dbline 331
; 		   dipdata[4]=diptable[d4];
	ldi R24,<_diptable
	ldi R25,>_diptable
	lds R30,_d4
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+4,R30
	.dbline 332
; 		   j=((d4<<4)+d5);
	lds R2,_d5
	lds R20,_d4
	andi R20,#0x0F
	swap R20
	add R20,R2
	.dbline 333
; 		   EEPROM_write((d*4)+3,d4); 
	lds R18,_d4
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,253    ; addi 3
	rcall _EEPROM_write
	.dbline 334
; 		   }
L121:
	.dbline 335
; 		if((D5FC!=0)&&(D4FC==0))
	lds R2,_D5FC
	tst R2
	breq L126
	lds R2,_D4FC
	tst R2
	brne L126
	.dbline 336
; 		   {
	.dbline 337
; 		   if(d5!=0) d5--;
	lds R2,_d5
	tst R2
	breq L128
	.dbline 337
	mov R24,R2
	subi R24,1
	sts _d5,R24
L128:
	.dbline 338
; 		   dipdata[5]=diptable[d5];
	ldi R24,<_diptable
	ldi R25,>_diptable
	lds R30,_d5
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+5,R30
	.dbline 339
; 		   j=((d4<<4)+d5);
	lds R2,_d5
	lds R20,_d4
	andi R20,#0x0F
	swap R20
	add R20,R2
	.dbline 340
; 		   EEPROM_write((d*4)+3,d5); 
	mov R18,R2
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,253    ; addi 3
	rcall _EEPROM_write
	.dbline 341
; 		   }
L126:
	.dbline 342
; 	  }
L108:
	.dbline 343
; 	 if(e==2)
	mov R24,R10
	cpi R24,2
	brne L131
	.dbline 344
; 	   {
	.dbline 345
; 	   if((PIND&0x40)==0)
	sbic 0x9,6
	rjmp L133
	.dbline 346
; 	      {
	.dbline 347
; 		  for(i=0;i<255;i++)
	clr R12
	rjmp L138
L135:
	.dbline 348
	.dbline 349
	ldi R18,255
	mov R16,R12
	rcall _EEPROM_write
	.dbline 350
L136:
	.dbline 347
	inc R12
L138:
	.dbline 347
	mov R24,R12
	cpi R24,255
	brlo L135
	.dbline 351
; 		      {
; 		  	  EEPROM_write(i,0xff);
; 			  }	
; 			  flagh |=0x01;
	lds R24,_flagh
	ori R24,1
	sts _flagh,R24
	.dbline 352
; 			  SPFC=1;
	ldi R24,1
	sts _SPFC,R24
	.dbline 353
; 		  }
L133:
	.dbline 354
; 	   }
L131:
	.dbline 355
; 	if((D3FC!=0)&&(D4FC!=0)&&(D5FC!=0))
	lds R2,_D3FC
	tst R2
	brne X4
	rjmp L139
X4:
	lds R2,_D4FC
	tst R2
	brne X5
	rjmp L139
X5:
	lds R2,_D5FC
	tst R2
	brne X6
	rjmp L139
X6:
	.dbline 356
; 	     {
	.dbline 357
; 		  if((flag&0x04)!=0)
	lds R2,_flag
	sbrs R2,2
	rjmp L141
	.dbline 358
; 		     {
	.dbline 359
; 			 j=code_comp();
	rcall _code_comp
	mov R20,R16
	.dbline 360
; 			 if(j<100)			 //代码存在,显示代码位置,响三下表示学习不成功
	cpi R16,100
	brlo X7
	rjmp L143
X7:
	.dbline 361
; 			 		{
	.dbline 362
; 			 		 SPFC=3;
	ldi R24,3
	sts _SPFC,R24
	.dbline 363
; 					 d=j;
	mov R22,R20
	.dbline 364
; 					 dipdata[0]=diptable[0];
	ldi R30,<_diptable
	ldi R31,>_diptable
	lpm R30,Z
	sts _dipdata,R30
	.dbline 365
; 					 dipdata[1]=diptable[(d/10)];
	ldi R18,10
	ldi R19,0
	clr R17
	rcall div16s
	movw R30,R16
	ldi R24,<_diptable
	ldi R25,>_diptable
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+1,R30
	.dbline 366
; 		   	 	  	 dipdata[2]=diptable[d%10];
	ldi R18,10
	ldi R19,0
	mov R16,R22
	clr R17
	rcall mod16s
	movw R30,R16
	ldi R24,<_diptable
	ldi R25,>_diptable
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+2,R30
	.dbline 367
; 			   	  	 lookup_led(d);
	mov R16,R22
	rcall _lookup_led
	.dbline 368
; 					 D1FC=1;
	ldi R24,1
	sts _D1FC,R24
	.dbline 369
; 					 D3FC=0;
	clr R2
	sts _D3FC,R2
	.dbline 370
; 			 		 D4FC=0;
	sts _D4FC,R2
	.dbline 371
; 			 		 D5FC=0;
	sts _D5FC,R2
	.dbline 372
; 			 		}
	rjmp L144
L143:
	.dbline 374
; 			 else
; 			     {
	.dbline 375
; 			 	 EEPROM_write(d*4,eaddr0);		   //写入EEPROM
	lds R18,_eaddr0
	ldi R24,4
	mul R24,R22
	mov R16,R0
	rcall _EEPROM_write
	.dbline 376
; 			 	 EEPROM_write((d*4)+1,eaddr1); 
	lds R18,_eaddr1
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,255    ; addi 1
	rcall _EEPROM_write
	.dbline 377
; 			 	 SPFC=1;
	ldi R24,1
	sts _SPFC,R24
	.dbline 378
; 		   	 	 if(d<99)
	cpi R22,99
	brlo X8
	rjmp L147
X8:
	.dbline 379
; 			          { 
	.dbline 380
; 			 	  	  d++;	 //转成BCD到显示
	inc R22
	.dbline 381
; 		   	 	  	  dipdata[1]=diptable[(d/10)];
	ldi R18,10
	ldi R19,0
	mov R16,R22
	clr R17
	rcall div16s
	movw R30,R16
	ldi R24,<_diptable
	ldi R25,>_diptable
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+1,R30
	.dbline 382
; 		   	 	  	  dipdata[2]=diptable[d%10];
	ldi R18,10
	ldi R19,0
	mov R16,R22
	clr R17
	rcall mod16s
	movw R30,R16
	ldi R24,<_diptable
	ldi R25,>_diptable
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+2,R30
	.dbline 383
; 			   	  	  lookup_led(d);
	mov R16,R22
	rcall _lookup_led
	.dbline 384
; 		   		  	  if((d3==0)&&(d4==0)&&(d5==0)) //未用过的EEPROM写0
	lds R2,_d3
	tst R2
	brne L148
	lds R2,_d4
	tst R2
	brne L148
	lds R2,_d5
	tst R2
	brne L148
	.dbline 385
; 		              		{	  
	.dbline 386
; 			  		 		EEPROM_write((d*4)+2,0);
	clr R18
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,254    ; addi 2
	rcall _EEPROM_write
	.dbline 387
; 			  		 		EEPROM_write((d*4)+3,0);
	clr R18
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,253    ; addi 3
	rcall _EEPROM_write
	.dbline 388
; 			  		  		}
	.dbline 389
; 				      }
	rjmp L148
L147:
	.dbline 390
; 			 		  else  flagh |=0x01;
	lds R24,_flagh
	ori R24,1
	sts _flagh,R24
L148:
	.dbline 391
; 			 		  D3FC=1;
	ldi R24,1
	sts _D3FC,R24
	.dbline 392
; 			 		  D4FC=0;
	clr R2
	sts _D4FC,R2
	.dbline 393
; 			 		  D5FC=0;
	sts _D5FC,R2
	.dbline 394
; 			 	 }
L144:
	.dbline 395
; 				 DECODER_FLAG_L; 
	lds R24,_flag
	andi R24,251
	sts _flag,R24
	.dbline 396
; 				 DECODER_EN_H;//开RF接收数据	
	ori R24,2
	sts _flag,R24
	.dbline 397
; 			 }
L141:
	.dbline 398
; 		 }
L139:
	.dbline 399
	lds R24,_flag
	andi R24,251
	sts _flag,R24
	.dbline 400
	ori R24,2
	sts _flag,R24
	.dbline 401
L60:
	.dbline 218
	lds R2,_flagh
	sbrs R2,0
	rjmp L59
	.dbline 402
; 		 DECODER_FLAG_L; 
; 		DECODER_EN_H;//开RF接收数据	
;   }
;   dipdata[0]=0;	  //退出设定时全部清空,不显示
	clr R2
	sts _dipdata,R2
	.dbline 403
;   dipdata[1]=0;
	sts _dipdata+1,R2
	.dbline 404
;   dipdata[2]=0;
	sts _dipdata+2,R2
	.dbline 405
;   dipdata[3]=0;
	sts _dipdata+3,R2
	.dbline 406
;   dipdata[4]=0;
	sts _dipdata+4,R2
	.dbline 407
;   dipdata[5]=0;
	sts _dipdata+5,R2
	.dbline 408
;   dipdata[5]|=0x80;  //电源LED
	mov R24,R2
	ori R24,128
	sts _dipdata+5,R24
	.dbline 409
;   D1FC=0;
	sts _D1FC,R2
	.dbline 410
;   D3FC=0;
	sts _D3FC,R2
	.dbline 411
;   D4FC=0;
	sts _D4FC,R2
	.dbline 412
;   D5FC=0;
	sts _D5FC,R2
	.dbline 413
;   datas[0]=datas[1]=0;
	sts _datas+1,R2
	sts _datas,R2
	.dbline -2
L53:
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l c 1 c
	.dbsym l b 1 c
	.dbsym l a 1 c
	.dbsym r j 20 c
	.dbsym r d 22 c
	.dbsym r e 10 c
	.dbsym r i 12 c
	.dbend
	.dbfunc e main _main fV
;             ar -> R22,R23
;             tr -> R10,R11
	.even
_main::
	.dbline -1
	.dbline 417
; }
; 
; void main(void)
; {//m
	.dbline 421
; unit tr,ar;	 
; //EEPROM_read(0xff);       //校正振荡频率
; //OSCCAL=EEDR; 
; delay(60);	
	ldi R16,60
	ldi R17,0
	rcall _delay
	.dbline 422
; init_devices();
	rcall _init_devices
	.dbline 423
; init_tm1620();
	rcall _init_tm1620
	.dbline 424
; dipdata[5]|=0x80;	//电源LED
	lds R24,_dipdata+5
	ori R24,128
	sts _dipdata+5,R24
	.dbline 425
; delay(600);
	ldi R16,600
	ldi R17,2
	rcall _delay
	.dbline 426
; 	    RF_OFF;		 //开RF使能
	cbi 0x8,2
	.dbline 427
; 	   data[0]=0; 
	clr R2
	sts _data,R2
	.dbline 428
; 	   data[1]=0;
	sts _data+1,R2
	.dbline 429
; 	   data[2]=0;
	sts _data+2,R2
	.dbline 430
; 		BITCOUNTER=CODELANGTH;
	ldi R30,<_CODELANGTH
	ldi R31,>_CODELANGTH
	lpm R30,Z
	sts _BITCOUNTER,R30
	.dbline 431
; 		DECODER_FLAG_L;
	lds R24,_flag
	andi R24,251
	sts _flag,R24
	.dbline 432
; 		LO_COUNT_SAVE=0;
	sts _LO_COUNT_SAVE,R2
	.dbline 433
; 		HI_COUNT_SAVE=0;
	sts _HI_COUNT_SAVE,R2
	.dbline 434
;         DECODER_EN_H;//开RF接收数据		
	ori R24,2
	sts _flag,R24
	.dbline 435
; sec=60;
	ldi R24,60
	sts _sec,R24
	.dbline 436
; flagh &=~0x01;	  
	lds R24,_flagh
	andi R24,254
	sts _flagh,R24
	rjmp L165
L164:
	.dbline 438
; while(1)	 //
; {//1		  
	.dbline 439
;   WDR();
	wdr
	.dbline 440
;    if((flag&0x04)!=0)
	lds R2,_flag
	sbrs R2,2
	rjmp L167
	.dbline 441
;      {	 
	.dbline 442
;      ar=code_comp(); //对照地址
	rcall _code_comp
	mov R22,R16
	clr R23
	.dbline 443
; 	 if(ar<100)
	cpi R22,100
	ldi R30,0
	cpc R23,R30
	brlo X11
	rjmp L169
X11:
	.dbline 444
; 	    {
	.dbline 445
; 		if(!(data[2]&0x40))
	lds R2,_data+2
	sbrc R2,6
	rjmp L171
	.dbline 446
; 		  {
	.dbline 447
; 		   if((datas[0]!=data[0])||(datas[1]!=data[1]))
	lds R2,_data
	lds R3,_datas
	cp R3,R2
	brne L178
	lds R2,_data+1
	lds R3,_datas+1
	cp R3,R2
	brne X12
	rjmp L172
X12:
L178:
	.dbline 448
;   		       {
	.dbline 449
; 			   j=(ar*4)+2;
	ldi R16,4
	ldi R17,0
	movw R18,R22
	rcall empy16s
	movw R24,R16
	adiw R24,2
	sts _j,R24
	.dbline 450
;    			   ar=EEPROM_read(j);
	mov R16,R24
	rcall _EEPROM_read
	mov R22,R16
	clr R23
	.dbline 451
;    			   j++;
	lds R24,_j
	subi R24,255    ; addi 1
	sts _j,R24
	.dbline 452
;    			   tr=EEPROM_read(j);
	mov R16,R24
	rcall _EEPROM_read
	mov R10,R16
	clr R11
	.dbline 453
; 			   datas[6]=datas[4];	//移动存贮号码
	lds R2,_datas+4
	sts _datas+6,R2
	.dbline 454
;    			   datas[7]=datas[5]; 
	lds R2,_datas+5
	sts _datas+7,R2
	.dbline 456
; 			   
;    			   datas[4]=datas[2];	
	lds R2,_datas+2
	sts _datas+4,R2
	.dbline 457
; 			   datas[5]=datas[3];
	lds R2,_datas+3
	sts _datas+5,R2
	.dbline 459
; 			   
;    			   datas[2]=datas[0]; 
	lds R2,_datas
	sts _datas+2,R2
	.dbline 460
;    			   datas[3]=datas[1];
	lds R2,_datas+1
	sts _datas+3,R2
	.dbline 462
; 			   
; 			   datas[0]=data[0];
	lds R2,_data
	sts _datas,R2
	.dbline 463
;    			   datas[1]=data[1]; 
	lds R2,_data+1
	sts _datas+1,R2
	.dbline 465
; 			   
;    			   dipdata[0]=dipdata[3];
	lds R2,_dipdata+3
	sts _dipdata,R2
	.dbline 466
;    			   dipdata[1]=dipdata[4]; 
	lds R2,_dipdata+4
	sts _dipdata+1,R2
	.dbline 467
;    			   dipdata[2]=dipdata[5];
	lds R2,_dipdata+5
	sts _dipdata+2,R2
	.dbline 468
; 			   dipdata[2]&=~0x80;
	mov R24,R2
	andi R24,127
	sts _dipdata+2,R24
	.dbline 470
; 			   
;    			   dipdata[3]=diptable[ar];
	ldi R24,<_diptable
	ldi R25,>_diptable
	movw R30,R22
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+3,R30
	.dbline 471
;    			   ar=(tr&0xf0)>>4;
	movw R22,R10
	andi R22,240
	andi R23,0
	lsr R23
	ror R22
	lsr R23
	ror R22
	lsr R23
	ror R22
	lsr R23
	ror R22
	.dbline 472
;    			   dipdata[4]=diptable[ar];
	movw R30,R22
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+4,R30
	.dbline 473
;    			   ar=(tr&0x0f);
	movw R22,R10
	andi R22,15
	andi R23,0
	.dbline 474
;    			   dipdata[5]=diptable[ar];
	movw R30,R22
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+5,R30
	.dbline 475
; 			   dipdata[5]|=0x80;  //电源LED	
	mov R24,R30
	ori R24,128
	sts _dipdata+5,R24
	.dbline 476
; 			   if((data[2]&0x80))
	lds R2,_data+2
	sbrs R2,7
	rjmp L202
	.dbline 477
; 			      {
	.dbline 478
; 				  dipdata[3]|=0x80;  //发射电源低LED	
	lds R24,_dipdata+3
	ori R24,128
	sts _dipdata+3,R24
	.dbline 479
; 				  }
L202:
	.dbline 480
; 			   sec=6;			 //显示6秒后刷新
	ldi R24,6
	sts _sec,R24
	.dbline 481
; 	 		   flagh &=~0x01;
	lds R24,_flagh
	andi R24,254
	sts _flagh,R24
	.dbline 482
; 			   dipcount=3;
	ldi R24,3

⌨️ 快捷键说明

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