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

📄 74hc165.c

📁 6B59574HC165 AT45DB081 IS62LV1024 SP3530 软件串口程序 以太网测控资料
💻 C
字号:
//------------------------------------------------------------------------------------
// hw6b595.c
//------------------------------------------------------------------------------------
// Copyright 2003 NCD.Ltd.
//
// AUTH: Jhonsun
// DATE: 8 Apr 03
//
// This program flashes the green LED and the red LED on the C8051F020 test board .
// Target: C8051F02x
//
// Tool chain: KEIL Eval 'c'
//

//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------

#include <c8051f020.h>
#include <intrins.h>
sbit MOSI = P0^4;      //define the data pin                
sbit SCK = P0^2;       //define the clock pin
bit LED1input;
bit LED2input;
#define SETSPICS1       P5 |= 0x10		//P5.7 connect to the RCK
#define CLRSPICS1   	P5 &= ~(0x10)
#define SETSPICS2       P5 |= 0x20
#define CLRSPICS2       P5 &= ~(0x20)
void delay(unsigned int t)
{
  unsigned int i,j;   //delay counter
  for(i=0;i<t;i++)
    for(j=0;j<10;j++)
	  {
	    _nop_();
       }
}

void SYSCLK_Init (void)
{
   int i;                              // delay counter
   OSCXCN = 0x67;                      // start external oscillator with
                                       // 11.0592MHz 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 ScanInput(void)
{
  unsigned char input1,input2;
  CLRSPICS2;
  delay(10);
  SETSPICS2;
  SPI0DAT=0x00;
  while(!SPIF)
  {;}
  SPIF=0;
  input1=SPI0DAT;
  SPI0DAT=0x00;
  while(!SPIF)
  {;}
  SPIF=0;
  input2=SPI0DAT;
  if(input1==0x01)
  LED1input=1;
  if(input2==0x01)
  LED2input=1;
  while(input1|input2)
  {
   CLRSPICS2;
   delay(10);
   SETSPICS2;
   SPI0DAT=0x00;
   while(!SPIF)
   {;}
   SPIF=0;
   input1=SPI0DAT;
   SPI0DAT=0x00;
   while(!SPIF)
   {;}
   SPIF=0;
   input2=SPI0DAT;
   }
   }


main()
{
  /* unsigned int  LED[]={0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000};
 	unsigned int i;  */
	unsigned int i;
	unsigned char LED1,LED2;
	WDTCN = 0xde;
	WDTCN = 0xad;           //关看门狗
//	SYSCLK_Init ();         //初始化时钟
    OSCICN=0x07;
	for(i=0;i<256;i++);
	while(!(OSCICN&0x10));
	OSCICN|=0x80;
	XBR0    = 0x06;                     // Enable SMBus, SPI0, and UART0
    XBR1    = 0x00;
    XBR2    =0x40;
	P0MDOUT = 0x15;
	P74OUT  = 0x08;
    SPI0CN = 0x03;	// SPI Control Register
	SPI0CFG = 0x07;
	SPI0CKR = 0x66;
	LED1=0x01;
	LED2=0x02;
	  while(1)
	    {
		  ScanInput();
		  if(LED1input==1)
		  {
		    LED1input=0;
			CLRSPICS1;
			SPI0DAT=(~LED1)&&0x01;
			while(!SPIF)
			{;}
			SPIF=0;
			SETSPICS1;
		   }
		  if(LED2input==1)
		  {
		    LED2input=0;
			CLRSPICS1;
			SPI0DAT=(~LED2)&&0x02;
			while(!SPIF)
			{;}
			SPIF=0;
			SETSPICS1;
		   }

		  		 }

}
   
 

⌨️ 快捷键说明

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