国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
EX91 將數(shù)據(jù)"0xaa"寫入X5045再讀出送P1口顯示
//實例91:將數(shù)據(jù)"0xaa"寫入X5045再讀出送P1口顯示
#include<reg51.h>    //包含單片機寄存器的頭文件
#include<intrins.h>  //包含_nop_()函數(shù)定義的頭文件
sbit SCK=P3^4;       //將SCK位定義為P3.4引腳
sbit SI=P3^5;        //將SI位定義為P3.5引腳
sbit SO=P3^6;        //將SO位定義為P3.6引腳
sbit CS=P3^7;        //將SCK位定義為P3.7引腳
#define WREN 0x06    //寫使能鎖存器允許
#define WRDI 0x04    //寫使能鎖存器禁止
#define WRSR 0x01    //寫狀態(tài)寄存器
#define READ 0x03    //讀出
#define WRITE 0x02   //寫入
/*****************************************************
函數(shù)功能:延時1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以認為是1毫秒
***************************************************/
void delay1ms()
{
   unsigned char i,j; 
  for(i=0;i<10;i++)
   for(j=0;j<33;j++)
    ;  
 }
/*****************************************************
函數(shù)功能:延時若干毫秒
入口參數(shù):n
***************************************************/
 void delaynms(unsigned char n)
 {
   unsigned char i;
 for(i=0;i<n;i++)
    delay1ms();
 }
/*****************************************************
函數(shù)功能:從X5045的當(dāng)前地址讀出數(shù)據(jù)
出口參數(shù):x
***************************************************/
unsigned char ReadCurrent(void)
{
   unsigned char i;
 unsigned char x=0x00;      //儲存從X5045中讀出的數(shù)據(jù)
 SCK=1;                     //將SCK置于已知的高電平狀態(tài)
   for(i = 0; i < 8; i++)
 {
    SCK=1;                 //拉高SCK
    SCK=0;                 //在SCK的下降沿輸出數(shù)據(jù) 
    x<<=1;  //將x中的各二進位向左移一位,因為首先讀出的是字節(jié)的最高位數(shù)據(jù)   
  x|=(unsigned char)SO;  //將SO上的數(shù)據(jù)通過按位“或“運算存入 x     
 }
 return(x);   //將讀取的數(shù)據(jù)返回
 }
/*****************************************************
函數(shù)功能:寫數(shù)據(jù)到X5045的當(dāng)前地址
入口參數(shù):dat
***************************************************/
void WriteCurrent(unsigned char dat)
{
   unsigned char i;
 SCK=0;                 //將SCK置于已知的低電平狀態(tài)
  for(i = 0; i < 8; i++)  // 循環(huán)移入8個位
 {
  SI=(bit)(dat&0x80);   //通過按位“與”運算將最高位數(shù)據(jù)送到S
                      //因為傳送時高位在前,低位在后
  SCK=0;
  SCK=1;               //在SCK上升沿寫入數(shù)據(jù)
    dat<<=1;   //將y中的各二進位向左移一位,因為首先寫入的是字節(jié)的最高位
  }
}
/*****************************************************
函數(shù)功能:寫狀態(tài)寄存器 ,可以設(shè)置看門狗的溢出時間及數(shù)據(jù)保護
入口參數(shù):rs;  //儲存寄存器狀態(tài)值
***************************************************/
void WriteSR(unsigned char rs)
{
  CS=0;                 //拉低CS,選中X5045
  WriteCurrent(WREN);   //寫使能鎖存器允許
  CS=1;                 //拉高CS
  CS=0;                 //重新拉低CS,否則下面的寫寄存器狀態(tài)指令將被丟棄
  WriteCurrent(WRSR);   //寫狀態(tài)寄存器
  WriteCurrent(rs);     //寫入新設(shè)定的寄存器狀態(tài)值
  CS=1;                 //拉高CS
}
/*****************************************************
函數(shù)功能:寫數(shù)據(jù)到X5045的指定地址
入口參數(shù):addr
***************************************************/
void WriteSet(unsigned char dat,unsigned char addr)
{
   SCK=0;                 //將SCK置于已知狀態(tài)
   CS=0;                  //拉低CS,選中X5045
 WriteCurrent(WREN);    //寫使能鎖存器允許
 CS=1;                  //拉高CS
   CS=0;                  //重新拉低CS,否則下面的寫入指令將被丟棄
 WriteCurrent(WRITE);   //寫入指令
 WriteCurrent(addr);    //寫入指定地址
 WriteCurrent(dat);     //寫入數(shù)據(jù)
 CS=1;                  //拉高CS
   SCK=0;                 //將SCK置于已知狀態(tài)
}
/*****************************************************
函數(shù)功能:從X5045的指定地址讀出數(shù)據(jù)
入口參數(shù):addr
出口參數(shù):dat
***************************************************/
unsigned char ReadSet(unsigned char addr)
{
 unsigned char dat;
 SCK=0;                 //將SCK置于已知狀態(tài)
 CS=0;                  //拉低CS,選中X5045
 WriteCurrent(READ);   //開始讀
 WriteCurrent(addr);   //寫入指定地址
 dat=ReadCurrent();    //讀出數(shù)據(jù)
 CS=1;                 //拉高CS
 SCK=0;                //將SCK置于已知狀態(tài)
 return dat;           //返回讀出的數(shù)據(jù)
 }
/*****************************************************
函數(shù)功能:看門狗復(fù)位程序
***************************************************/
void WatchDog(void)
{
 CS=1;    //拉高CS
 CS=0;    //CS引腳的一個下降沿復(fù)位看門狗定時器
 CS=1;    //拉高CS
}
/*****************************************************
函數(shù)功能:主程序
***************************************************/
void main(void)
{
  WriteSR(0x12);        //寫狀態(tài)寄存器(設(shè)定看門狗溢出時間為600ms,寫不保護) 
  delaynms(10);         //X5045的寫入周期約為10ms
  while(1)
  {
  WriteSet(0xaa,0x10);  //將數(shù)據(jù)“0xaa”寫入指定地址“0x10”
  delaynms(10);         //X5045的寫入周期約為10ms
   P1=ReadSet(0x10);      //將數(shù)據(jù)讀出送P1口顯示
    WatchDog();           //復(fù)位看門狗
  }
}
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于51單片機SHT11溫濕度傳感器檢測程序(含電路圖)
單片機常用程序有哪些?高級工考核反復(fù)使用的三個程序
碩士論文:溫濕度監(jiān)測系統(tǒng)
st7735s SPI驅(qū)動顯示圖標(biāo)
MAX6675.rar Max6675.c
51單片機串口通信的發(fā)送與接收(轉(zhuǎn))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服