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

📄 main.c

📁 MCS-51的一个小型操作系统,在KeilC中大模式下编译工作
💻 C
字号:
//---------------------------------------------------------------------------
/********************************************
        嵌入式系统 小型操作系统
		 作者:汪普宏
	    制作日期:2006.9
*********************************************/ 
//---------------------------------------------------------------------------

#include "os.h" 
#include"intrins.h" 
 //--------------------------------------------------------------------------
// Initialize the memory management routines
// Initialize variables declared in main
//--------------------------------------------------------------------------



void PORT_Init (void)
{
   XBR0    = 0x07;                     // Enable SMBus, SPI0, and UART0
   XBR1    = 0x00;
   XBR2    = 0x44;                     // Enable crossbar and weak pull-ups
   EMI0TC  = 0x21;
   P74OUT  = 0xFF;
   P0MDOUT = 0x15;
}

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.)
}
 
void Timer0_Init (void)
{
   	CKCON|=0x0;
   	TMOD|=0x11;    	//16Bit
   	TR0 =TR1= 0;                         	// STOP Timer0
   	TH1 = (-SYSCLK*SYTIMEISR/12000) >> 8;    		// set Timer0 to overflow in 1ms
   	TL1 = -SYSCLK*SYTIMEISR/12000;
   	//TR0 = 1;   	// START Timer0
   	IE|= 0x2; 
}

void SYSCLK_Init (void)
{
   uchar i;                              // delay counter
   OSCXCN = 0x67;                      // start external oscillator with
                                       // 18.432MHz crystal
   for (i=0; i < 255; 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
//	OSCICN = 0x07;   //interal 16MHZ
}
   
/*通过SPI发送一字节*/
#define CHIP595_SELECT 		P5 &= ~(0x10); 			// P54 
#define CHIP_NOSELECT 		P5 |= 0xf8; 			// P53-57 
extern void OSStart(void);
void main (void)
{   
    WDTCN = 0xDE;                       // Disable watchdog timer
	WDTCN = 0xAD;
    EMI0CF =0x24;						// share low 4K XRAM
	SYSCLK_Init ();                     // initialize oscillator
	Timer0_Init();
	PORT_Init ();                       // initialize crossbar and GPIO
	SPI0_Init ();                       // initialize SPI0
	EA=TR0=ET0=TR1=ET1=0;
    OSStart();
	_nop_();
}

⌨️ 快捷键说明

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