久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
單片機(jī)串口顯示來自SD卡的數(shù)據(jù)源程序
[打印本頁]
作者:
hongniu
時(shí)間:
2015-6-23 16:56
標(biāo)題:
單片機(jī)串口顯示來自SD卡的數(shù)據(jù)源程序
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit p1_7=P1^7;
sbit CS=P2^0; //片選信號(低電平有效)
sbit DATEIN =P2^1;//主-從數(shù)據(jù)輸入
sbit SCLK=P2^2;//時(shí)鐘信號
sbit DATEOUT=P2^3;//從-主數(shù)據(jù)輸出
uint btime;
uchar c;
unsigned char bdata dat;
sbit dat_0=dat^0;
sbit dat_1=dat^1;
sbit dat_2=dat^2;
sbit dat_3=dat^3;
sbit dat_4=dat^4;
sbit dat_5=dat^5;
sbit dat_6=dat^6;
sbit dat_7=dat^7;
bit is_init;//決定是否延時(shí);
uchar lpp;
unsigned char fhz;//返回值
uchar fhz_buff; //讀返回值中間量
unsigned char xdata tab[512];
void delay(uint time)
{ while(time)
time--;
}
//**********************************************
/*讀sd卡子程序,無返回值,有參函數(shù),參數(shù)為要寫入DATEIN數(shù)據(jù)線的字節(jié)*/
void write(unsigned char wr_)// 寫入一個(gè)字節(jié)SD卡
{
dat=wr_;
DATEIN=dat_7;
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
DATEIN=dat_6;
SCLK=0;
if(!is_init)delay(2);
if(is_init)delay(200);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
DATEIN=dat_5;
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
DATEIN=dat_4;
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
DATEIN=dat_3;
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
DATEIN=dat_2;
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
DATEIN=dat_1;
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
DATEIN=dat_0;
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=1;
if(is_init) delay(200);
if(!is_init)delay(2);
}
unsigned char read()// 讀取一個(gè)字節(jié)SD卡
{
DATEOUT=1;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_7=DATEOUT;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_6=DATEOUT;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_5=DATEOUT;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_4=DATEOUT;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_3=DATEOUT;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_2=DATEOUT;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_1=DATEOUT;
SCLK=1;
if(is_init)delay(200);
if(!is_init)delay(2);
SCLK=0;
if(is_init)delay(200);
if(!is_init)delay(2);
dat_0=DATEOUT;
return (dat);
}
void restsd()//復(fù)位SD卡
{ uchar i;
uchar pcmd[6]={0x40,0x00,0x00,0x00,0x00,0x95};
is_init=1;
CS=1;
for(i=0;i<15;i++)
{
//120時(shí)鐘
write(0xff);
}
CS=1;
write(0xff);//據(jù)說是提高兼容性
CS=0;//片選開
write( pcmd[0]);
write( pcmd[1]);
write( pcmd[2]);
write( pcmd[3]);
write( pcmd[4]);
write( pcmd[5]);
fhz=read();
for(;;)
{
fhz=read();
if(fhz==0x01)break;
}
CS=1;
write(0xff);
}
void initsd()//初始化
{
//
uchar pcmd[6]={0x41,0x00,0x00,0x00,0x00,0xff};//
//
CS=1;
write(0xff);//據(jù)說是提高兼容性
CS=0;//片選開
write( pcmd[0]);
write( pcmd[1]);
write( pcmd[2]);
write( pcmd[3]);
write( pcmd[4]);
write( pcmd[5]);
fhz=read();
for(;;)
{
fhz=read();
if(fhz==0x00)break;
}
CS=1;
write(0xff);
}
void readsd(unsigned long addstart)//讀SD卡物理扇區(qū)
{ unsigned long sdbuff1,sdbuff2,sdbuff3,sdbuff4;
uint j,n;
uchar zh1,zh2,zh3,zh4;
sdbuff1=addstart;
sdbuff2=addstart;
sdbuff3=addstart;
sdbuff4=addstart;
zh1=(sdbuff1>>24)&0x000000ff;
zh2=(sdbuff2>>16)&0x000000ff;
zh3=(sdbuff3>>8)&0x000000ff;
zh4=sdbuff4&0x000000ff;
// uchar pcmd[6]={0x51,zh1,zh2,zh3,zh4,0xff};//原來這里是高地址字節(jié)在前地地址在后啊201012月14日邏輯扇區(qū)在253*512=0X0001fa00
CS=1;
write(0xff);//據(jù)說是提高兼容性
CS=0;//片選開
write( 0x51);
write( zh1);
write( zh2);
write( zh3);
write( zh4);
write( 0xff);
DATEOUT=1;
for(;;)
{
fhz=read();
if(fhz==0x00)break;
}
DATEOUT=1;
for(;;)
{
fhz=read();
if(fhz==0xfe)break;
}
DATEOUT=1;
n=0;
for(j=512;j;j--)
{
tab[n]=read();
n++;
}
fhz=read();
fhz=read();
CS=1;
write(0xff);
}
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
}
else
TI = 0;
}
void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}
void main()
{ unsigned long numb;
uint f;
uchar m;
InitUART(); //串口初始化
is_init=1;
restsd();
initsd();
is_init=0;//提高始終頻率
p1_7=0;
p1_7=1;
btime=65536;
while(1)
{
SendOneByte(0x88);
numb=0x00420a00;
do
{
readsd(numb);//讀物理扇區(qū)
for(;;)
{
m=tab[f];
SendOneByte(m);
f++;
if(f==512)break;//這里的F一定要定義成UNSIGNED INT行
}
SendOneByte(0xcc);
numb=(numb+0x200);
}
while(0x0044620!=numb);
EA=0;
ES = 0;
TR1 = 0;
while(1);
}
}
復(fù)制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人av免费看
|
91国产在线视频在线
|
欧美一区二区三区
|
www.蜜桃av
|
香蕉二区
|
日本一区二区三区免费观看
|
一级黄色夫妻生活
|
国产探花在线精品一区二区
|
欧美视频免费在线观看
|
国产成人精品一区二区三区四区
|
黄色成人在线观看
|
中文字幕日韩一区
|
色一级片
|
av激情在线
|
国产精品视频一区二区三区
|
日韩欧美中文字幕在线观看
|
中文字幕一区在线观看视频
|
亚洲成av
|
国产精品99久久久久久动医院
|
一区观看
|
播放一级毛片
|
一级看片
|
欧美一区二区三区在线
|
精品国产欧美一区二区
|
亚洲成人黄色
|
国产小视频精品
|
人人做人人澡人人爽欧美
|
欧美色欧美亚洲另类七区
|
红桃视频一区二区三区免费
|
久久精品二区
|
一二区视频
|
一级毛片视频
|
亚洲精品久久久一区二区三区
|
一二三四在线视频观看社区
|
日韩精品一区二区三区在线观看
|
国产精品一区二区久久
|
在线播放国产一区二区三区
|
久久精品一级
|
99这里只有精品
|
天天躁日日躁狠狠躁白人
|
嫩草视频免费
|