?? ml-330.c
字號:
#include "c8051f330.h"
#include "uart.h"
//#include "ml-330.h"
char ch,rxch;
unsigned Count1,Count2;
char Bufferdata[50];
void DelayMs(unsigned int n)//延時(n)MS
{
unsigned int i;
for(;n>0;n--)
{
for(i=2211;i>0;i--);
}
}
void SysClkInit(void)//配置系統時鐘
{
OSCICN |= 0x83;
OSCICL = 0x00;//設置片內振蕩器為22.1184MHZ
}
void WatchDogInit(void)//系統配置
{
PCA0MD&=~0x40;//禁止看門狗定時器
EA=0;
}
//SPIO增強型串行外設
void Spio(void)
{
//從配置
SPI0CFG = 0x10;
SPIEN = 0x01;//Enable the SPIO
NSSMD0 = 0x00;
NSSMD1 = 0x00; // 選擇4線主方式
//主配置
/* SPI0CFG = 0x70;
SPIEN = 0x01;//Enable the SPIO
NSSMD0 = 0x01;
NSSMD1 = 0x01; // 選擇傳輸方式為3線主方式
// SPI0CFG &=~ 0x20;
SPI0CKR = 0x31;//Fck = SYSCL*/
}
void PortInit(void)//端口配置
{
//P0MDIN = 0x05;//配置輸出方式
//P0 = 0xFF;
P0MDOUT= 0xFA;
//P0SKIP = 0x00;
XBR0 = 0x03;//設置交叉開關 打開spio和uart0端口引腳
XBR1 = 0x40;
}
void SystemInit(void)
{
WatchDogInit();//系統配置
SysClkInit();//配置系統時鐘
PortInit();//端口配置
Uart0_Init(115200);//串口配置
Spio();
} //Count1 = 0;
void main ()
{
unsigned char BufLen;
unsigned char buf[20];
SystemInit();
IE = 0xD0; //打開中斷uart和spi0中斷
while(1)
{
/*if(0)
{
DelayMs(2);
SPI0DAT = 0x05;
SPIEN = 0x00;
SPIEN = 0x01;
} */
BufLen = UART_Read(0,buf);
if (BufLen > 0)
{
UART_Send(0,buf,BufLen);
}
}
}
void SPI0_ISR (void) interrupt 6 using 1
{
if(SPIF == 0x01) // 數據傳輸完畢
{
SPIF =0x00;
rxch = SPI0DAT;
SPI0DAT = 0x00;
if (Count1 == 50)
{
Count1 = 0;
}
Bufferdata[Count1] = rxch;
Count1 ++;
// SPI0DAT = 0x05;
}
if(WCOL == 0x01) //數據傳輸期間執行寫操作 將被忽略
{
//SPIEN = 0x00;
WCOL =0x00;
//SPIEN = 0x00;
}
if(MODF == 0x01)//方式錯誤標志
{
MODF = 0x00;
//SPI0CFG |= 0x40;//MSTEN = 0x00;
//SPIEN = 0X00;
}
if(RXOVRN == 0x01) //接受溢出標志
{
RXOVRN = 0x00;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -