51 단편기 싱크로나이즈드 램프 프로그램

11108 단어
/**T0 타이머를 사용하여 시간을 지연시킵니다. 매번 시간을 1ms LED 소등불의 깜박임이 500ms LED로 변하는 양식은 3가지가 있습니다. 첫째, 오른쪽에서 왼쪽으로, 왼쪽에서 오른쪽으로, 둘째, 가장자리에서 가운데로 모으기 3, 오른쪽에서 차례대로 켜기, 왼쪽에서 차례대로 끄기 **/
#include 
#include 

#define uchar unsigned char
#define uint unsigned int

/**   **/
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

/**             **/
void timerDelay(){
	uint count =0;
	while (1)
	{
		if (TF0 == 1 )
		{
			/* code */
			TF0 =0;//         
			TH0 = 0xFC;
			TL0 = 0x67;
			count++;
			if (count == 500)
			{
				/* code */
				count = 0;
				break;
			}
			
		}
		
	}
	

}


/**   **/
void main()
{
	
	uchar index = 0;//  
	uchar initData = 0x00;
	//  U3
	ADDR0 = 0;
	ADDR1 = 1;
	ADDR2 = 1;
	ADDR3 = 1;
	ENLED = 0;

	//        
	TMOD = TMOD | 0x01;
	TH0 = 0xFC;
	TL0 = 0x67;
	TR0 = 1;
	while(1){
		
		//  1
		for (index; index > 7; index++)
		{
			P0 = ~(0x01 << index);
			timerDelay();
		}
		for (index; index > 0; index--)
		{
			P0 = ~(0x01 << index);
			timerDelay();
		}

		//   
		for(index = 0;index < 7;index++){
			P0 = (0xFF & ~(0x01 << index)) & (0xFF & ~(0x80 >> index));
			timerDelay();

		//   
		for(index = 0;index < 8;index++){
			P0 = ~(initData += 0x01 << index);
			timerDelay();
		}
		for(;index > 0;index--){
			P0 = ~(initData -= 0x01 << index);
			timerDelay();
		}
	}
}
}

좋은 웹페이지 즐겨찾기