娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月28日(星期三)

2021年05月28日 | 93C46/93c06/93c46/93c56/93c66/93c86的驅動程序(C51)

發布者:吾道明亮 來源: eefocus關鍵字:93C46  93c46  驅動程序 手機看文章 掃描二維碼
隨時隨地手機看文章

簡介:SPI總線驅動程序 包括的普通封裝標準模式,特殊封裝標準模式 。


—————————————————————*/

/*通用93c06-93c86系列使用說明

93c06=93c4693c56=93c6693c76=93c86

dipx 可以自行定義*/

#include "reg51.h"

#include "intrins.h"

/*-----------------------------------------------------

SPI93cXX系列時序函數調用(普通封裝)

調用方式:自行定義

函數說明:私有函數,封裝各接口定義

-----------------------------------------------------*/

#define di_93 dip3

#define sk_93 dip2

#define cs_93 dip1

#define do_93 dip4

#define gnd_93 dip5

#define org_93 dip6

sbit cs_93=P1^0;

sbit sk_93=P1^1;

sbit di_93=P1^2;

sbit do_93=P1^3;

sbit org_93=P0^4;

/*-----------------------------------------------------

SPI93cXX系列時序函數調用(普通封裝)

調用方式:void high46(void) ---高8位函數調用

void low46(void) ---低8位函數調用

函數說明:私有函數,SPI專用93c46普通封裝驅動程序

-----------------------------------------------------*/

void high46(void)

{

di_93=1;

sk_93=1; _nop_();

sk_93=0;_nop_();

}

void low46(void)

{

di_93=0;

sk_93=1;_nop_();

sk_93=0;_nop_();

}

void wd46(unsigned char dd)

{

unsigned char i;

for (i=0;i<8;i++)

{

if (dd>=0x80) high46();

else low46();

dd=dd<<1;

}

}

unsigned char rd46(void)

{

unsigned char i,dd;

do_93=1;

for (i=0;i<8;i++)

{

dd<<=1;

sk_93=1;_nop_();

sk_93=0;_nop_();

if (do_93) dd|=1;

}

return(dd);

}

/*-----------------------------------------------------

SPI93cXX系列時序函數調用(特殊封裝)

調用方式:自行定義

函數說明:私有函數,特殊封裝各接口定義

-----------------------------------------------------*/

#define di_93a dip5

#define sk_93a dip4

#define cs_93a dip3

#define do_93a dip6

#define gnd_93a dip7

#define vcc_93a out_vcc(2)

sbit cs_93a=P1^0;

sbit sk_93a=P1^1;

sbit di_93a=P1^2;

sbit do_93a=P1^3;

/*-----------------------------------------------------

SPI93cXX系列時序函數調用(特殊封裝)

調用方式:void high46a(void) ---高8位函數調用

void low46a(void) ---低8位函數調用

函數說明:私有函數,SPI專用93c46特殊封裝驅動程序

-----------------------------------------------------*/

void high46a(void)

{

di_93a=1;

sk_93a=1;_nop_();

sk_93a=0;_nop_();

}

void low46a(void)

{

di_93a=0;

sk_93a=1;_nop_();

sk_93a=0;

_nop_();

}

void wd46a(unsigned char dd)

{

unsigned char i;

for (i=0;i<8;i++)

{

if (dd>=0x80) high46a();

else low46a();

dd=dd<<1;

}

}

unsigned char rd46a(void)

{

unsigned char i,dd;

do_93a=1;

for (i=0;i<8;i++)

{

dd<<=1;

sk_93a=1;_nop_();

sk_93a=0;_nop_();

if (do_93a) dd|=1;

}

return(dd);

}

/*-----------------------------------------------------

SPI93c46系列函數調用(舉例)

調用方式:bit write93c56_word(unsigned int address,unsigned int dat)

函數說明:私有函數,SPI專用

-----------------------------------------------------*/

void ewen46(void)

{

_nop_();

cs_93=1;

high46();

wd46(0x30);

cs_93=0;

}

unsigned int read93c46_word(unsigned char address)

{

unsigned int dat;

unsigned char dat0,dat1;

gnd_93a=0;

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;_nop_();

address=address>>1;

address=address|0x80;

address=address|0x80;

high46();

wd46(address);

dat1=rd46();

dat0=rd46();

cs_93=0;

dat=dat1*256+dat0;

return(dat);

}

bit write93c46_word(unsigned char address,unsigned int dat)

{

unsigned char e,temp=address;

e=0;

while (e<3)

{

gnd_93a=0;

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;

ewen46();

_nop_();

cs_93=1;

_nop_();

high46();

address|=0x80;

address>>=1;//??

address|=0x40;

wd46(address);

wd46(dat/256);

wd46(dat%256);

cs_93=0;

_nop_();

cs_93=1;

time=0;do_93=1;

while (1)

{

if (do_93==1) break;

if (time>20) break;

}

cs_93=0;

if (read93c46_word(temp)==dat)

{

return(0);

}

e++;

}

return(1);

}

/*-----------------------------------------------------

SPI93c57系列函數調用(舉例)

調用方式:bit write93c57_word(unsigned int address,unsigned int dat)

函數說明:私有函數,SPI專用

-----------------------------------------------------*/

void ewen57(void)

{

_nop_();

cs_93=1;

dip7=0;

high46();

low46();

wd46(0x60);

cs_93=0;

}

unsigned int read93c57_word(unsigned int address)

{

unsigned int dat;

unsigned char dat0,dat1;

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;

address=address>>1;

high46();

high46();

wd46(address);

dat1=rd46();

dat0=rd46();

cs_93=0;

dat=dat1*256+dat0;

return(dat);

}

bit write93c57_word(unsigned int address,unsigned int dat)

{

unsigned char e;

unsigned int temp=address;

e=0;

while (e<3)

{

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;

ewen57();

cs_93=1;

_nop_();

high46();

low46();

address>>=1;

address|=0x80;

wd46(address);

wd46(dat/256);

wd46(dat%256);

cs_93=0;

_nop_();

cs_93=1;

time=0;

do_93=1;

while (1)

{

if (do_93==1) break;

if (time>20) break;

}

cs_93=0;

if (read93c57_word(temp)==dat)

{

return(0);

}

e++;

}

return(1);

}

/*-----------------------------------------------------

SPI93c56系列函數調用(舉例)

調用方式:bit write93c56_word(unsigned int address,unsigned int dat)

函數說明:私有函數,SPI專用

-----------------------------------------------------*/

void ewen56(void)

{

_nop_();

cs_93=1;

high46();

low46();

low46();

wd46(0xc0);

cs_93=0;

}

unsigned int read93c56_word(unsigned char address)

{

unsigned int dat;

unsigned char dat0,dat1;

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;

address=address>>1;

high46();

high46();

low46();

wd46(address);

dat1=rd46();

dat0=rd46();

cs_93=0;

dat=dat1*256+dat0;

return(dat);

}

bit write93c56_word(unsigned char address,unsigned int dat)

{

unsigned char e;

unsigned int temp=address;

e=0;

while (e<3)

{

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;

ewen56();

_nop_();

cs_93=1;

_nop_();

high46();

low46();

high46();

address>>=1;

wd46(address);

wd46(dat/256);

wd46(dat%256);

cs_93=0;

_nop_();

cs_93=1;

TH0=0;

time=0;

do_93=1;

while (1)

{

if (do_93==1) break;

if (time) break;

}

cs_93=0;

if (read93c56_word(temp)==dat)

{

return(0);

}

e++;

}

return(1);

}

/*-----------------------------------------------------

SPI93c76與SPI93c86系列函數調用(舉例)

調用方式:bit write93c76_word(unsigned int address,unsigned int dat)

函數說明:私有函數,SPI專用

-----------------------------------------------------*/

void ewen76(void)

{

_nop_();

cs_93=1;

dip7=1;

high46();

low46();

low46();

high46();

high46();

wd46(0xff);

cs_93=0;

}

unsigned int read93c76_word(unsigned int address)

{

unsigned char dat0,dat1;

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;

address>>=1;

high46();

high46();

low46();

if((address&0x200)==0x200) high46();

else low46();

if ((address&0x100)==0x100) high46();

else low46();

wd46(address);

dat1=rd46();

dat0=rd46();

cs_93=0;

return(dat1*256|dat0);

}

bit write93c76_word(unsigned int address,unsigned int dat)

{

unsigned char e;

unsigned int temp=address;

e=0;

address>>=1;

while (e<3)

{

gnd_93=0;

cs_93=sk_93=0;

org_93=1;

cs_93=1;

ewen76();

_nop_();

cs_93=1;

high46();

low46();

high46();

if((address&0x200)==0x200) high46();

else low46();

if ((address&0x100)==0x100) high46();

else low46();

wd46(address);

wd46(dat/256);

wd46(dat%256);

cs_93=0;_nop_();cs_93=1;

time=0;do_93=1;

while (1)

{

if (do_93==1) break;

if (time>10) break;

}

cs_93=0;

e++;

}

return(1);

}

/*-----------------------------------------------------

主函數調用(舉例)

調用方式:main()

函數說明:私有函數,SPI專用

-----------------------------------------------------*/

main()

{ bit b;

unsigned int i;

unsigned int j[32],k;

for(i=0;i<32;i++)

j[i]=read93c56_word(i);

for(i=0;i<32;i++)

write93c56_word(i,0x0909);

i=0;

b=write93c56_word(i,0x0909);

j[i]=read93c56_word(i);

i=1;

b=write93c56_word(i,0x1111);

j[i]=read93c56_word(i);

i=2;

b=write93c56_word(i,0x2222);

j[i]=read93c56_word(i);

}


關鍵字:93C46  93c46  驅動程序 引用地址:93C46/93c06/93c46/93c56/93c66/93c86的驅動程序(C51)

上一篇:C51內存優化(data/idata/xdata)
下一篇:單片機系列指令快速記憶法

推薦閱讀

最近小米的新機真是多到爆,這不工信部已經又出現了小米的新機。從最新顯示的情況來看,M1805D1SE、M1805D1ST、M1805D1SC三款全新型號的小米新機已經拿到了入網許可證,從配置參數上來看,他們跟小米8一點都沾不上邊。工信部給出的參數顯示,小米這款新機配備5.84英寸,分辨率為2280×1080像素,典型的18:9全面屏風格,搭載主頻2GHz八核處理器,還是驍龍6...
日前,奔馳發布了ESF 2019安全概念車。ESF是奔馳專門用于研發安全技術的概念車名稱,主要用于展示奔馳內部研究人員和工程師們對于汽車安全的新理念。奔馳強調,ESF 2019是對現代汽車安全問題的展望和探索。如果您關注過奔馳ESF歷史,會知道上一代ESF安全概念車還要追溯到十年前。在當時奔馳展示了諸如PRE-SAFE預防性安全車身結構、制動氣囊、交互式車輛...
5月28日消息 據外媒sammobile援引韓國知情人士消息稱,三星最近幾天下達了Galaxy Fold 2的生產訂單,其中包括超薄玻璃(UTG)技術。  這也意味著,Galaxy Fold 2成為三星繼Galaxy Z Flip之后第二款搭載UTG技術的設備。 隨著折疊屏設備技術的逐漸成熟,這類產品的價格應當開始逐漸降低。根據此前信息,Galaxy Fold 2在美國的起...
盛宇投資消息顯示,今年5月,盛宇投資完成對昇顯微電子(蘇州)有限公司(以下簡稱:昇顯微電子)的投資。此外,企查查顯示,5月13日,昇顯微電子發生工商變更,新增股東寧波君潤恒惠股權投資合伙企業(有限合伙)、上海岡石企業管理合伙企業(有限合伙)、上海恒毓投資中心(有限合伙)等。同時,注冊資本由3500萬元增加至4200萬元。昇顯微電子成立于2018年,專...

史海拾趣

問答坊 | AI 解惑

DSP和Flash接口技術的實現

1 引言 在現代數字信號處理系統中,采用Flash做為DSP程序加載和引導是一種常用的方法,它為用戶對那些將來可能需要改變數據或代碼的系統維護提供了有效手段。利用Flash器件,能夠實現在線程序編寫,減少EPROM程序燒寫帶來的麻煩。 2 Flash AM29LV ...…

查看全部問答∨

按鍵觸發外部中斷代碼疑問想問問大家

下面是我的代碼: #include "2440addr.h" ----------中斷函數-------------- static void __irq Eint8_19_ISR(void) { { int a=30000; ClearPending(BIT_EINT8_23); rGPBDAT=rGPBDAT&0xffe; while(a--); } } -------- ...…

查看全部問答∨

計算機并口與STC89C51連接 之間需要什么保護或者電平轉換嗎?

計算機并口與STC89C51連接 之間需要什么保護或者電平轉換嗎? 如果需要 和串口中的MAX232意義一樣嗎?只是保護 還是需要電平轉換??…

查看全部問答∨

用VHDL實現一下轉換問題

小弟想用VHDL實現以下轉換,不知可否實現 輸入8位數值1-180  x 輸出y=694*x en上升沿完成轉換 可以的話,幫忙說一下思路,小弟腦子現在感覺是一團亂麻了。…

查看全部問答∨

誰遇到過---致命的應用程序錯誤?

經過: 一個端口測試程序,當端口打開成功就MessageBox一個“端口打開成功”,并對接收到的數據進行處理。 結果: 一點Messagebox彈出的那個信息對話框上的“OK”按鈕,就彈出一個“致命的應用程序錯誤”,還有時候說map_pp.cpp中一行錯誤..... ...…

查看全部問答∨

求資料

請問大家有沒有講wireless interface方面的資料介紹下啊? 先謝謝大家了!!…

查看全部問答∨

usb架構體系?

usb架構體系是什么…

查看全部問答∨

STM32的內部RAM太少,有合適得串口RAM推薦?

                                 最近,想做個東東,但是STM32內部的RAM太少了,向外擴一個串口RAM,兄弟們有合適的推薦?…

查看全部問答∨

006 M813 009

發現一款歐姆龍的計步器 型號為HJA-300,內置的3D便攜式加速度傳感器,芯片型號可能是006 M813 009 問問有哪位高手知道這個芯片的datasheet啊???多謝啊!…

查看全部問答∨

請教大哥哥大姐姐們!

請問430f1122的p1端口的輸出電壓是多少啊? 我測的是1.4伏! 但是不夠用啊! 不知道是否還可以高點啊!?…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 柯坪县| 宣恩县| 陕西省| 井冈山市| 十堰市| 荔浦县| 肥乡县| 常宁市| 西昌市| 永靖县| 正宁县| 泾源县| 城固县| 鲜城| 鲁山县| 扶绥县| 四子王旗| 宁国市| 邳州市| 明光市| 庆安县| 怀化市| 鹰潭市| 金湖县| 包头市| 无棣县| 当涂县| 牙克石市| 阿拉善右旗| 尤溪县| 九江县| 海林市| 滦平县| 延长县| 涟源市| 五台县| 哈密市| 高安市| 石嘴山市| 文登市| 华宁县|