资讯详情

NY8A053D 摇控发射程序

#include  #include "ny8_constant.h" #include "stdint.h" /* ; ====================NY8A053D========================== ; ┌──────────┐ ; PA0┤1 14├PA1 ; PB7┤2 13├PA2 ; PB6┤3 12├PA3 ; VDD┤4 11├VSS ; PB5┤5 10├PB0 ; PB4┤6 9├PB1 ; PB3┤7 8├PB2 ; └──────────┘ ; ======================================================*/  #define b_key1 PB4 #define b_key2 PB5 #define b_key3 PB0 #define b_key4 PB1 #define b_key5 PB3 #define b_led1 PA2 #define b_tx PA1  unsigned char  bzw; __sbit  b_value1=bzw:0; __sbit  b_value2=bzw:1; __sbit  b_value3=bzw:2; __sbit  b_value4=bzw:3; __sbit  b_value5=bzw:4;   unsigned char  time; unsigned char sleep_time;  unsigned char  key1_time; unsigned char  key2_time; unsigned char  key3_time; unsigned char  key4_time; unsigned char  key5_time;  unsigned char  pwma_loop; unsigned char  pwma_time; unsigned char  pwma_high;
unsigned char  pwma_cycle;
unsigned char  tx_data;
unsigned char  tx_dataH;
unsigned char  tx_dataL;
unsigned char  tx_byte;
unsigned char  tx_number;
unsigned char  tx_position;
unsigned char	led1_time;


/******************************************/

void	key1(void)
{ 
       
	if(b_key1==0)
	{ 
       
		sleep_time=0;		
	   if(key1_time<250)
			key1_time++;			
		if(key1_time==3)
			b_value1=1;					
	}
	else
	{ 
       
		key1_time=0;
		if(b_value1==1)
		{ 
       	tx_position=0;
			led1_time=20;
			tx_dataH=0xA5;
			tx_dataL=0x11;
 			tx_number=8;
		}
		b_value1=0;	
	}
}
/******************************************/
void	key2(void)
{ 
       
	if(b_key2==0)
	{ 
       
		sleep_time=0;		
	   if(key2_time<250)
			key2_time++;			
		if(key2_time==3)
			b_value2=1;				
	}
	else
	{ 
       
		key2_time=0;
		if(b_value2==1)
		{ 
       	tx_position=0;
			led1_time=20;
			tx_dataH=0xA5;
			tx_dataL=0x22;
 			tx_number=8;
		}
		b_value2=0;	
	}
}

/******************************************/
void	key3(void)
{ 
       
	if(b_key3==0)
	{ 
       
		sleep_time=0;		
	   if(key3_time<250)
			key3_time++;			
		if(key3_time==3)
			b_value3=1;					
	}
	else
	{ 
       
		key3_time=0;
		if(b_value3==1)
		{ 
       	tx_position=0;
			led1_time=20;
			tx_dataH=0xA5;
			tx_dataL=0x33;
 			tx_number=8;
		}
		b_value3=0;	
	}
}
/******************************************/
void	key4(void)
{ 
       
	if(b_key4==0)
	{ 
       
		sleep_time=0;		
	   if(key4_time<250)
			key4_time++;			
		if(key4_time==3)
			b_value4=1;					
	}
	else
	{ 
       
		key4_time=0;
		if(b_value4==1)
		{ 
       	tx_position=0;
			led1_time=20;
			tx_dataH=0xA5;
			tx_dataL=0x44;
 			tx_number=8;
		}
		b_value4=0;
	}
}
/******************************************/
void	key5(void)
{ 
       
	if(b_key5==0)
	{ 
       
		sleep_time=0;		
	   if(key5_time<250)
			key5_time++;			
		if(key5_time==3)
			b_value5=1;					
	}
	else
	{ 
       
		key5_time=0;
		if(b_value5==1)
		{ 
       	tx_position=0;
			led1_time=20;
			tx_dataH=0xA5;
			tx_dataL=0x55;
 			tx_number=8;
		}
		b_value5=0;	
	}
}
/******************************************/
void	pwmtx(void)
{ 
       
	if (pwma_loop > 0)
	{ 
       	sleep_time=0;			
		if (pwma_high > pwma_time)
				b_tx = 1;
			else
				b_tx = 0;
		if (pwma_time >=pwma_cycle)
		{ 
       
			pwma_time = 0;
			pwma_loop--;
		}
		else
			pwma_time++;			
	}
}
/******************************************/
void	led1(void)
{ 
       
	if(led1_time>0)
	{ 
       
		b_led1=1;
		led1_time--;
	}
	else
		b_led1=0;
}
/******************************************/
void  tx(void)
{ 
       
	if(tx_number>0 && pwma_loop==0 && tx_byte==0)
	{ 
       		
		pwma_time=0;
		if(tx_position==0)
		{ 
       
			pwma_high = 10;		
			pwma_cycle = 20;
			pwma_loop = 5;
		}
		if(tx_position==1)
		{ 
       	
			pwma_high = 10;
			pwma_cycle = 98;
			pwma_loop = 1;
		}
		if(tx_position==2)
		{ 
       
			tx_byte=8;
			tx_data=tx_dataH;
		}		
		if(tx_position==3)
		{ 
       
			tx_byte=8;
			tx_data=tx_dataL;
			tx_position=0;
			tx_number--;
			return;
		}		
		tx_position++;		
	}	
}
/******************************************/
void write_byte(void)
{ 
       	
	if (pwma_loop == 0 && tx_byte>0)
	{ 
       	pwma_time=0;
		pwma_cycle = 35;
		pwma_loop = 1;
		if (tx_data & 0x80)
			pwma_high = 26;				
		else
			pwma_high = 10;
		tx_data = tx_data << 1;		
		tx_byte--;
		}
	}

/******************************************/
void  off(void)
{ 
       
   	pwma_loop=0;
	pwma_time=0;
	pwma_high=0;
	pwma_cycle=0;
	tx_data=0;
	tx_dataH=0;
	tx_dataL=0;
 	tx_byte=0;
 	tx_number=0;
	tx_position=0;
    led1_time=0;        
    time=0;
	sleep_time=0;
	b_tx=0;
	b_led1=0;
}

/******************************************/
void sleep_enter(void)
{ 
       
	sleep_time++;
	if(sleep_time>20)
	{ 
       
		off();
		PCON=0;
		INTE=2;
		INTF=0;
		SLEEP();
		NOP();
		NOP();
		INTE=1;
		PCON=0x80;
		PCON1=0x81;	
	}
}
/******************************************/
void isr(void) __interrupt(0)
{ 
       
    if(INTF)
    { 
          
    	INTF=0;
    	TMR0=219;    	   	
    	time++;
    	write_byte();
    	tx();
       	pwmtx();
    }    
}
/******************************************/
void main(void)
{ 
       
    PORTA=0;
    IOSTA=0;      //IOPAx=0 时 ,PAx设为输出口。 
    PORTB=0;
    IOSTB=0x3b;      //IOPAx=0 时 ,PAx设为输出口。
    BPHCON=0xc4;  //PHPAx=1 时 ,关闭PBx上拉电阻。
    BWUCON=0x3b;  //唤醒控制寄存器WUPAx=1时,开启PAx唤醒功能 
    ABPLCON=0xFF; //PLPAx=1 时 ,关闭PAx下拉电阻 
    TMR0=162;
    T0MD=0;
    INTE=1;
    INTF=0;    
    PCON=0x80;
    PCON1=0x01;
    OSCCR=1;
    ENI();
    off();
 while(1)
 { 
       
    CLRWDT();
    if(time>199)
    { 
       
    	time=0;
    	key1();
    	key2();
    	key3();
    	key4();
    	key5();
		led1();
    	sleep_enter();
    }
 }
}
 

标签: bzw04p26抑制二极管bzw04p17抑制二极管bzw04p64抑制二极管bzw04p128抑制二极管bzw22二极管bzw04p16b抑制二极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台