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

📄 main.s

📁 这一个用ATTINY26做的433M无线遥控解码程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline 222
; 			{
	.dbline 223
; 				CLR_RLY1;
	cbi 0x1b,1
	.dbline 224
; 				CLR_RLY2;
	cbi 0x1b,0
	.dbline 225
; 			}
L38:
L37:
L35:
	.dbline 226
; 		}
L32:
	.dbline 227
L30:
	.dbline -2
L27:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 233
; 	}
; }
; 
; 
; 
; void main(void)
; {
	.dbline 234
; 	init_devices();
	rcall _init_devices
	.dbline 236
; 	
; 	SET_LED1;
	sbi 0x18,5
	rjmp L43
L42:
	.dbline 239
; 	
; 	while(1)
; 	{
	.dbline 240
; 		if(flag_4ms)
	lds R2,_flag_4ms
	tst R2
	breq L45
	.dbline 241
; 		{
	.dbline 242
; 			flag_4ms = 0;
	clr R2
	sts _flag_4ms,R2
	.dbline 243
; 			asm("WDR");	
	WDR
	.dbline 244
; 			Remote_set();
	rcall _Remote_set
	.dbline 245
; 			key_scan();
	rcall _key_scan
	.dbline 246
; 		}
L45:
	.dbline 247
L43:
	.dbline 238
	rjmp L42
X1:
	.dbline -2
L41:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 2
	rjmp _int0_isr
	.area text(rom, con, rel)
	.dbfile I:\REDFOX~1\Remote\main.c
	.dbfunc e int0_isr _int0_isr fV
;           temp -> R16
;              i -> R16,R17
	.even
_int0_isr::
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R16
	st -y,R17
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 254
; 	}
; }
; 
; 
; 
; #pragma interrupt_handler int0_isr:2
; void int0_isr(void)
; {
	.dbline 258
; 	uchar	temp;
; 	uint	i;
; 
; 	if(!start)
	lds R2,_start
	tst R2
	breq X2
	rjmp L48
X2:
	.dbline 259
; 	{
	.dbline 260
; 		if(MCUCR==0x02)
	in R24,0x35
	cpi R24,2
	brne L50
	.dbline 261
; 		{
	.dbline 262
; 			MCUCR  = 0x03;
	ldi R24,3
	out 0x35,R24
	.dbline 263
; 			TCNT1  = 0x00;
	clr R2
	out 0x2e,R2
	.dbline 264
;  			timeH  = 0x00;
	sts _timeH,R2
	.dbline 265
;  			timeL  = 0x00;
	sts _timeL,R2
	.dbline 266
;  			TCCR1B = 0x05;
	ldi R24,5
	out 0x2f,R24
	.dbline 268
;  			
; 		}
	rjmp L49
L50:
	.dbline 269
; 		else if(MCUCR==0x03)
	in R24,0x35
	cpi R24,3
	breq X3
	rjmp L49
X3:
	.dbline 270
; 		{
	.dbline 271
; 			TCCR1B = 0x00;
	clr R2
	out 0x2f,R2
	.dbline 272
; 			MCUCR  = 0x02;
	ldi R24,2
	out 0x35,R24
	.dbline 274
; 
; 			i = timeH*256 + TCNT1;
	in R2,0x2e
	lds R3,_timeH
	mov R17,R3
	mov R16,R2
	.dbline 275
; 			if(i>1620 && timeH<1800) 	// 同步头
	ldi R24,1620
	ldi R25,6
	cp R24,R16
	cpc R25,R17
	brlo X4
	rjmp L49
X4:
	mov R24,R3
	cpi R24,8
	brlt X5
	rjmp L49
X5:
	.dbline 276
; 			{
	.dbline 277
; 				start  = 1;
	ldi R24,1
	sts _start,R24
	.dbline 278
; 				TCNT1  = 0x00;
	clr R2
	out 0x2e,R2
	.dbline 279
; 	 			timeH  = 0x00;
	sts _timeH,R2
	.dbline 280
; 	 			timeL  = 0x00;
	sts _timeL,R2
	.dbline 281
; 	 			TCCR1B = 0x05;
	ldi R24,5
	out 0x2f,R24
	.dbline 283
; 	 			
; 	 			bits   = 0;
	sts _bits,R2
	.dbline 284
; 	 			addrL  = 0;
	sts _addrL,R2
	.dbline 285
; 				addrH  = 0;
	sts _addrH,R2
	.dbline 286
; 	 			datas  = 0;
	sts _datas,R2
	.dbline 287
; 	 			flag   = 0;
	sts _flag,R2
	.dbline 288
; 			}	
	.dbline 289
; 		}
	.dbline 290
; 	}
	rjmp L49
L48:
	.dbline 292
; 	else 
; 	{
	.dbline 293
;  		if(MCUCR==0x02)		// 下降沿读时间
	in R24,0x35
	cpi R24,2
	breq X6
	rjmp L56
X6:
	.dbline 294
;  		{	
	.dbline 295
;  			TCCR1B = 0x00;
	clr R2
	out 0x2f,R2
	.dbline 296
;  			MCUCR  = 0x03;
	ldi R24,3
	out 0x35,R24
	.dbline 297
;  			if(timeH>0) start = 0; // 超时
	lds R3,_timeH
	cp R2,R3
	brsh L58
	.dbline 297
	sts _start,R2
	rjmp L57
L58:
	.dbline 299
;  			else 
;  			{
	.dbline 300
; 	 			timeL = TCNT1;
	in R2,0x2e
	sts _timeL,R2
	.dbline 301
; 	 			if(timeL>40 && timeL<60) temp = 0x00;
	ldi R24,40
	cp R24,R2
	brsh L60
	mov R24,R2
	cpi R24,60
	brsh L60
	.dbline 301
	clr R16
	rjmp L61
L60:
	.dbline 302
; 	 			else if(timeL>150 && timeL<170)  temp = 0x80;
	ldi R24,150
	lds R2,_timeL
	cp R24,R2
	brsh L62
	mov R24,R2
	cpi R24,170
	brsh L62
	.dbline 302
	ldi R16,128
L62:
L61:
	.dbline 304
; 
; 	 			if(flag==0)			// 地址低位
	lds R2,_flag
	tst R2
	brne L64
	.dbline 305
; 	 			{
	.dbline 306
; 		 			addrL >>= 1;
	lds R2,_addrL
	lsr R2
	sts _addrL,R2
	.dbline 307
; 		 			addrL |= temp;
	or R2,R16
	sts _addrL,R2
	.dbline 308
; 		 		}
	rjmp L65
L64:
	.dbline 309
; 		 		else if(flag==1)	// 地址高位
	lds R24,_flag
	cpi R24,1
	brne L66
	.dbline 310
; 		 		{
	.dbline 311
; 		 			addrH >>= 1;
	lds R2,_addrH
	lsr R2
	sts _addrH,R2
	.dbline 312
; 		 			addrH |= temp;
	or R2,R16
	sts _addrH,R2
	.dbline 313
; 		 		}
	rjmp L67
L66:
	.dbline 314
; 		 		else if(flag==2) 	// 数据
	lds R24,_flag
	cpi R24,2
	brne L68
	.dbline 315
; 		 		{
	.dbline 316
; 		 			datas >>= 1;	
	lds R2,_datas
	lsr R2
	sts _datas,R2
	.dbline 317
; 		 			datas |= temp;
	or R2,R16
	sts _datas,R2
	.dbline 318
; 		 		}
L68:
L67:
L65:
	.dbline 320
; 	
; 	 			bits ++;
	lds R24,_bits
	subi R24,255    ; addi 1
	sts _bits,R24
	.dbline 321
; 	 			if(bits==8)  	  flag = 1;	
	cpi R24,8
	brne L70
	.dbline 321
	ldi R24,1
	sts _flag,R24
	rjmp L57
L70:
	.dbline 322
; 				else if(bits==16) flag = 2;	
	lds R24,_bits
	cpi R24,16
	brne L72
	.dbline 322
	ldi R24,2
	sts _flag,R24
	rjmp L57
L72:
	.dbline 323
; 	 			else if(bits>=24) 
	lds R24,_bits
	cpi R24,24
	brlo L57
	.dbline 324
; 	 			{
	.dbline 325
; 	 				start = 0;
	clr R2
	sts _start,R2
	.dbline 326
; 	 				rxd_flag = 1;
	ldi R24,1
	sts _rxd_flag,R24
	.dbline 327
; 	 				rxd_data = datas;
	lds R2,_datas
	sts _rxd_data,R2
	.dbline 328
; 	 				addr = addrH*256 + addrL;
	lds R2,_addrL
	lds R3,_addrH
	sts _addr+1,R3
	sts _addr,R2
	.dbline 329
; 	 			}
	.dbline 330
; 			}
	.dbline 331
;  		}
	rjmp L57
L56:
	.dbline 332
;  		else if(MCUCR==0x03)	// 上升沿开始计时
	in R24,0x35
	cpi R24,3
	brne L76
	.dbline 333
;  		{
	.dbline 334
;  			MCUCR  = 0x02;
	ldi R24,2
	out 0x35,R24
	.dbline 336
;  			
;  			TCNT1  = 0x00;
	clr R2
	out 0x2e,R2
	.dbline 337
;  			timeH  = 0x00;
	sts _timeH,R2
	.dbline 338
;  			timeL  = 0x00;
	sts _timeL,R2
	.dbline 339
;  			TCCR1B = 0x05;
	ldi R24,5
	out 0x2f,R24
	.dbline 340
;  		}
L76:
L57:
	.dbline 341
L49:
	.dbline -2
L47:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R17,y+
	ld R16,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r temp 16 c
	.dbsym r i 16 i
	.dbend
	.area vector(rom, abs)
	.org 10
	rjmp _timer1_ovf_isr
	.area text(rom, con, rel)
	.dbfile I:\REDFOX~1\Remote\main.c
	.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
	.even
_timer1_ovf_isr::
	st -y,R2
	st -y,R24
	st -y,R25
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 349
; 	}	
; }
; 
; 
; 
; 
; #pragma interrupt_handler timer1_ovf_isr:6
; void timer1_ovf_isr(void)
; {
	.dbline 350
; 	TCNT1 = 0x00; //reload counter	
	clr R2
	out 0x2e,R2
	.dbline 351
; 	timeH ++;
	lds R24,_timeH
	subi R24,255    ; addi 1
	sts _timeH,R24
	.dbline -2
L78:
	ld R2,y+
	out 0x3f,R2
	ld R25,y+
	ld R24,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area vector(rom, abs)
	.org 12
	rjmp _timer0_ovf_isr
	.area text(rom, con, rel)
	.dbfile I:\REDFOX~1\Remote\main.c
	.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
	.even
_timer0_ovf_isr::
	st -y,R24
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 358
; }
; 
; 
; 
; #pragma interrupt_handler timer0_ovf_isr:7
; void timer0_ovf_isr(void)
; {
	.dbline 359
;  	TCNT0 = 0x83; //reload counter value
	ldi R24,131
	out 0x32,R24
	.dbline 361
;  	
;  	flag_4ms = 1;
	ldi R24,1
	sts _flag_4ms,R24
	.dbline -2
L79:
	ld R24,y+
	out 0x3f,R24
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.area bss(ram, con, rel)
	.dbfile I:\REDFOX~1\Remote\main.c
_rxd_data::
	.blkb 1
	.dbsym e rxd_data _rxd_data c
_addr::
	.blkb 2
	.dbsym e addr _addr i
_addrL::
	.blkb 1
	.dbsym e addrL _addrL c
_addrH::
	.blkb 1
	.dbsym e addrH _addrH c
_datas::
	.blkb 1
	.dbsym e datas _datas c
_timeL::
	.blkb 1
	.dbsym e timeL _timeL c
_timeH::
	.blkb 1
	.dbsym e timeH _timeH c
_bits::
	.blkb 1
	.dbsym e bits _bits c
_start::
	.blkb 1
	.dbsym e start _start c
_rxd_flag::
	.blkb 1
	.dbsym e rxd_flag _rxd_flag c
_flag::
	.blkb 1
	.dbsym e flag _flag c
_key2::
	.blkb 2
	.dbsym e key2 _key2 i
_key1::
	.blkb 2
	.dbsym e key1 _key1 i
_key::
	.blkb 2
	.dbsym e key _key i
_led_time::
	.blkb 1
	.dbsym e led_time _led_time c
_flag_4ms::
	.blkb 1
	.dbsym e flag_4ms _flag_4ms c

⌨️ 快捷键说明

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