亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 幾種常用的模擬spi讀寫一體化模塊.c

?? 本人收集和自己寫的部分51系列例程,供各位參考
?? C
字號:
/*----------------------------------------------------------------------------
                  幾種常用的模擬SPI讀寫一體化模塊
                                                     HotPower@126.com                  
說明:
    SPI接口有一個特點,即在時鐘SCK的上升沿打入數據MOSI,在下降沿讀入數據MISO.
片選信號CS有正負區別.在硬件上MOSI與MISO是可以短路變為SIO可讀寫IO的.
故SPI可為(不包括CS)
   三線(SCK,MOSI,MISO)協議,兩線(SCK,SIO)協議
再者,SPI一般為雙向同時高速收發數據的,方向由時鐘SCK的跳變沿決定。

根據以上所述,模擬SPI讀寫模塊編制成為一體化模塊是必要的。
而且調用規則只需注意讀數據時要寫入0xff即可。非常方便好用。

例如:
    res = SpiReadWrite(val);//模塊寫
    SpiReadWrite(0xff);//模塊讀
對于具體器件,由于涉及到命令、地址及數據等,故一個完整的SPI讀或寫操作
可能需要幾個模擬SPI讀寫一體化模塊來完成。

所以一般完整的SPI讀或寫操作需以下函數組合完成
----------------------------------------------------------------------------*/
void SpiOpen(void);                                     //打開片選 CS="0或CS"=1
void SpiClose(void);                                    //關閉片選 CS="1或CS"=0
unsigned char SpiReadWrite(val);                        //模擬SPI讀寫一體化模塊
void SpiWriteEnable(void);                              //使能寫操作
void SpiWriteDisable(void);                             //禁止寫操作
unsigned char SpiReadStatus(void);                      //讀狀態
void SpiWriteStatus(unsigned char val);                 //寫狀態
void SpiWriteWait(void);                                //等待寫入完成
void SpiWriteByte(unsigned int addr, unsigned char val);//寫一個字節
void SpiWriteWord(unsigned char addr, unsigned int val);//寫一個字
unsigned char SpiReadByte(unsigned int addr);           //讀一個字節
unsigned int SpiReadWord(unsigned char addr);           //讀一個字
----------------------------------------------------------------------------*/

/*-----------------------------------------------
例:
      X5045模擬SPI讀寫一體化模塊
      PTR905模擬SPI讀寫一體化模塊
------------------------------------------------*/
unsigned char SpiReadWrite(unsigned char val)
{
unsigned char i;
  ACC = val;
  for (i = 8; i > 0; i --)
  {
    CY = MISO;//取數據SO
    _rlca_();//存數據ACC.0讀數據ACC.7同時進行
    MOSI = CY;//送數據SI
    SCK = 1;//上升沿打入數據
    _nop_();//延時
    SCK  = 0;//下降沿讀入數據
  }
  return ACC;
}

/*-----------------------------------------------
例:
      X5045模擬SPI讀寫一體化模塊
      ISD4004模擬SPI讀寫一體化模塊
------------------------------------------------*/
unsigned char SpiReadWrite(unsigned char val)
{
unsigned char i;
  ACC = val;
  for (i = 8; i > 0; i --)
  {
    SCK  = 0;//下降沿讀入數據
    _nop_();//延時
    CY = MISO;//取數據SO
    _rlca_();//存數據ACC.0讀數據ACC.7同時進行
    MOSI = CY;//送數據SI
    _nop_();//延時
    SCK = 1;//上升沿打入數據
    MOSI = 1;//釋放總線SI
  }
  return ACC;
}

/*-----------------------------------------------
例:
      AT93C46模擬SPI讀寫模塊
------------------------------------------------*/
sbit ACC_7 = ACC^7;
unsigned char SpiReadWrite(unsigned char val)
{
unsigned char i;
  ACC = val;
  for (i = 8; i > 0; i --)
  {
    CY = ACC_7;//讀數據ACC.7
    MOSI = CY;//送數據SI
    SCK = 1;//上升沿打入數據
    CY = MISO;//取數據SO
    _rlca_();//存數據ACC.0
    SCK  = 0;//下降沿
  }
  return ACC;
}

 
 
/*----------------------------------------------
DS1302讀寫一體化C51源程序 
HotPower@126.com
------------------------------------------------*/
//打開DS1302
void TimeSpiOpen(void)
{
  TIMECLK = 0;
  TIMERST = 0;//禁止DS1302
  TIMEIO  = 1;//釋放數據總線
  TIMERST = 1;//使能DS1302
}

//關閉DS1302
void TimeSpiClose(void)
{
  TIMERST = 0;//禁止DS1302
  TIMEIO  = 1;//釋放數據總線
  TIMECLK = 1;
}
//讀寫DS1302
unsigned char TimeSpiReadWrite(unsigned char val)
{
unsigned char i;
  ACC = val;//取8位數據
  for (i = 8;i > 0; i--)
  {
    TIMECLK = 0;//時鐘下降沿輸入數據(DS1302讀)
    _nop_();//延時
    CY = TIMEIO;//接收串行數據到CY
    _rrca_();//右移一位數據到CY(先存后取)
    TIMEIO = CY;//發送串行數據
    TIMECLK = 1;//時鐘上升沿打入數據(DS1302寫)
    TIMEIO  = 1;//釋放數據總線
  }
  val = ACC;
  return val;
}

//讀DS1302字節
unsigned char TimeByteRead(unsigned char address)
{
  TimeSpiOpen();//打開DS1302
  TimeSpiReadWrite(address);//寫入DS1302命令
  address = TimeSpiReadWrite(0xff);//讀入DS1302數據
  TimeSpiClose();//關閉DS1302
  return address;//返回數據
}

//讀DS1302RAM字節
unsigned char TimeRamByteRead(unsigned char address)
{
  TimeSpiOpen();//打開DS1302
  TimeSpiReadWrite((address << 1) | 0xc1);//寫入DS1302命令
  address = TimeSpiReadWrite(0xff);//讀入DS1302數據
  TimeSpiClose();//關閉DS1302
  return address;//返回數據
}


//寫DS1302字節
void TimeByteWrite(unsigned char address, unsigned char val)
{
  TimeSpiOpen();//打開DS1302
  TimeSpiReadWrite(address);//寫地址
  TimeSpiReadWrite(val);//寫數據
  TimeSpiClose();//關閉DS1302
}

//寫DS1302字節
void TimeRamByteWrite(unsigned char address, unsigned char val)
{
  TimeSpiOpen();//打開DS1302
  TimeSpiReadWrite((address << 1) | 0xc0);//寫地址
  TimeSpiReadWrite(val);//寫數據
  TimeSpiClose();//關閉DS1302
}

//使能DS1302寫保護
void TimeWriteEnable(void)
{
  TimeByteWrite(timewriteregall, timewriteseg);//使能DS1302寫保護
}

//開放DS1302寫保護
void TimeWrieDisbale(void)
{
  TimeByteWrite(timewriteregall, 0);//開放DS1302寫保護
}

//DS1302工作開始
void TimeWorkStart(void)
{
unsigned char val;
  val = TimeByteRead(timereadseg);//讀秒數據
  val &= 0x7f;//打開晶振
  TimeWrieDisbale();//開放DS1302寫保護
  TimeByteWrite(timewriteseg, val);//打開晶振
  TimeByteWrite(tricklewrite, 0xa5);//打開充電二極管
  TimeWriteEnable();//使能DS1302寫保護
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区日本一区韩国一区| 国产精品免费aⅴ片在线观看| 久久精品一区蜜桃臀影院| 国产精品高潮久久久久无| 日本三级亚洲精品| 91国模大尺度私拍在线视频| 精品国产青草久久久久福利| 午夜精品一区二区三区电影天堂| 国产风韵犹存在线视精品| 欧美精品电影在线播放| 亚洲免费观看高清完整版在线观看熊 | 国产精品亚洲一区二区三区妖精 | av网站一区二区三区| 日韩欧美黄色影院| 日精品一区二区| 色综合久久久久综合99| 韩国女主播成人在线| 青青草原综合久久大伊人精品优势| 不卡的电影网站| 国产视频一区二区在线| 精东粉嫩av免费一区二区三区| 制服丝袜在线91| 亚洲国产一二三| 色婷婷综合久久久| 中文字幕一区二区三区四区不卡 | 欧美三级电影在线观看| 亚洲视频免费在线观看| 91小视频免费观看| 国产精品麻豆欧美日韩ww| 国产成人h网站| 国产日韩欧美电影| 岛国av在线一区| 国产精品每日更新| 99在线视频精品| 亚洲精品高清视频在线观看| 91丨porny丨中文| 亚洲免费观看高清完整| 91免费国产视频网站| 亚洲免费三区一区二区| 在线免费观看视频一区| 亚洲一级二级三级在线免费观看| 91小宝寻花一区二区三区| 亚洲黄色片在线观看| 欧美中文一区二区三区| 日韩专区一卡二卡| 欧美大尺度电影在线| 国内精品久久久久影院一蜜桃| 欧美激情综合五月色丁香| 不卡免费追剧大全电视剧网站| 亚洲激情五月婷婷| 欧美高清性hdvideosex| 狠狠色狠狠色综合| 国产精品国产精品国产专区不蜜| 色婷婷狠狠综合| 青椒成人免费视频| 日本一区二区三区四区| 在线观看精品一区| 久久精品国产99国产| 中文字幕av一区二区三区高| 色婷婷久久久亚洲一区二区三区| 日日夜夜精品视频免费| 国产午夜精品一区二区三区嫩草 | 午夜免费欧美电影| 精品久久久久香蕉网| 99久久免费精品高清特色大片| 一区二区三区毛片| 亚洲精品在线一区二区| av电影天堂一区二区在线观看| 午夜免费久久看| 国产蜜臀97一区二区三区| 欧美日韩国产成人在线免费| 国产不卡一区视频| 亚洲高清免费视频| 久久青草欧美一区二区三区| 欧美三级在线播放| 国产成人亚洲精品青草天美| 亚洲电影一级片| 亚洲欧洲一区二区在线播放| 日韩欧美一区二区在线视频| 欧美日韩一区中文字幕| 国产精品久久久久国产精品日日| 欧美色视频一区| 成人激情图片网| 免费高清在线一区| 一区二区久久久久| 国产精品久久久久久亚洲伦| 欧美一区二区视频在线观看2020| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 一区二区三区高清| 欧美极品美女视频| 日韩视频在线一区二区| 欧美性猛交xxxx乱大交退制版| 国产成都精品91一区二区三| 精品中文字幕一区二区| 亚洲一区电影777| 国产精品国产三级国产aⅴ入口 | 欧美日韩精品三区| 99re这里只有精品首页| 国产一区二区在线观看视频| 石原莉奈在线亚洲二区| 亚洲综合在线电影| 亚洲日本在线看| 国产精品成人免费在线| 中文无字幕一区二区三区| 精品国产乱码久久久久久闺蜜| 在线不卡一区二区| 欧美日韩日日摸| 欧美日韩午夜影院| 在线免费观看视频一区| 成人性视频网站| 国产91精品久久久久久久网曝门 | 99精品久久99久久久久| 国产一区二区三区综合| 精品一区二区在线免费观看| 奇米777欧美一区二区| 日韩精品一级中文字幕精品视频免费观看 | 午夜精品影院在线观看| 五月激情综合网| 免费观看久久久4p| 久久精品久久综合| 激情偷乱视频一区二区三区| 久久机这里只有精品| 激情综合色播五月| 国产精品正在播放| 成人av影视在线观看| 97se亚洲国产综合在线| 欧美优质美女网站| 欧美日韩国产免费一区二区| 欧美久久久久久久久中文字幕| 91麻豆精品国产91久久久久久久久 | 99这里只有久久精品视频| 97aⅴ精品视频一二三区| 一本到一区二区三区| 欧美艳星brazzers| 欧美一区二区三区免费| 国产欧美日韩视频一区二区| 中文字幕中文乱码欧美一区二区| 亚洲日本在线a| 视频在线观看一区二区三区| 久久97超碰色| 成人av午夜电影| 欧美性三三影院| 精品久久久久99| 成人欧美一区二区三区黑人麻豆| 亚洲综合清纯丝袜自拍| 男人的天堂亚洲一区| 国产精品一级片在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 在线不卡中文字幕播放| 国产农村妇女毛片精品久久麻豆 | 亚洲少妇中出一区| 丝袜亚洲另类欧美综合| 国产一区二区精品久久99| 不卡一区二区中文字幕| 欧美高清视频不卡网| 国产欧美日本一区视频| 亚洲成人激情av| 国产一区二区在线视频| 欧美视频中文字幕| 久久蜜臀精品av| 日韩中文字幕不卡| 波多野结衣在线一区| 日韩一区二区三区视频在线| 中文字幕亚洲一区二区va在线| 日韩av网站免费在线| 91麻豆精品在线观看| 精品99一区二区| 日韩精品一二三四| 在线观看视频一区二区欧美日韩| 精品国产麻豆免费人成网站| 午夜精品久久久久久久99水蜜桃| 成人激情综合网站| 精品国产网站在线观看| 性久久久久久久久| 色噜噜狠狠一区二区三区果冻| 久久久久高清精品| 激情五月婷婷综合网| 正在播放一区二区| 亚洲成av人影院| 色婷婷av一区| 亚洲色图欧洲色图| 99久久综合色| 日本一区二区综合亚洲| 国产一本一道久久香蕉| 精品日韩99亚洲| 久久国产成人午夜av影院| 欧美私模裸体表演在线观看| 亚洲少妇30p| 色综合久久久久综合99| 国产精品久久久久久户外露出 | 黄色小说综合网站| 日韩区在线观看| 人人爽香蕉精品| 欧美精品日韩一本| 午夜视黄欧洲亚洲| 在线电影国产精品| 青青草97国产精品免费观看无弹窗版 | 国产精品麻豆一区二区| 99这里只有久久精品视频| 国产精品免费免费|