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

📄 main.lss

📁 原创ateml avr 单片机遥控器解码程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
					DVDPowOff();
 a9e:	80 91 3b 00 	lds	r24, 0x003B
 aa2:	8f 7d       	andi	r24, 0xDF	; 223
 aa4:	80 93 3b 00 	sts	0x003B, r24
 aa8:	10 92 80 00 	sts	0x0080, r1
 aac:	2d c0       	rjmp	.+90     	; 0xb08 <main+0xc4>
				}
			}
			else// if(board_key==BOARD_KEY_EJ)
			{
				if(ej_sw_m!=DISC_OUT)
 aae:	80 91 39 00 	lds	r24, 0x0039
 ab2:	99 27       	eor	r25, r25
 ab4:	80 74       	andi	r24, 0x40	; 64
 ab6:	90 70       	andi	r25, 0x00	; 0
 ab8:	00 97       	sbiw	r24, 0x00	; 0
 aba:	31 f1       	breq	.+76     	; 0xb08 <main+0xc4>
				{
					if(dvdpower_f==DVD_POWER_OFF)
 abc:	80 91 80 00 	lds	r24, 0x0080
 ac0:	88 23       	and	r24, r24
 ac2:	e9 f4       	brne	.+58     	; 0xafe <main+0xba>
					{
						DVDPowOn();
 ac4:	80 91 3b 00 	lds	r24, 0x003B
 ac8:	80 62       	ori	r24, 0x20	; 32
 aca:	80 93 3b 00 	sts	0x003B, r24
 ace:	80 e2       	ldi	r24, 0x20	; 32
 ad0:	80 93 80 00 	sts	0x0080, r24
						delay_ms(TIME300MS);
 ad4:	8c e2       	ldi	r24, 0x2C	; 44
 ad6:	91 e0       	ldi	r25, 0x01	; 1
 ad8:	0e 94 1a 04 	call	0x834 <delay_ms>
						SendIRCode(IR_KEY_EJ);
 adc:	80 e3       	ldi	r24, 0x30	; 48
 ade:	0e 94 a6 04 	call	0x94c <SendIRCode>
						SendIRCodeStop();
 ae2:	0e 94 cf 00 	call	0x19e <SendIRCodeStop>
						delay_ms(TIME300MS);
 ae6:	8c e2       	ldi	r24, 0x2C	; 44
 ae8:	91 e0       	ldi	r25, 0x01	; 1
 aea:	0e 94 1a 04 	call	0x834 <delay_ms>
						DVDPowOff();
 aee:	80 91 3b 00 	lds	r24, 0x003B
 af2:	8f 7d       	andi	r24, 0xDF	; 223
 af4:	80 93 3b 00 	sts	0x003B, r24
 af8:	10 92 80 00 	sts	0x0080, r1
 afc:	05 c0       	rjmp	.+10     	; 0xb08 <main+0xc4>
					}
					else
					{
						SendIRCode(IR_KEY_EJ);
 afe:	80 e3       	ldi	r24, 0x30	; 48
 b00:	0e 94 a6 04 	call	0x94c <SendIRCode>
						SendIRCodeStop();
 b04:	0e 94 cf 00 	call	0x19e <SendIRCodeStop>
					}
				}
			}
		}
		ir_thread();
 b08:	0e 94 34 06 	call	0xc68 <ir_thread>
 b0c:	a5 cf       	rjmp	.-182    	; 0xa58 <main+0x14>

00000b0e <ir_key_up>:
	}
}
void ir_key_up(void)
{	
 b0e:	cf 93       	push	r28
 b10:	df 93       	push	r29
 b12:	cd b7       	in	r28, 0x3d	; 61
 b14:	de b7       	in	r29, 0x3e	; 62
	if(irKeyRpt_f)
 b16:	80 91 7b 00 	lds	r24, 0x007B
 b1a:	88 23       	and	r24, r24
 b1c:	69 f0       	breq	.+26     	; 0xb38 <ir_key_up+0x2a>
	{	
		if(irCode!=IR_KEY_POWER&&irCode!=IR_KEY_EJ)
 b1e:	80 91 78 00 	lds	r24, 0x0078
 b22:	80 3d       	cpi	r24, 0xD0	; 208
 b24:	09 f4       	brne	.+2      	; 0xb28 <ir_key_up+0x1a>
 b26:	76 c0       	rjmp	.+236    	; 0xc14 <ir_key_up+0x106>
 b28:	80 91 78 00 	lds	r24, 0x0078
 b2c:	80 33       	cpi	r24, 0x30	; 48
 b2e:	09 f4       	brne	.+2      	; 0xb32 <ir_key_up+0x24>
 b30:	71 c0       	rjmp	.+226    	; 0xc14 <ir_key_up+0x106>
		{
			SendIRCodeStop();
 b32:	0e 94 cf 00 	call	0x19e <SendIRCodeStop>
 b36:	6e c0       	rjmp	.+220    	; 0xc14 <ir_key_up+0x106>
		}
	}
	else 
	{
		if(irCode==IR_KEY_POWER)
 b38:	80 91 78 00 	lds	r24, 0x0078
 b3c:	80 3d       	cpi	r24, 0xD0	; 208
 b3e:	f1 f4       	brne	.+60     	; 0xb7c <ir_key_up+0x6e>
		{
			if(dvdpower_f==DVD_POWER_OFF)
 b40:	80 91 80 00 	lds	r24, 0x0080
 b44:	88 23       	and	r24, r24
 b46:	49 f4       	brne	.+18     	; 0xb5a <ir_key_up+0x4c>
			{
				DVDPowOn();
 b48:	80 91 3b 00 	lds	r24, 0x003B
 b4c:	80 62       	ori	r24, 0x20	; 32
 b4e:	80 93 3b 00 	sts	0x003B, r24
 b52:	80 e2       	ldi	r24, 0x20	; 32
 b54:	80 93 80 00 	sts	0x0080, r24
 b58:	3b c0       	rjmp	.+118    	; 0xbd0 <ir_key_up+0xc2>
			}
			else
			{
				SendIRCode(IR_KEY_POWER);
 b5a:	80 ed       	ldi	r24, 0xD0	; 208
 b5c:	0e 94 a6 04 	call	0x94c <SendIRCode>
				SendIRCodeStop();
 b60:	0e 94 cf 00 	call	0x19e <SendIRCodeStop>
				delay_ms(TIME120MS);
 b64:	88 e7       	ldi	r24, 0x78	; 120
 b66:	90 e0       	ldi	r25, 0x00	; 0
 b68:	0e 94 1a 04 	call	0x834 <delay_ms>
				DVDPowOff();
 b6c:	80 91 3b 00 	lds	r24, 0x003B
 b70:	8f 7d       	andi	r24, 0xDF	; 223
 b72:	80 93 3b 00 	sts	0x003B, r24
 b76:	10 92 80 00 	sts	0x0080, r1
 b7a:	2a c0       	rjmp	.+84     	; 0xbd0 <ir_key_up+0xc2>
			}
		}
		else //if(irCode==IR_KEY_EJ)
		{
			if(ej_sw_m!=DISC_OUT)
 b7c:	80 91 39 00 	lds	r24, 0x0039
 b80:	99 27       	eor	r25, r25
 b82:	80 74       	andi	r24, 0x40	; 64
 b84:	90 70       	andi	r25, 0x00	; 0
 b86:	00 97       	sbiw	r24, 0x00	; 0
 b88:	19 f1       	breq	.+70     	; 0xbd0 <ir_key_up+0xc2>
			{			
				if(dvdpower_f==DVD_POWER_OFF)
 b8a:	80 91 80 00 	lds	r24, 0x0080
 b8e:	88 23       	and	r24, r24
 b90:	e9 f4       	brne	.+58     	; 0xbcc <ir_key_up+0xbe>
				{
					DVDPowOn();
 b92:	80 91 3b 00 	lds	r24, 0x003B
 b96:	80 62       	ori	r24, 0x20	; 32
 b98:	80 93 3b 00 	sts	0x003B, r24
 b9c:	80 e2       	ldi	r24, 0x20	; 32
 b9e:	80 93 80 00 	sts	0x0080, r24
					delay_ms(TIME300MS);
 ba2:	8c e2       	ldi	r24, 0x2C	; 44
 ba4:	91 e0       	ldi	r25, 0x01	; 1
 ba6:	0e 94 1a 04 	call	0x834 <delay_ms>
					SendIRCode(IR_KEY_EJ);
 baa:	80 e3       	ldi	r24, 0x30	; 48
 bac:	0e 94 a6 04 	call	0x94c <SendIRCode>
					SendIRCodeStop();
 bb0:	0e 94 cf 00 	call	0x19e <SendIRCodeStop>
					delay_ms(TIME300MS);
 bb4:	8c e2       	ldi	r24, 0x2C	; 44
 bb6:	91 e0       	ldi	r25, 0x01	; 1
 bb8:	0e 94 1a 04 	call	0x834 <delay_ms>
					DVDPowOff();
 bbc:	80 91 3b 00 	lds	r24, 0x003B
 bc0:	8f 7d       	andi	r24, 0xDF	; 223
 bc2:	80 93 3b 00 	sts	0x003B, r24
 bc6:	10 92 80 00 	sts	0x0080, r1
 bca:	02 c0       	rjmp	.+4      	; 0xbd0 <ir_key_up+0xc2>
				}
				else
				{
					SendIRCodeStop();
 bcc:	0e 94 cf 00 	call	0x19e <SendIRCodeStop>
				}
			}
		}		
		if(dvdpower_f==DVD_POWER_OFF)				
 bd0:	80 91 80 00 	lds	r24, 0x0080
 bd4:	88 23       	and	r24, r24
 bd6:	f1 f4       	brne	.+60     	; 0xc14 <ir_key_up+0x106>
		{
			if(load_sw_f!=load_sw_m)
 bd8:	80 91 74 00 	lds	r24, 0x0074
 bdc:	28 2f       	mov	r18, r24
 bde:	33 27       	eor	r19, r19
 be0:	80 91 39 00 	lds	r24, 0x0039
 be4:	99 27       	eor	r25, r25
 be6:	80 78       	andi	r24, 0x80	; 128
 be8:	90 70       	andi	r25, 0x00	; 0
 bea:	28 17       	cp	r18, r24
 bec:	39 07       	cpc	r19, r25
 bee:	91 f0       	breq	.+36     	; 0xc14 <ir_key_up+0x106>
			{
				if(load_sw_f==0)
 bf0:	80 91 74 00 	lds	r24, 0x0074
 bf4:	88 23       	and	r24, r24
 bf6:	41 f4       	brne	.+16     	; 0xc08 <ir_key_up+0xfa>
				{
					DVDPowOn();
 bf8:	80 91 3b 00 	lds	r24, 0x003B
 bfc:	80 62       	ori	r24, 0x20	; 32
 bfe:	80 93 3b 00 	sts	0x003B, r24
 c02:	80 e2       	ldi	r24, 0x20	; 32
 c04:	80 93 80 00 	sts	0x0080, r24
				}
				load_sw_f=load_sw_m;
 c08:	80 e8       	ldi	r24, 0x80	; 128
 c0a:	90 91 39 00 	lds	r25, 0x0039
 c0e:	89 23       	and	r24, r25
 c10:	80 93 74 00 	sts	0x0074, r24
 c14:	df 91       	pop	r29
 c16:	cf 91       	pop	r28
 c18:	08 95       	ret

00000c1a <ir_key_down>:
			}	
			
		}
	}
}
void ir_key_down(void)
{
 c1a:	cf 93       	push	r28
 c1c:	df 93       	push	r29
 c1e:	cd b7       	in	r28, 0x3d	; 61
 c20:	de b7       	in	r29, 0x3e	; 62
	if(irCode!=IR_KEY_POWER&&irCode!=IR_KEY_EJ)
 c22:	80 91 78 00 	lds	r24, 0x0078
 c26:	80 3d       	cpi	r24, 0xD0	; 208
 c28:	49 f0       	breq	.+18     	; 0xc3c <ir_key_down+0x22>
 c2a:	80 91 78 00 	lds	r24, 0x0078
 c2e:	80 33       	cpi	r24, 0x30	; 48
 c30:	29 f0       	breq	.+10     	; 0xc3c <ir_key_down+0x22>
		SendIRCodeStart(irCode);
 c32:	80 91 78 00 	lds	r24, 0x0078
 c36:	0e 94 ac 00 	call	0x158 <SendIRCodeStart>
 c3a:	13 c0       	rjmp	.+38     	; 0xc62 <ir_key_down+0x48>
	else if(irCode==IR_KEY_EJ&&dvdpower_f==DVD_POWER_ON)
 c3c:	80 91 78 00 	lds	r24, 0x0078
 c40:	80 33       	cpi	r24, 0x30	; 48
 c42:	79 f4       	brne	.+30     	; 0xc62 <ir_key_down+0x48>
 c44:	80 91 80 00 	lds	r24, 0x0080
 c48:	80 32       	cpi	r24, 0x20	; 32
 c4a:	59 f4       	brne	.+22     	; 0xc62 <ir_key_down+0x48>
	{
		if(ej_sw_m!=DISC_OUT)
 c4c:	80 91 39 00 	lds	r24, 0x0039
 c50:	99 27       	eor	r25, r25
 c52:	80 74       	andi	r24, 0x40	; 64
 c54:	90 70       	andi	r25, 0x00	; 0
 c56:	00 97       	sbiw	r24, 0x00	; 0
 c58:	21 f0       	breq	.+8      	; 0xc62 <ir_key_down+0x48>
			SendIRCodeStart(irCode);
 c5a:	80 91 78 00 	lds	r24, 0x0078
 c5e:	0e 94 ac 00 	call	0x158 <SendIRCodeStart>
 c62:	df 91       	pop	r29
 c64:	cf 91       	pop	r28
 c66:	08 95       	ret

00000c68 <ir_thread>:
	}			
}
//ir消息线程,判断当前ir状态
void ir_thread(void)
{
 c68:	cf 93       	push	r28
 c6a:	df 93       	push	r29
 c6c:	cd b7       	in	r28, 0x3d	; 61
 c6e:	de b7       	in	r29, 0x3e	; 62
 c70:	22 97       	sbiw	r28, 0x02	; 2
 c72:	0f b6       	in	r0, 0x3f	; 63
 c74:	f8 94       	cli
 c76:	de bf       	out	0x3e, r29	; 62
 c78:	0f be       	out	0x3f, r0	; 63
 c7a:	cd bf       	out	0x3d, r28	; 61
	switch(irKeyEvent)
 c7c:	80 91 62 00 	lds	r24, 0x0062
 c80:	28 2f       	mov	r18, r24
 c82:	33 27       	eor	r19, r19
 c84:	3a 83       	std	Y+2, r19	; 0x02
 c86:	29 83       	std	Y+1, r18	; 0x01
 c88:	89 81       	ldd	r24, Y+1	; 0x01
 c8a:	9a 81       	ldd	r25, Y+2	; 0x02
 c8c:	81 30       	cpi	r24, 0x01	; 1
 c8e:	91 05       	cpc	r25, r1
 c90:	49 f0       	breq	.+18     	; 0xca4 <ir_thread+0x3c>
 c92:	29 81       	ldd	r18, Y+1	; 0x01
 c94:	3a 81       	ldd	r19, Y+2	; 0x02
 c96:	24 30       	cpi	r18, 0x04	; 4
 c98:	31 05       	cpc	r19, r1
 c9a:	09 f0       	breq	.+2      	; 0xc9e <ir_thread+0x36>
 c9c:	05 c0       	rjmp	.+10     	; 0xca8 <ir_thread+0x40>
	{
		case _IR_KEY_UP:
			ir_key_up();
 c9e:	0e 94 87 05 	call	0xb0e <ir_key_up>
			break;
 ca2:	02 c0       	rjmp	.+4      	; 0xca8 <ir_thread+0x40>
		case _IR_KEY_DOWN:
			ir_key_down();
 ca4:	0e 94 0d 06 	call	0xc1a <ir_key_down>
			break;
	}
	irKeyEvent=0;
 ca8:	10 92 62 00 	sts	0x0062, r1
 cac:	22 96       	adiw	r28, 0x02	; 2
 cae:	0f b6       	in	r0, 0x3f	; 63
 cb0:	f8 94       	cli
 cb2:	de bf       	out	0x3e, r29	; 62
 cb4:	0f be       	out	0x3f, r0	; 63
 cb6:	cd bf       	out	0x3d, r28	; 61
 cb8:	df 91       	pop	r29
 cba:	cf 91       	pop	r28
 cbc:	08 95       	ret

00000cbe <BoardKeyDetect>:
}
//检测面板按键按下
void BoardKeyDetect(void) 
{
 cbe:	cf 93       	push	r28
 cc0:	df 93       	push	r29
 cc2:	cd b7       	in	r28, 0x3d	; 61
 cc4:	de b7       	in	r29, 0x3e	; 62
 cc6:	22 97       	sbiw	r28, 0x02	; 2
 cc8:	0f b6       	in	r0, 0x3f	; 63
 cca:	f8 94       	cli
 ccc:	de bf       	out	0x3e, r29	; 62
 cce:	0f be       	out	0x3f, r0	; 63
 cd0:	cd bf       	out	0x3d, r28	; 61
	UIN16 counttemp;
	if(key_pow_l)
 cd2:	80 91 39 00 	lds	r24, 0x0039
 cd6:	99 27       	eor	r25, r25
 cd8:	82 70       	andi	r24, 0x02	; 2
 cda:	90 70       	andi	r25, 0x00	; 0
 cdc:	00 97       	sbiw	r24, 0x00	; 0
 cde:	09 f0       	breq	.+2      	; 0xce2 <BoardKeyDetect+0x24>
 ce0:	41 c0       	rjmp	.+130    	; 0xd64 <BoardKeyDetect+0xa6>
	{
		delay_ms(1);
 ce2:	81 e0       	ldi	r24, 0x01	; 1
 ce4:	90 e0       	ldi	r25, 0x00	; 0
 ce6:	0e 94 1a 04 	call	0x834 <delay_ms>
		if(key_pow_l)
 cea:	80 91 39 00 	lds	r24, 0x0039
 cee:	99 27       	eor	r25, r25
 cf0:	82 70       	andi	r24, 0x02	; 2
 cf2:	90 70       	andi	r25, 0x00	; 0
 cf4:	00 97       	sbiw	r24, 0x00	; 0
 cf6:	09 f0       	breq	.+2      	; 0xcfa <BoardKeyDetect+0x3c>
 cf8:	76 c0       	rjmp	.+236    	; 0xde6 <BoardKeyDetect+0x128>
		{
			boardKeyEvent=BOARD_KEY_DOWN;
 cfa:	81 e0       	ldi	r24, 0x01	; 1
 cfc:	80 93 7c 00 	sts	0x007C, r24
			SendIRCodeStop();					//有按键时停止发送遥控码
 d00:	0e 94 cf 00 	call	0x19e <SendIRCodeStop>
			counttemp=TIME1S;
 d04:	88 ee       	ldi	r24, 0xE8	; 232
 d06:	93 e0       	ldi	r25, 0x03	; 3
 d08:	9a 83       	std	Y+2, r25	; 0x02
 d0a:	89 83       	std	Y+1, r24	; 0x01
			while(key_pow_l&&counttemp--)
 d0c:	80 91 39 00 	lds	r24, 0x0039
 d10:	99 27       	eor	r25, r25
 d12:	82 70       	andi	r24, 0x02	; 2
 d14:	90 70       	andi	r25, 0x00	; 0
 d16:	00 97       	sbiw	r24, 0x00	; 0
 d18:	71 f4       	brne	.+28     	; 0xd36 <BoardKeyDetect+0x78>
 d1a:	89 81       	ldd	r24, Y+1	; 0x01
 d1c:	9a 81       	ldd	r25, Y+2	; 0x02
 d1e:	01 97       	sbiw	r24, 0x01	; 1
 d20:	9a 83       	std	Y+2, r25	; 0x02
 d22:	89 83       	std	Y+1, r24	; 0x01
 d24:	2f ef       	ldi	r18, 0xFF	; 255
 d26:	8f 3f       	cpi	r24, 0xFF	; 255
 d28:	92 07       	cpc	r25, r18
 d2a:	29 f0       	breq	.+10     	; 0xd36 <BoardKeyDetect+0x78>
			{
					delay_ms(1);
 d2c:	81 e0       	ldi	r24, 0x01	; 1
 d2e:	90 e0       	ldi	r25, 0x00	; 0
 d30:	0e 94 1a 04 	call	0x834 <dela

⌨️ 快捷键说明

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