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

📄 main1.c

📁 很有用的CYGNAL C语言程序,
💻 C
字号:
#include <c8051f020.h> 
#include <intrins.h> 
//-----------------------------------------------------------------------------------


//----------------------------------------------------------------------------------
void SYSCLK_Init (void)
{
   int i;                              // delay counter
   OSCXCN = 0x67;                      // start external oscillator with
                                       // 18.432MHz crystal
   for (i=0; i < 256; i++) ;           // Wait for osc. to start up
   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
   OSCICN = 0x88;                      // select external oscillator as SYSCLK
                                       // source and enable missing clock
                                       // detector

}
//------------------------------------------------------------------------------------
void PORT_Init (void)
{
   
    XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
    P0MDOUT=0xff;
	P1MDOUT=0xff;
	P2MDOUT=0xff;
	P3MDOUT=0xff;
}//------------------------------------------------------------------------------------
void SPI0_Init (void)
{
   SPI0CFG = 0x07;                     // data sampled on 1st SCK rising edge
                                       // 8-bit data words
   SPI0CFG|=0xC0;	//CKPOL =1;

   SPI0CN = 0x03;                      // Master mode; SPI enabled; flags
                                       // cleared
   SPI0CKR = SYSCLK/2/8000000-1;       // SPI clock <= 8MHz (limited by 
                                       // EEPROM spec.)
}


//------------------------------------------------------------------------------------

unsigned char Count1ms;
void Timer0_Init (void)
{
   	CKCON|=0x8;
   	TMOD|=0x1;    	//16Bit
	Count1ms=10;
   	TR0 = 0;                         	// STOP Timer0
   	TH0 = (-SYSCLK/1000) >> 8;    		// set Timer0 to overflow in 1ms
   	TL0 = -SYSCLK/1000;
   	TR0 = 1;   	// START Timer0
   	IE|= 0x2; 
}
//------------------------------------------------------------------------------------
void Timer0_ISR (void) interrupt 1  //1ms
{
	TH0 = (-SYSCLK/1000) >> 8;  
   	TL0 = -SYSCLK/1000;
	if (Count1ms) Count1ms--;
}
//-------------------------------------------------------------------------------------
void Delay1ms(unsigned char T)
{
	Count1ms=T;
	while (Count1ms);
}

void Delay1s(unsigned char T)
{
	while (T)
	{
		Delay1ms(200);
		Delay1ms(200);
		Delay1ms(200);
		Delay1ms(200);
		Delay1ms(200);
		T--;
	}
}
//---------------------------------------------------------------------------------------


extern void senddata(unsigned char ad,unsigned char d);
extern   void delay(long int );
extern void init_led();


//--------------------------------------------------------------------------------------








//------------------------------------------------------------------------------------
void main (void) 
{
    unsigned int w,m;
    unsigned char i,j,k,l;
    EA=0;
	WDTCN = 0xde;
	WDTCN = 0xad;           //关看门狗
    EA=1;
    SYSCLK_Init ();         //初始化时钟
    Timer0_Init();			//初始化定时器
    PORT_Init ();           //初始化IO口
	SPI0_Init ();           //初始化SPI0
    init_led();

     
   w= GetTempValue();
     
	for (;;)

   
	 {
       
       Delay1ms(250);
       Delay1ms(250);
       Delay1ms(250);
                            //延时务必要长;小于1/2不行
	   m=w>>4;
	   i=(m%1000)/100;
	   i=i&~(0x80);
       j=(m%100)/10;
	   k=m%10;
	   k=0x80+k;
       l=(w%16)*5/8;
       if(i)
       senddata(4,i);
	   if(i||j)
       senddata(3,j);

       senddata(2,k);
       senddata(1,l);
       w= GetTempValue();
	}

}

⌨️ 快捷键说明

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