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

📄 dogdianji.c

📁 有Proteus 7.1电路与LED倒计时C51程序,可以软件仿真C51的程序状态.
💻 C
字号:

/**************************************************
    月亮
	QQ:228939191
	yueliangliang@21cn.com
**************************************************/
#include <AT89X52.H>
#include <0708.H>		 
#define TIMER0_COUNT 0xDC11      	
static unsigned timer0_tick;
unsigned int		deda;		 
unsigned int  		deda1;
#define  scl P3_5   
#define  sda P3_7   
unsigned int   	PANMOSHI0=0	; 	 
unsigned int   	PANMOSHI1=0	; 	 
unsigned int   	PANMOSHI2=0	; 	 
unsigned int   	PANMOSHI3=0	; 	 
unsigned int   	PANMOSHI4=0	; 	 
unsigned int   	PANMOSHI5=0	; 	 
unsigned int   	PANMOSHI6=0	; 	 
unsigned int   	PANMOSHI7=0	;  
unsigned int   	PANMOSHI8=0	; 	 
unsigned int   	PANMOSHI9=0	;
 
unsigned int   	PanTime  =1234	;
unsigned char  	PanMoShi =0	; 

//unsigned char   XIANSHI_Buf[5]; 
//unsigned char   seven_seg[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};		 //阳
unsigned char   seven_seg[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};		//阴
unsigned char   WeiX[5]={0X00,0X01,0X02,0X03,0X04};
//unsigned char   WeiX[5]={0XFF,0X06,0X05,0X03,0X04};
unsigned char   XiSh_Buf[6];
bit 	M0=1;     	 
bit  	M1=1 ; 	 
bit 	M2=1;     	 
bit 	M3=1;     	 
bit 	M4=1;      
bit 	M5=1;
bit   	ST0=1;	 	  
bit   	ST1=1;		 
bit   	ST2=1;	 	 
bit   	ST3=1;  	  
bit   	ST4=1;	 	   
bit   	ST5=1;  	  
bit   	ST6=1;  	 
bit   	ST7=1;	 	  
bit   	ST8=1;  	 
bit   	ST9=1;   

bit   	STi0=1;	 
bit   	STi1=1;		 
bit   	STi2=1;		 
bit   	STi3=1;		 
bit   	STi4=1;		 
bit   	STi5=1;		 
bit   	STi6=1;		 
bit   	STi7=1;		 
bit   	STi8=1;		 
bit   	STi9=1;		 

unsigned int		ST0p=0;		 
unsigned int		ST1p=0;		 
unsigned int		ST2p=0;		 
unsigned int		ST3p=0;		 
unsigned int		ST4p=0;		 
unsigned int		ST5p=0;		 
unsigned int		ST6p=0;		 
unsigned int		ST7p=0;		 
unsigned int		ST8p=0;		 
unsigned int		ST9p=0;	

	 
void Delayled(unsigned int d)
 {
	unsigned int i,j;
	for(i=0;i<d;i++)
   for(j=0;j<10;j++); 
}
/*****************************/
void initFlag(void)
{
	P0 = 0xFF;		 
  	P2 = 0xFF;			 
  	P1 = 0xFF;			 
  	P3 = 0xFF;			 
} 
/******************************************************************/
void initTimer (void)
{
 	timer0_tick=0;
	EA=0; 
 	TMOD=0x11;
	TH0=-9460/256;
	TL0=-9460%256;         
	TH1=-9460/256;
	TL1=-9460%256;         //初始化计数器初值
 	PT0=1;
	TR0=1;
	ET0=1;
 	TR1=1;
 	ET1=1;
    EA =1;
 	WDTRST=0x1E;
  	WDTRST=0xE1;
}	
/*********************定时器0中断服务程序*/
void timer0 (void) interrupt 1
{	 
//	unsigned int i;
	TR0=0;
    TH0=-9460/256;
	TL0=-9460%256;         	
    TR0=1;
    deda++;	
 	WDTRST=0x1E;
  	WDTRST=0xE1;
}
/******************************************/
/***********************/
/*****************************************/
void timer1(void) interrupt 3
{
unsigned int  
	TR1=0;    
	TH1=-9460/256;
	TL1=-9460%256;         	
    TR1=1;
	deda1++;      			 
	if(deda1==100)      			
	 { 
	 //	Y1 = !Y1;
 	
		deda1 =0;      			
		//******************************************************
     	if( ST0==0){      				
			if(ST0p>0)ST0p--;
			PanTime  = ST0p;
			PanMoShi = 0X01;		         	
			if(ST0p == 0)
			{      		
            	STi0 = 0;       			 
    		  	ST0  = 1;         
				ST0p =PANMOSHI0;
				Y0   = 1;
				ST1  = 0;
				}} 				 			 	
		//******************************************************
     	if(ST1==0){					
			if(ST1p>0)ST1p--;
			PanTime  = ST1p;
			PanMoShi =0X02;		         	
		 	if(ST1p == 0)
			{							
            	STi1 = 0;      		 
		       	ST1  = 1;
				ST1p = PANMOSHI1;
				Y0   =0;
				ST2  = 0;
				}}			  
		// ******************************************************
     	if(ST2==0){					 
			if(ST2p>0)ST2p--;
			PanTime=ST2p;
			PanMoShi =0X03;					         		 
		 	if(ST2p == 0)
			{				 		
            	STi2 = 0;      				  
		       	ST2  = 1;
				ST2p = PANMOSHI2;
				Y0   =0X01;
				ST3  = 0;
				}}				 
		// ******************************************************
     	if(ST3==0){				 
			if(ST3p>0)ST3p--;
			PanTime=ST3p;
			PanMoShi =0X04;		         	 
		 	if(ST3p == 0)
			{					 	
            	STi3 = 0;      			 
		      	ST3  = 1;
				ST3p = PANMOSHI3;
				Y0   = 0;
				ST4  = 0;
				}}		     

		// ******************************************************
     	if(ST4==0){				 
			if(ST4p>0)ST4p--;
			PanTime=ST4p;
			PanMoShi =0X05;		         	 
		 	if(ST4p == 0)
			{			 		
            	STi4 = 0;      			 
		       	ST4  = 1;
				ST4p = PANMOSHI4;
				Y0   = 1;
				ST5  = 0;
				}}			  
		//******************************************************
     	if(ST5==0){						 
	  		if(ST5p>0)ST5p--;
			PanTime=ST5p;
			PanMoShi =0X06;		         		 
		 	if(ST5p == 0)
			{			 	
            	STi5 = 0;      				  
		       	ST5  = 1;
				ST5p = PANMOSHI5;
				Y0   = 0;
				ST6  = 0;
				}}				 
		//******************************************************
     	if(ST6==0){				 
			if(ST6p>0)ST6p--;
			PanTime=ST6p;
			PanMoShi =0X07;		         		 
		 	if(ST6p == 0)
			{			 	
            	STi6 = 0;      		
		      	ST6  = 1;
				ST6p = PANMOSHI6;
				Y0   = 1;
				ST7  = 0;
				}}		   	 
	   	// ******************************************************
		if(ST7==0){					 
			if(ST7p>0)ST7p--;
			PanTime=ST7p;
			PanMoShi =0X08;		         	 
		 	if(ST7p == 0)
			{			 		
            	STi7 = 0;      			  
		      	ST7  = 1;
				ST7p = PANMOSHI7;
				Y0   = 0;
				ST8  = 0;
				}}		   	 
		// ******************************************************
		if(ST8==0){				 
	   		if(ST8p>0)ST8p--;
			PanTime=ST8p;
			PanMoShi =0X09;		         		 
		 	if(ST8p == 0)
			{			 	
            	STi8 = 0;      		 
		      	ST8  = 1;
				ST8p = PANMOSHI8;
				Y0   = 1;
				ST9  = 0;
				ST1  = 0;				
				}}		   				 
//		// ******************************************************
//		if(ST9==0){				 
//			if(ST9p>0)ST9p--;
//		    PanTime=ST9p; 
//			PanMoShi = 10;    		 
//		 	if(ST9p == 0)
//			{					 	
//            	STi9 = 0;      		 
//		      	ST9  = 1;
//				ST9p = PANMOSHI9;
//				Y0   = 0;
//								
//				}}
	}		   			 	
}
/************************************************************/
/*********时间状态选择程序1***********************************/
/*********(设定值0~65535)**********************************/
void XUANZHE1 (void)  
{ 	   
  	if(!X0 && X1 &&  X2 && M0==1)	 //X0
		{
		 	PANMOSHI0=ST0p=10;	//设定第一段时间
		 	PANMOSHI1=ST1p=20;		//设定第二段时间
		 	PANMOSHI2=ST2p=30;	//设定第三段时间		
		 	PANMOSHI3=ST3p=0;		//设定第一段时间
		 	PANMOSHI4=ST4p=0;		//设定第四段时间
		 	PANMOSHI5=ST5p=0;	    //设定第五段时间
		 	PANMOSHI6=ST6p=0;		//设定第六段时间
			PANMOSHI7=ST7p=0;		//设定第七段时间
		 	PANMOSHI8=ST8p=0;		//设定第九段时间
			PANMOSHI9=ST9p=0;	    //设定第十段时间
			ST0=0;
			Y0 = 0;
			M0 = 0;
			M1 = 1;
			M2 = 1;
		}
	if( X0 && !X1 && X2 && M1==1 )	//X1
		{
		
			PANMOSHI0=ST0p=20;	//设定第一段时间
		 	PANMOSHI1=ST1p=10;		//设定第二段时间
		 	PANMOSHI2=ST2p=20;	//设定第三段时间		
		 	PANMOSHI3=ST3p=0;		//设定第一段时间
		 	PANMOSHI4=ST4p=0;		//设定第四段时间
		 	PANMOSHI5=ST5p=0;	    //设定第五段时间
		 	PANMOSHI6=ST6p=0;		//设定第六段时间
			PANMOSHI7=ST7p=0;		//设定第七段时间
		 	PANMOSHI8=ST8p=0;		//设定第九段时间
			PANMOSHI9=ST9p=0;	    //设定第十段时间
			ST0=0;
			Y0=0;
			M0=1;
			M1=0;
			M2=1;
		}
	if( X0 && X1 && !X2&& M2==1 )	//X2
		{
			PANMOSHI0 =ST0p =10;	//设定第一段时间
		 	PANMOSHI1=ST1p=5;		//设定第二段时间
		 	PANMOSHI2=ST2p=10;	//设定第三段时间		
		 	PANMOSHI3=ST3p=0;		//设定第一段时间
		 	PANMOSHI4=ST4p=0;		//设定第四段时间
		 	PANMOSHI5=ST5p=0;	    //设定第五段时间
		 	PANMOSHI6=ST6p=0;		//设定第六段时间
			PANMOSHI7=ST7p=0;		//设定第七段时间
		 	PANMOSHI8=ST8p=0;		//设定第九段时间
			PANMOSHI9=ST9p=0;	    //设定第十段时间
			ST0=0;
			Y0=0;
			M0=1;
			M1=1;
			M2=0;
		}		 
}
/************************************************************/
void Disply (void) 
{  

 		XiSh_Buf[0]= (PanTime/1000)%10; 
 		XiSh_Buf[1]= (PanTime/100)%10;
 		XiSh_Buf[2]= (PanTime/10)%10;		
 		XiSh_Buf[3]= (PanTime%10);
		
 		XiSh_Buf[4]= (PanMoShi/10)%10;
		XiSh_Buf[5]= (PanMoShi%10);		

}
/******************************************************************/ 
/*********************** *************************************/
/******************************************************************/
void MAIN (void)
{ 
     
	initFlag ();	     				 //端口初始化
	initTimer(); 						 //定时器初始化		  									 
	while(1)						     //循环
		{
			Disply();
 	 		XUANZHE1(); 				 //时间选择程序
	      	P3_2 = 1;
			P3_1 = 1;
			P3_0 = 1;  
			P1 = (seven_seg[XiSh_Buf[5]])| 0X80;
			P3_2 = 0;
			P3_1 = 0;
			P3_0 = 0;
			Delayled(50);

//			P3_2 = 1;
//			P3_1 = 1;
//			P3_0 = 1;  
//			P1 = (seven_seg[XiSh_Buf[4]])| 0X80;
//			P3_2 = 0;
//			P3_1 = 0;
//			P3_0 = 1;
//			Delayled(50);


			P3_2 = 1;
			P3_1 = 1;
			P3_0 = 1;  
			P1 = (seven_seg[XiSh_Buf[0]])| 0X80;
			P3_2 = 0;
			P3_1 = 1;
			P3_0 = 0;
			Delayled(50);

			P3_2 = 1;
			P3_1 = 1;
			P3_0 = 1;  
			P1 = (seven_seg[XiSh_Buf[1]])| 0X80;
			P3_2 = 0;
			P3_1 = 1;
			P3_0 = 1;
			Delayled(50);

			P3_2 = 1;
			P3_1 = 1;
			P3_0 = 1;  
			P1 = (seven_seg[XiSh_Buf[2]])| 0X80;
			P3_2 = 1;
			P3_1 = 0;
			P3_0 = 0;
			Delayled(50);

			P3_2 = 1;
			P3_1 = 1;
			P3_0 = 1;  
			P1 = (seven_seg[XiSh_Buf[3]])| 0X80;
			P3_2 = 1;
			P3_1 = 0;
			P3_0 = 1;
			Delayled(20);

	}				 	
}
/*******************END MAIN******************************************/

⌨️ 快捷键说明

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