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

📄 init.s

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline 188
; 	if ((LO_COUNT_SAVE>MAXDURATION)||(LO_COUNT_SAVE==0))//如果低电平大于限定值
	ldi R30,<_MAXDURATION
	ldi R31,>_MAXDURATION
	lpm R30,Z
	lds R2,_LO_COUNT_SAVE
	cp R30,R2
	brlo L40
	tst R2
	brne L38
L40:
	.dbline 189
; 	  {//3-1
	.dbline 190
; 	   BITCOUNTER=CODELANGTH;//代码是错误的
	ldi R30,<_CODELANGTH
	ldi R31,>_CODELANGTH
	lpm R30,Z
	sts _BITCOUNTER,R30
	.dbline 191
; 	   data[0]=0; 
	clr R2
	sts _data,R2
	.dbline 192
; 	   data[1]=0;
	sts _data+1,R2
	.dbline 193
; 	   data[2]=0;
	sts _data+2,R2
	.dbline 194
; 	  return;//跳出中断
	rjmp L20
L38:
	.dbline 196
; 	  }//3-1
;    }//3
	.dbline 197
;    if (HI_COUNT_SAVE<LO_COUNT_SAVE)//为1的数据存贮
	lds R2,_LO_COUNT_SAVE
	lds R3,_HI_COUNT_SAVE
	cp R3,R2
	brlo X6
	rjmp L43
X6:
	.dbline 198
; 	 {//5  
	.dbline 199
; 	 i=data[2]&0x80;	  //保存第七位
	lds R22,_data+2
	andi R22,128
	.dbline 200
; 	 data[2]<<=1;
	lds R2,_data+2
	lsl R2
	sts _data+2,R2
	.dbline 201
; 	 data[2]+=1;
	mov R24,R2
	subi R24,255    ; addi 1
	sts _data+2,R24
	.dbline 202
; 	 j=data[1]&0x80;	  //保存第七位
	lds R20,_data+1
	andi R20,128
	.dbline 203
; 	 if(i){data[1]<<=1;data[1]+=1;}
	tst R22
	breq L49
	.dbline 203
	.dbline 203
	lds R2,_data+1
	lsl R2
	sts _data+1,R2
	.dbline 203
	mov R24,R2
	subi R24,255    ; addi 1
	sts _data+1,R24
	.dbline 203
	rjmp L50
L49:
	.dbline 204
; 	 else data[1]<<=1;
	lds R2,_data+1
	lsl R2
	sts _data+1,R2
L50:
	.dbline 205
; 	 if(j){data[0]<<=1;data[0]+=1;}
	tst R20
	breq L54
	.dbline 205
	.dbline 205
	lds R2,_data
	lsl R2
	sts _data,R2
	.dbline 205
	mov R24,R2
	subi R24,255    ; addi 1
	sts _data,R24
	.dbline 205
	rjmp L55
L54:
	.dbline 206
; 	 else data[0]<<=1;
	lds R2,_data
	lsl R2
	sts _data,R2
L55:
	.dbline 207
; 	   BITCOUNTER--;
	lds R24,_BITCOUNTER
	subi R24,1
	sts _BITCOUNTER,R24
	.dbline 208
; 	   if (BITCOUNTER==0)//解码完成
	tst R24
	breq X7
	rjmp L20
X7:
	.dbline 209
; 	   	  {//5-3
	.dbline 210
; 		  if(CRC3(data,3)==0)
	ldi R18,3
	ldi R16,<_data
	ldi R17,>_data
	rcall _CRC3
	tst R16
	breq X8
	rjmp L61
X8:
	.dbline 211
; 		     {//n
	.dbline 212
; 			 DECODER_FLAG_H;
	lds R24,_flag
	ori R24,4
	sts _flag,R24
	.dbline 213
; 		     DECODER_EN_L;
	andi R24,253
	sts _flag,R24
	.dbline 214
; 				eaddr0=data[0];
	lds R2,_data
	sts _eaddr0,R2
	.dbline 215
; 				eaddr1=data[1];
	lds R2,_data+1
	sts _eaddr1,R2
	.dbline 216
; 			 return;
	rjmp L20
X1:
	.dbline 219
; 			 }//n
; 		  else //解码错误
; 		    {
	.dbline 220
; 			goto give_up;
	.dbline 223
; 			}
; 		  }//5-3
; 		  return;
L43:
	.dbline 226
; 	 }//5
; 	else //为0的数据存贮
; 	{//6
	.dbline 227
; 	 i=data[2]&0x80;	  //保存第七位
	lds R22,_data+2
	andi R22,128
	.dbline 228
; 	 data[2]<<=1;
	lds R2,_data+2
	lsl R2
	sts _data+2,R2
	.dbline 229
; 	 j=data[1]&0x80;	  //保存第七位
	lds R20,_data+1
	andi R20,128
	.dbline 230
; 	 if(i){data[1]<<=1;data[1]+=1;}
	tst R22
	breq L65
	.dbline 230
	.dbline 230
	lds R2,_data+1
	lsl R2
	sts _data+1,R2
	.dbline 230
	mov R24,R2
	subi R24,255    ; addi 1
	sts _data+1,R24
	.dbline 230
	rjmp L66
L65:
	.dbline 231
; 	 else data[1]<<=1;
	lds R2,_data+1
	lsl R2
	sts _data+1,R2
L66:
	.dbline 232
; 	 if(j){data[0]<<=1;data[0]+=1;}
	tst R20
	breq L70
	.dbline 232
	.dbline 232
	lds R2,_data
	lsl R2
	sts _data,R2
	.dbline 232
	mov R24,R2
	subi R24,255    ; addi 1
	sts _data,R24
	.dbline 232
	rjmp L71
L70:
	.dbline 233
; 	 else data[0]<<=1;
	lds R2,_data
	lsl R2
	sts _data,R2
L71:
	.dbline 234
; 	   BITCOUNTER--;
	lds R24,_BITCOUNTER
	subi R24,1
	sts _BITCOUNTER,R24
	.dbline 235
; 	   if (BITCOUNTER==0)//解码完成
	tst R24
	brne L20
	.dbline 236
; 	   	  {//6-3
	.dbline 237
; 		  if(CRC3(data,3)==0)
	ldi R18,3
	ldi R16,<_data
	ldi R17,>_data
	rcall _CRC3
	tst R16
	brne L61
	.dbline 238
;  		        {//n
	.dbline 239
; 			 	DECODER_FLAG_H;
	lds R24,_flag
	ori R24,4
	sts _flag,R24
	.dbline 240
; 		     	DECODER_EN_L;
	andi R24,253
	sts _flag,R24
	.dbline 241
; 				eaddr0=data[0];
	lds R2,_data
	sts _eaddr0,R2
	.dbline 242
; 				eaddr1=data[1];
	lds R2,_data+1
	sts _eaddr1,R2
	.dbline 243
; 				return;
	rjmp L20
X2:
	.dbline 246
; 			 	}//n 
; 			else //解码错误
; 		    {
	.dbline 247
; 			goto give_up;
	.dbline 250
; 			}
; 		    }//6-3
; 		  return;
L61:
	.dbline 253
	clr R2
	sts _data,R2
	.dbline 254
	sts _data+1,R2
	.dbline 255
	sts _data+2,R2
	.dbline 256
	ldi R30,<_CODELANGTH
	ldi R31,>_CODELANGTH
	lpm R30,Z
	sts _BITCOUNTER,R30
	.dbline 257
	lds R24,_flag
	andi R24,251
	sts _flag,R24
	.dbline 258
	sts _LO_COUNT_SAVE,R2
	.dbline 259
	sts _HI_COUNT_SAVE,R2
	.dbline 260
L21:
	.dbline -2
L20:
	rcall pop_gset2
	rcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbend
	.area vector(rom, abs)
	.org 18
	rjmp _timer2_ovf_isr
	.area text(rom, con, rel)
	.dbfile E:\abol\file\EMD\programme\init.c
	.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
;              i -> <dead>
	.even
_timer2_ovf_isr::
	rcall push_lset
	.dbline -1
	.dbline 265
; 	}//6
; give_up:
; 	   data[0]=0; 
; 	   data[1]=0;
; 	   data[2]=0;
; 		BITCOUNTER=CODELANGTH;
; 		DECODER_FLAG_L;
; 		LO_COUNT_SAVE=0;
; 		HI_COUNT_SAVE=0;
;   }//1 
; 
; }
; #pragma interrupt_handler timer2_ovf_isr:10
; void timer2_ovf_isr(void)     //中断程序 
; {//00
	.dbline 269
;  unsigned char i;
;  //RF_ON;//关RF使能
;  //DECODER_EN_L;//关RF接收数据
;  flag|=0x80;
	lds R24,_flag
	ori R24,128
	sts _flag,R24
	.dbline 270
;  flagh|=0x80; 
	lds R24,_flagh
	ori R24,128
	sts _flagh,R24
	.dbline 271
;    bitclr(PORTD,0);             
	cbi 0xb,0
	.dbline 272
;    acount++;
	lds R24,_acount
	subi R24,255    ; addi 1
	sts _acount,R24
	.dbline 273
;    if(acount>1) 
	ldi R24,1
	lds R2,_acount
	cp R24,R2
	brsh L80
	.dbline 274
;      { 
	.dbline 275
; 	 tm1620();		//刷新显示 
	rcall _tm1620
	.dbline 276
;      flagh^=0x04;	  //闪烁LED 32768/32*2=0.5s 
	ldi R24,4
	lds R2,_flagh
	eor R2,R24
	sts _flagh,R2
	.dbline 277
; 	 acount=0; 
	clr R2
	sts _acount,R2
	.dbline 278
;    	 }
L80:
	.dbline 279
;  bcount++; 
	lds R24,_bcount
	subi R24,255    ; addi 1
	sts _bcount,R24
	.dbline 280
;  if(bcount>3)               // 
	ldi R24,3
	lds R2,_bcount
	cp R24,R2
	brlo X9
	rjmp L82
X9:
	.dbline 281
;   {//3 
	.dbline 282
;   	   if(SPFC!=0)			//开蜂鸣器
	lds R2,_SPFC
	tst R2
	breq L84
	.dbline 283
; 	   {
	.dbline 284
; 	   bitset(PORTD,0);
	sbi 0xb,0
	.dbline 285
; 	   SPFC--;
	mov R24,R2
	subi R24,1
	sts _SPFC,R24
	.dbline 286
; 	   }
L84:
	.dbline 296
;   	/*    RF_OFF;		 //开RF使能
; 	   data[0]=0; 
; 	   data[1]=0;
; 	   data[2]=0;
; 		BITCOUNTER=CODELANGTH;
; 		DECODER_FLAG_L;
; 		LO_COUNT_SAVE=0;
; 		HI_COUNT_SAVE=0;
;         DECODER_EN_H;//开RF接收数据		*/
; 		flag&=~0x80;
	lds R24,_flag
	andi R24,127
	sts _flag,R24
	.dbline 297
;   bcount=0; 
	clr R2
	sts _bcount,R2
	.dbline 298
;   sec--; 
	lds R24,_sec
	subi R24,1
	sts _sec,R24
	.dbline 299
;   sec0--;
	lds R24,_sec0
	subi R24,1
	sts _sec0,R24
	.dbline 300
;   if(sec0==0)
	tst R24
	brne L86
	.dbline 301
; 	  {
	.dbline 302
; 	  sec0=3;
	ldi R24,3
	sts _sec0,R24
	.dbline 303
; 	  flagh |=BIT(1);	//3sec	
	lds R24,_flagh
	ori R24,2
	sts _flagh,R24
	.dbline 304
; 	  } 
L86:
	.dbline 305
;   if(sec==0)                 //秒判断   32768/32*4*SEC
	lds R2,_sec
	tst R2
	breq X10
	rjmp L88
X10:
	.dbline 306
;     {//4
	.dbline 307
; 	flagh |=BIT(0);                  //倒计时时间到
	lds R24,_flagh
	ori R24,1
	sts _flagh,R24
	.dbline 308
; 	sec=60;
	ldi R24,60
	sts _sec,R24
	.dbline 309
; 	  if((PIND&0X06)==2)
	in R24,0x9
	andi R24,6
	cpi R24,2
	brne L90
	.dbline 310
; 	    {
	.dbline 311
; 	  	minu15++;
	lds R24,_minu15
	subi R24,255    ; addi 1
	sts _minu15,R24
	.dbline 312
; 		if(minu15>15)  //15分钟自动全部清除
	ldi R24,15
	lds R2,_minu15
	cp R24,R2
	brsh L92
	.dbline 313
; 		  {
	.dbline 314
; 		  datas[0]=datas[1]=datas[2]=datas[3]=datas[4]=datas[5]=datas[6]=datas[7]=0;
	clr R2
	sts _datas+7,R2
	sts _datas+6,R2
	sts _datas+5,R2
	sts _datas+4,R2
	sts _datas+3,R2
	sts _datas+2,R2
	sts _datas+1,R2
	sts _datas,R2
	.dbline 315
; 		  dipdata[3]=dipdata[4]=dipdata[5]=0;
	sts _dipdata+5,R2
	sts _dipdata+4,R2
	sts _dipdata+3,R2
	.dbline 316
; 		  dipdata[0]=dipdata[1]=dipdata[2]=0;
	sts _dipdata+2,R2
	sts _dipdata+1,R2
	sts _dipdata,R2
	.dbline 317
; 		  dipdata[5]|=0x80;	  //电源LED
	lds R24,_dipdata+5
	ori R24,128
	sts _dipdata+5,R24
	.dbline 318
; 		  minu15=0;
	sts _minu15,R2
	.dbline 319
; 		  minu30=0;
	sts _minu30,R2
	.dbline 320
; 		  }
L92:
	.dbline 321
; 		 }
L90:
	.dbline 322
; 	  if((PIND&0X06)==4)
	in R24,0x9
	andi R24,6
	cpi R24,4
	brne L107
	.dbline 323
; 	    {
	.dbline 324
; 	  	minu30++;
	lds R24,_minu30
	subi R24,255    ; addi 1
	sts _minu30,R24
	.dbline 325
; 		if(minu30>30)	//30分钟自动全部清除
	ldi R24,30
	lds R2,_minu30
	cp R24,R2
	brsh L109
	.dbline 326
; 		  {
	.dbline 327
; 		  datas[0]=datas[1]=datas[2]=datas[3]=datas[4]=datas[5]=datas[6]=datas[7]=0;
	clr R2
	sts _datas+7,R2
	sts _datas+6,R2
	sts _datas+5,R2
	sts _datas+4,R2
	sts _datas+3,R2
	sts _datas+2,R2
	sts _datas+1,R2
	sts _datas,R2
	.dbline 328
; 		  dipdata[3]=dipdata[4]=dipdata[5]=0;
	sts _dipdata+5,R2
	sts _dipdata+4,R2
	sts _dipdata+3,R2
	.dbline 329
; 		  dipdata[0]=dipdata[1]=dipdata[2]=0;
	sts _dipdata+2,R2
	sts _dipdata+1,R2
	sts _dipdata,R2
	.dbline 330
; 		  dipdata[5]|=0x80;	  //电源LED
	lds R24,_dipdata+5
	ori R24,128
	sts _dipdata+5,R24
	.dbline 331
; 		  minu30=0;	
	sts _minu30,R2
	.dbline 332
; 		  minu15=0;
	sts _minu15,R2
	.dbline 333
; 		  }
L109:
	.dbline 334
; 		 }
L107:
	.dbline 335
;     }//4
L88:
	.dbline 336
L82:
	.dbline -2
L79:
	rcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym l i 1 c
	.dbend

⌨️ 快捷键说明

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