?? main.c
字號:
/*-----------------------------------------------------------
芯片 :STC12C5A60S2
晶振 :11.0592MHZ
開發平臺:KEIL
功能 :向SD卡讀寫一個扇區,如果成功則激活P0口流水燈,如果失敗則無流水燈。并且隨程序運行向串口發送運行狀態。
波特率 :9600BPS
日期 :11.5.19
其他 :本程序軟件模擬SPI,隨后我會改為硬件SPI
注意 :下載完程序后請復位系統后運行!(切記!!)
-------------------------------------------------------------*/
#include "STC12C5A60S2.h"
#include "uart.h"
#include "sd.h"
#define uchar unsigned char
#define uint unsigned int
uchar xdata tab[512]; //定義外部ROM,512個字節,數據緩沖區(一個扇區必須寫512字節 )
void delay5ms()
{
uchar a,b;
for(b=19;b>0;b--)
for(a=130;a>0;a--);
}
void delay500ms()
{
uchar a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
void main()
{
int i;
uchar flag=0;
init(); //初始化串口
txd_s("串口初始化\n");
SD_Reset(); //復位SD卡
txd_s("SD卡復位完\n");
SD_Init(); //初始化SD卡
txd_s("SD卡初始化完\n");
for(i=0;i<512;i++)
tab[i]=i; //向數據緩沖區中寫入0~255 0~255,共512個字節
txd_s("緩沖區寫完\n");
SD_Write_Sector(20,tab); //將數據緩沖區中的512個字節的數據寫入SD卡的第20扇區中
delay5ms();
txd_s("扇區寫完\n");
for(i=0;i<512;i++) //清空數據緩沖區
tab[i]=0;
txd_s("清緩沖區\n");
SD_Read_Sector(20,tab); //從SD卡的第20扇區中讀取512個字節的數據到數據緩沖區
txd_s("讀扇區完\n");
for(i=0;i<512;i++)
if(((uchar)i)!=tab[i]) //對讀出的數據進行匹配,如果不吻合則flag=1,否則flag=0
{
flag=1;
break;
}
delay5ms();
txd_s("匹配完畢\n");
if(flag==0) {
delay5ms();
txd_s("匹配對 \n");
P0=0xfe;
while(1) {
P0=P0>>1|P0<<7;
delay500ms(); }
}
else {
delay5ms();
txd_s("匹配錯 \n"); }
while(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -