?? 6b595spi.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 <c8051f040.h>
#include <intrins.h>
sbit MOSI = P0^4; //define the data pin
sbit SCK = P0^2; //define the clock pin
#define SETSPICS1 P5 |= 0x10 //P5.7 connect to the RCK
#define CLRSPICS1 P5 &= ~(0x10)
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 ;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // 等待晶振穩定加的延時
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
}
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;
SFRPAGE = CONFIG_PAGE;
WDTCN = 0xde;
WDTCN = 0xad; //關看門狗
SYSCLK_Init (); //初始化時鐘
SFRPAGE = CONFIG_PAGE;
XBR0 = 0x06; // Enable SMBus, SPI0, and UART0
XBR1 = 0x00;
XBR2 =0x40;
P0MDOUT = 0x15;
P5MDOUT = 0xF0;
SFRPAGE =SPI0_PAGE;
SPI0CFG = 0x40;
SPI0CN = 0x01;
SPI0CKR = 0x6D;
while(1)
{
delay(50000);
SFRPAGE =SPI0_PAGE;
SPI0DAT=0X01;
while(!SPIF)
{ ; }
SFRPAGE =SPI0_PAGE;
SPIF=0;
SFRPAGE = CONFIG_PAGE;
CLRSPICS1;
SETSPICS1;
delay(50000);
SFRPAGE =SPI0_PAGE;
SPI0DAT=0x02;
while(!SPIF)
{ ; }
SPIF=0;
SFRPAGE =CONFIG_PAGE;
CLRSPICS1;
SETSPICS1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -