コード例 #1
0
ファイル: test.c プロジェクト: hnulong/C51
void main()
{
	temp1=0xfe;
	temp2=0x7f;
	//间隔300ms先奇数亮再偶数亮,循环三次
	for(m=0;m<3;m++)
	{
		P1=0xAA;
		delay1();
		P1=0x55;
		delay1();
	}
	//一个灯上下循环三次
	for(m=0;m<3;m++)
	{
		for(n=0;n<8;n++)
		{
			P1=temp1;
			temp1= _crol_(temp1,1);
			delay1();
		}
		for(n=0;n<8;n++)
		{
			P1=temp2;
			temp2= _cror_(temp2,1);
			delay1();
		}
	}
	//两个分别从两边往中间流动三次,再从中间往两边流动三次
	for(m=0;m<3;m++)
	{
		for(n=0;n<4;n++)
		{
			P1=temp1&temp2;
			temp1= _crol_(temp1,1);
			temp2= _cror_(temp2,1);
			delay1();
		}
		for(n=0;n<4;n++)
		{
			P1=temp1&temp2;
			temp1= _crol_(temp1,1);
			temp2= _cror_(temp2,1);
			delay1();
		}
	}
	//8个全部闪烁3次
	for(m=0;m<3;m++)
	{
		P1=0x00;
		delay1();
		P1=0xff;
		delay1();
	}
	//关闭发光管
	P1=0xff;
	delay1();
}
コード例 #2
0
ファイル: IR-Remote.c プロジェクト: eastWillow/IR-Remote-Car
void IR_TR(unsigned char direction){
	unsigned char i=0;
	bit j;
	CCAP0L = 128;
	CCAP0H = 128;
	CR = 1;
	delay(16800);
	CR = 0;
	delay(8400);
	for(i=0;i<8;i++){
		j = (_cror_(direction,i)&0x01);
		if(j == 1){
			CR = 1;
			delay(1844);
			CR = 0;
			delay(500);
		}
		if(j == 0){
			CR = 1;
			delay(524);
			CR = 0;
			delay(500);
		}
	}
	CR = 1;
	delay(526);
	CR = 0;
	delay(20000);
	CCAP0L = 0;
	CCAP0H = 0;
}
コード例 #3
0
ファイル: 07.c プロジェクト: lulufei/STC89C52RC
void main (void)
{
	while(1)
	{
		aa=0xfe;
		// left flashing part
		for (i=0; i<7; i++)
		{
			P1=aa;
			beep=0;
			aa=_crol_(aa, 1);   // left LIB function
			delayms(100);
			P1=0xff;
			beep=1;
			delayms(200);
		}
		aa=0x7f;
		// right flashing part
		for (i=0; i<7; i++)
		{
			P1=aa;
			beep=0;
			aa=_cror_(aa, 1);
			delayms(100);
			P1=0xff;
			beep=1;
			delayms(200);
		}
	}
}
コード例 #4
0
ファイル: 流水灯1.c プロジェクト: sleepandeat/80S51
/*------------------------------------------------
                    主程序
------------------------------------------------*/
main()
{
 	LED=0XFE;
	Init_Timer0();
	while(1)
	{					 
		if(i==500)
		{			 
			if(KeyValue)
			{
				
					LED=_cror_(LED,1);									    
					i=0;
												   
			}
			else 
			{
				
				LED=_crol_(LED,1);
				
				i=0;
				 
			}
			
		}

			
	}
}		
コード例 #5
0
ファイル: yiwei.C プロジェクト: WilliamRen/hc6800e
void proc_key(unsigned char key_v)
{
	if((key_v & 0x01) == 0)
	{
		P2 = _cror_(P2,1);
	}
	else if((key_v & 0x02) == 0)
	{
		P2 = _crol_(P2, 1);
	}
}
コード例 #6
0
ファイル: 1.c プロジェクト: JasonQKidd/monovisionrobot
/********************************************************************
* 名称 : Main()
* 功能 : 实现灯的闪烁
* 输入 : 无
* 输出 : 无
* 说明 :也可以使用例1的的方法来关闭数码管
***********************************************************************/
void Main(void)
{
	uchar i;
	P2 = 0x00;
	while(1)
	{
		P0 = 0x7f;					//P0.7亮亮
		for(i=0; i<7; i++)			//移位7次
		{
			P0 = _cror_(P0, 1);		//_crol_()这个函数在intrins.h中定义了,用于循环右移
			Delay(15);
		}
		P0 = 0xfe;
		for(i=0; i<7; i++)
		{
			P0 = _crol_(P0, 1);	    //用于循环左移
			Delay(15);
		}

	}
}
コード例 #7
0
ファイル: led.c プロジェクト: smhuang426/Keil
void flow(int t,unsigned char way)
{
	unsigned char temp,i;
	if(way==1)
	{
		temp=0xfe;
		for(i=0;i<8;i++)
		{
			P2=temp;
			temp=_crol_(temp,1);
			delay(t);
		}
	}
	if(way==2)
	{
		temp=0x7f;
		for(i=0;i<8;i++)
		{
			P2=temp;
			temp=_cror_(temp,1);
			delay(t);
		}
	}
}
コード例 #8
0
ファイル: 8WMB.c プロジェクト: anan-cn/MCU
void timer0() interrupt 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
//				选通P2.0口数码管
// dis_buf   --- 显于缓冲区基地址	
{
	TH0 = 0xFC;
	TL0 = 0x17;
	
	P2 = 0xff;							// 先关闭所有数码管
	P0 = dis_buf[dis_index];			// 显示代码传送到P0口
	P2 = dis_digit;						// 

	dis_digit = _cror_(dis_digit,1);	// 位选通值右移(P30<-P37), 下次中断时选通下一位数码管
	dis_index++;						// 
					
	dis_index &= 0x07;			// 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
}

void timer1() interrupt 3
//
{	
	unsigned char i;
	TH1 |= 0xdc;
	for(i = 0; i < 8; i++)
	{
		sec_bcd[i]++;			// 低位加1
		if(sec_bcd[i] < 10)		// 如果低位满10则向高位进1
			break;			// 低位未满10