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

📄 main.s

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 S
📖 第 1 页 / 共 4 页
字号:
	.dbline 185
;    a=EEPROM_read(j);	   
	mov R16,R24
	rcall _EEPROM_read
	mov R22,R16
	.dbline 186
;    j++;
	inc R10
	.dbline 187
;    b=EEPROM_read(j);
	mov R16,R10
	rcall _EEPROM_read
	mov R20,R16
	.dbline 188
;    j++;
	inc R10
	.dbline 189
;    d3=a;
	sts _d3,R22
	.dbline 190
;    d4=(b&0xf0)>>4;
	mov R24,R20
	andi R24,240
	swap R24
	andi R24,#0x0F
	sts _d4,R24
	.dbline 191
;    d5=(b&0x0f);
	mov R24,R20
	andi R24,15
	sts _d5,R24
	.dbline 192
;    if(d3<10) dipdata[3]=diptable[d3];
	cpi R22,10
	brsh L41
	.dbline 192
	ldi R24,<_diptable
	ldi R25,>_diptable
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+3,R30
	rjmp L42
L41:
	.dbline 194
;    else 
;    {dipdata[3]=diptable[0];d3=0;}
	.dbline 194
	ldi R30,<_diptable
	ldi R31,>_diptable
	lpm R30,Z
	sts _dipdata+3,R30
	.dbline 194
	clr R2
	sts _d3,R2
	.dbline 194
L42:
	.dbline 195
;    if(d4<10) dipdata[4]=diptable[d4];
	lds R24,_d4
	cpi R24,10
	brsh L45
	.dbline 195
	ldi R24,<_diptable
	ldi R25,>_diptable
	lds R30,_d4
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+4,R30
	rjmp L46
L45:
	.dbline 197
;    else 
;    {dipdata[4]=diptable[0];d4=0;}
	.dbline 197
	ldi R30,<_diptable
	ldi R31,>_diptable
	lpm R30,Z
	sts _dipdata+4,R30
	.dbline 197
	clr R2
	sts _d4,R2
	.dbline 197
L46:
	.dbline 198
;    if(d5<10)  dipdata[5]=diptable[d5];
	lds R24,_d5
	cpi R24,10
	brsh L49
	.dbline 198
	ldi R24,<_diptable
	ldi R25,>_diptable
	lds R30,_d5
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+5,R30
	rjmp L50
L49:
	.dbline 200
	.dbline 200
	ldi R30,<_diptable
	ldi R31,>_diptable
	lpm R30,Z
	sts _dipdata+5,R30
	.dbline 200
	clr R2
	sts _d5,R2
	.dbline 200
L50:
	.dbline -2
L40:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r a 22 c
	.dbsym r b 20 c
	.dbsym r j 10 c
	.dbend
	.dbfunc e set_led _set_led fV
;              c -> <dead>
;              b -> <dead>
;              a -> <dead>
;              j -> R20
;              d -> R22
;              e -> R10
;              i -> R12
	.even
_set_led::
	rcall push_gset4
	.dbline -1
	.dbline 204
;    else 
;    {dipdata[5]=diptable[0];d5=0;}
;    }
; //设定模式
; void set_led(void)
; {
	.dbline 205
; unsigned char i,j,a,b,c,d=0,e;
	clr R22
	.dbline 206
; sec=30;
	ldi R24,30
	sts _sec,R24
	.dbline 207
; flagh &=~0x01; 
	lds R24,_flagh
	andi R24,254
	sts _flagh,R24
	.dbline 208
; dipdata[0]=diptable[0];		//在上一行显示记忆体位置
	ldi R30,<_diptable
	ldi R31,>_diptable
	lpm R30,Z
	sts _dipdata,R30
	.dbline 209
; dipdata[1]=diptable[0]; 
	ldi R30,<_diptable
	ldi R31,>_diptable
	lpm R30,Z
	sts _dipdata+1,R30
	.dbline 210
; dipdata[2]=diptable[0];
	ldi R30,<_diptable
	ldi R31,>_diptable
	lpm R30,Z
	sts _dipdata+2,R30
	.dbline 211
; lookup_led(d);			 //下一行显示门牌号
	mov R16,R22
	rcall _lookup_led
	.dbline 213
; 
; D1FC=1;
	ldi R24,1
	sts _D1FC,R24
	rjmp L57
L56:
	.dbline 215
	.dbline 216
	wdr
	.dbline 217
L57:
	.dbline 214
; 		while(!(PIND&0x80)) 
	sbis 0x9,7
	rjmp L56
	rjmp L60
L59:
	.dbline 219
; 		{
; 		WDR(); 
; 		}
; while(!(flagh&0x01))
;   {
	.dbline 220
;   WDR();
	wdr
	.dbline 221
;   i=key_1();
	rcall _key_1
	mov R12,R16
	.dbline 222
;   if(i==1)			  //设置闪烁位
	cpi R16,1
	breq X0
	rjmp L62
X0:
	.dbline 223
;      {
	.dbline 224
; 	  WDR();
	wdr
	.dbline 225
; 	 sec=30;
	ldi R24,30
	sts _sec,R24
	.dbline 226
; 	 if((D3FC!=0)&&(D4FC!=0)&&(D5FC!=0))
	lds R2,_D3FC
	tst R2
	breq L64
	lds R2,_D4FC
	tst R2
	breq L64
	lds R2,_D5FC
	tst R2
	breq L64
	.dbline 227
; 	     {
	.dbline 228
; 		 D3FC=0;
	clr R2
	sts _D3FC,R2
	.dbline 229
; 		 D4FC=0;
	sts _D4FC,R2
	.dbline 230
; 		 D5FC=0;
	sts _D5FC,R2
	.dbline 231
; 		 flagh |=0x01;
	lds R24,_flagh
	ori R24,1
	sts _flagh,R24
	.dbline 232
; 		 goto exit_1;
	rjmp L66
L64:
	.dbline 234
; 		 }
; 	 if(D1FC!=0)	 
	lds R2,_D1FC
	tst R2
	breq L67
	.dbline 235
; 	     {
	.dbline 236
; 	 	 D1FC=0;
	clr R2
	sts _D1FC,R2
	.dbline 237
; 	 	 D3FC=1;
	ldi R24,1
	sts _D3FC,R24
	.dbline 238
; 		 goto exit_1;
	rjmp L66
L67:
	.dbline 240
; 		 }
; 	 if(D3FC!=0)
	lds R2,_D3FC
	tst R2
	breq L69
	.dbline 241
; 	     {
	.dbline 242
; 		 D3FC=0;
	clr R2
	sts _D3FC,R2
	.dbline 243
; 		 D4FC=1;
	ldi R24,1
	sts _D4FC,R24
	.dbline 244
; 		 goto exit_1;
	rjmp L66
L69:
	.dbline 246
; 		 }
; 	 if(D4FC!=0)
	lds R2,_D4FC
	tst R2
	breq L71
	.dbline 247
; 	     {
	.dbline 248
; 		 D4FC=0;
	clr R2
	sts _D4FC,R2
	.dbline 249
; 		 D5FC=1;
	ldi R24,1
	sts _D5FC,R24
	.dbline 250
; 		 goto exit_1;
	rjmp L66
L71:
	.dbline 252
; 		 }
; 	 if(D5FC!=0)
	lds R2,_D5FC
	tst R2
	breq L73
	.dbline 253
; 	     {
	.dbline 254
; 		 D5FC=1;
	ldi R24,1
	sts _D5FC,R24
	.dbline 255
; 		 D4FC=1;
	sts _D4FC,R24
	.dbline 256
; 		 D3FC=1; 
	sts _D3FC,R24
	.dbline 257
; 		 DECODER_FLAG_L;
	lds R24,_flag
	andi R24,251
	sts _flag,R24
	.dbline 258
; 		 goto exit_1;
L73:
L66:
	.dbline 260
; 		 }
; 	exit_1:;
	.dbline 261
; 	 }
L62:
	.dbline 262
; 	 e=(key_2());
	rcall _key_2
	mov R10,R16
	.dbline 263
;    if(e==1)			   //闪烁数据加一
	cpi R16,1
	breq X1
	rjmp L75
X1:
	.dbline 264
;      {	
	.dbline 265
; 	    sec=30;
	ldi R24,30
	sts _sec,R24
	.dbline 266
; 	    if(D1FC!=0)
	lds R2,_D1FC
	tst R2
	brne X2
	rjmp L77
X2:
	.dbline 267
; 		   {
	.dbline 268
; 		   if(d<99) d++;	 //转成BCD到显示
	cpi R22,99
	brsh L79
	.dbline 268
	inc R22
L79:
	.dbline 269
; 		   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 270
; 		   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 271
; 		   lookup_led(d);
	mov R16,R22
	rcall _lookup_led
	.dbline 272
; 		   if((d3==0)&&(d4==0)&&(d5==0)) //未用过的EEPROM
	lds R2,_d3
	tst R2
	brne L83
	lds R2,_d4
	tst R2
	brne L83
	lds R2,_d5
	tst R2
	brne L83
	.dbline 273
; 		      {	  
	.dbline 274
; 			  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 275
; 			  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 276
; 			  }
L83:
	.dbline 277
; 		   }
L77:
	.dbline 278
; 		if((D3FC!=0)&&(D4FC==0))
	lds R2,_D3FC
	tst R2
	breq L85
	lds R2,_D4FC
	tst R2
	brne L85
	.dbline 279
; 		   {
	.dbline 280
; 		   if(d3<9) d3++;
	lds R24,_d3
	cpi R24,9
	brsh L87
	.dbline 280
	subi R24,255    ; addi 1
	sts _d3,R24
L87:
	.dbline 281
; 		   dipdata[3]=diptable[d3];
	ldi R24,<_diptable
	ldi R25,>_diptable
	lds R30,_d3
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+3,R30
	.dbline 282
; 		   EEPROM_write((d*4)+2,d3); 
	lds R18,_d3
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,254    ; addi 2
	rcall _EEPROM_write
	.dbline 283
; 		   } 
L85:
	.dbline 284
; 		if((D4FC!=0)&&(D5FC==0))
	lds R2,_D4FC
	tst R2
	breq L90
	lds R2,_D5FC
	tst R2
	brne L90
	.dbline 285
; 		   {
	.dbline 286
; 		   if(d4<9) d4++;
	lds R24,_d4
	cpi R24,9
	brsh L92
	.dbline 286
	subi R24,255    ; addi 1
	sts _d4,R24
L92:
	.dbline 287
; 		   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 288
; 		   j=((d4<<4)+d5);
	lds R2,_d5
	lds R20,_d4
	andi R20,#0x0F
	swap R20
	add R20,R2
	.dbline 289
; 		   EEPROM_write((d*4)+3,j); 
	mov R18,R20
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,253    ; addi 3
	rcall _EEPROM_write
	.dbline 290
; 		   }
L90:
	.dbline 291
; 		if((D5FC!=0)&&(D4FC==0))
	lds R2,_D5FC
	tst R2
	breq L95
	lds R2,_D4FC
	tst R2
	brne L95
	.dbline 292
; 		   {
	.dbline 293
; 		   if(d5<9) d5++;
	lds R24,_d5
	cpi R24,9
	brsh L97
	.dbline 293
	subi R24,255    ; addi 1
	sts _d5,R24
L97:
	.dbline 294
; 		   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 295
; 		   j=((d4<<4)+d5);
	lds R2,_d5
	lds R20,_d4
	andi R20,#0x0F
	swap R20
	add R20,R2
	.dbline 296
; 		   EEPROM_write((d*4)+3,j); 
	mov R18,R20
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,253    ; addi 3
	rcall _EEPROM_write
	.dbline 297
; 		   }
L95:
	.dbline 298
; 	 }
L75:
	.dbline 299
; 	 if(e==2)
	mov R24,R10
	cpi R24,2
	brne L100
	.dbline 300
; 	   {
	.dbline 301
; 	   if((PIND&0x20)==0)
	sbic 0x9,5
	rjmp L102
	.dbline 302
; 	      {
	.dbline 303
; 		  for(i=0;i<255;i++)
	clr R12
	rjmp L107
L104:
	.dbline 304
	.dbline 305
	ldi R18,255
	mov R16,R12
	rcall _EEPROM_write
	.dbline 306
L105:
	.dbline 303
	inc R12
L107:
	.dbline 303
	mov R24,R12
	cpi R24,255
	brlo L104
	.dbline 307
; 		      {
; 		  	  EEPROM_write(i,0xff);
; 			  }	
; 			  flagh |=0x01;
	lds R24,_flagh
	ori R24,1
	sts _flagh,R24
	.dbline 308
; 			  SPFC=1;
	ldi R24,1
	sts _SPFC,R24
	.dbline 309
; 		  }
L102:
	.dbline 310
; 	   }
L100:
	.dbline 311
; 	 e=(key_3());
	rcall _key_3
	mov R10,R16
	.dbline 312
;    if(e==1)		 //闪烁数据减一
	cpi R16,1
	breq X3
	rjmp L108
X3:
	.dbline 313
; 	  {	
	.dbline 314
; 	    sec=30;
	ldi R24,30
	sts _sec,R24
	.dbline 315
; 	    if(D1FC!=0)
	lds R2,_D1FC
	tst R2
	breq L110
	.dbline 316
; 		   {
	.dbline 317
; 		   if(d!=0) d--;	 //转成BCD到显示
	tst R22
	breq L112
	.dbline 317
	dec R22
L112:
	.dbline 318
; 		   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 319
; 		   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 320
; 		   lookup_led(d);
	mov R16,R22
	rcall _lookup_led
	.dbline 321
; 		   }
L110:
	.dbline 322
; 		if((D3FC!=0)&&(D4FC==0))
	lds R2,_D3FC
	tst R2
	breq L116
	lds R2,_D4FC
	tst R2
	brne L116
	.dbline 323
; 		   {
	.dbline 324
; 		   if(d3!=0) d3--;	 
	lds R2,_d3
	tst R2
	breq L118
	.dbline 324
	mov R24,R2
	subi R24,1
	sts _d3,R24
L118:
	.dbline 325
; 		   dipdata[3]=diptable[d3];
	ldi R24,<_diptable
	ldi R25,>_diptable
	lds R30,_d3
	clr R31
	add R30,R24
	adc R31,R25
	lpm R30,Z
	sts _dipdata+3,R30
	.dbline 326
; 		   EEPROM_write((d*4)+2,d3); 
	lds R18,_d3
	ldi R24,4
	mul R24,R22
	mov R16,R0
	subi R16,254    ; addi 2
	rcall _EEPROM_write
	.dbline 327

⌨️ 快捷键说明

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