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

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

?? pic16f946_i2c.txt

?? PIC16F946 軟件模擬I2C操作FM24C16鐵電存儲器C源程序.
?? TXT
字號:
#include<pic.h> 

#define  SCL    RD5  //FM24C16-6
#define  SDA     RD4  //FM24C16-5
#define  WP      RD3  //寫保護 

#define  LED RC3 

#define  SCL_DIR   TRISD5  //1
#define  SDA_DIR   TRISD4  //2 

#define  IIC_READ  0xA1     //定義讀指令
#define  IIC_WRITE 0xA0     //定義寫指令 

#define  OUTPUT  0
#define  INPUT  1 

bit ack;          //應答標志位 

unsigned char b[4];
unsigned char b1[4];
unsigned char c[1]; 

/*--------------------------------------------------------------------------------------------
功能:啟動I2C總線,即發(fā)送I2C起始條件.  
名稱:Start_I2c()
輸入:無
輸出:無
返回:無
備注:無
---------------------------------------------------------------------------------------------*/
void Start_I2c(void)
{
 SDA_DIR = OUTPUT;
 SCL_DIR = OUTPUT; 

 SDA = 1;        //發(fā)送起始條件的數(shù)據(jù)信號 
 SCL = 1;    
 SDA = 0;        //發(fā)送起始信號         
 SCL = 0;        //鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù)  

}
/*--------------------------------------------------------------------------------------------
功能:結束I2C總線,即發(fā)送I2C結束條件.   
名稱:Stop_I2c()
輸入:無
輸出:無
返回:無
備注:無
---------------------------------------------------------------------------------------------*/
void Stop_I2c()
{
 SDA_DIR = OUTPUT;
 SCL_DIR = OUTPUT;
 
 SDA=0;      //發(fā)送結束條件的數(shù)據(jù)信號 
  SCL=1;       //發(fā)送結束條件的時鐘信號 
  SDA=1;       //發(fā)送I2C總線結束信號 


} 


/*--------------------------------------------------------------------------------------------
功能:將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應答,并對此狀態(tài)位進行操作.(不應答或非應答都使ack=0)     
     發(fā)送數(shù)據(jù)正常,ack=1; ack=0表示被控器無應答或損壞。  
名稱:void  SendByte
輸入:c:要發(fā)送的數(shù)據(jù)
輸出:無
返回:無
備注:無
---------------------------------------------------------------------------------------------*/ 

void  SendByte(unsigned char c)
{
 unsigned char BitCnt; 

 SCL_DIR = OUTPUT;
 SDA_DIR = OUTPUT;  
 
 for(BitCnt=0;BitCnt<8;BitCnt++)  //要傳送的數(shù)據(jù)長度為8位 
 {  
  if((c<<BitCnt)&0x80)   //判斷發(fā)送位 
  { SDA=1; } 
         else { SDA=0; }                   
        SCL=1;                       //置時鐘線為高,通知被控器開始接收數(shù)據(jù)位        
        SCL=0; 

    } 
         
    SDA=1;                          //8位發(fā)送完后釋放數(shù)據(jù)線,準備接收應答位   
    
    SDA_DIR = INPUT;     //將SDA置為輸入口,等待應答 
    
    SCL=1;  
    
    
    
    if(SDA==1) { ack=0; }   
       else { ack=1; }            //判斷是否接收到應答信號,如果正確第九個sda為零
    SCL=0; 
} 

/*--------------------------------------------------------------------------------------------
功能:用來接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應答信號),發(fā)完后請用應答函數(shù)應答從機。     
名稱:RcvByte
輸入:無
輸出:無
返回:retc
備注:無
---------------------------------------------------------------------------------------------*/ 
unsigned char  RcvByte(void)
{
 unsigned char retc;
    unsigned char BitCnt;
  
   retc=0; 
   SDA=1;                        //置數(shù)據(jù)線為輸入方式 

   SDA_DIR = INPUT;     //將SDA置為輸入口,等待應答 
   for(BitCnt=0;BitCnt<8;BitCnt++)
    {
                  
        SCL=0;                       //置時鐘線為低,準備接收數(shù)據(jù)位       
        SCL=1;                       //置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效     
        retc=retc<<1;
        if(SDA==1)retc=retc+1;       //讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中        
    }
  SCL=0;  
   return(retc);
} 

/*--------------------------------------------------------------------------------------------
功能:主控器進行應答信號(可以是應答或非應答信號,由位參數(shù)a決定)
名稱:void Ack_I2c
輸入:無
輸出:無
返回:無
備注:無
---------------------------------------------------------------------------------------------*/ 
void Ack_I2c(unsigned char a)
{
 SCL_DIR = OUTPUT;
 SDA_DIR = OUTPUT;   

    if(a==0)
    {
     SDA=0;               //在此發(fā)出應答或非應答信號 
    }
    else
    {  
     SDA=1;
    }
  
   SCL=1;  
   SCL=0;                    //清時鐘線,鉗住I2C總線以便繼續(xù)接收
} 

/*--------------------------------------------------------------------------------------------
功能:向有子地址器件發(fā)送字節(jié)數(shù)據(jù)函數(shù)
     從啟動總線到發(fā)送命令,地址,數(shù)據(jù),結束總線的全過程,器件子地址sbua.如果返回1表示操作成功,否則操作有誤。
名稱:ISendByte
輸入:
輸出:
返回:
備注:
---------------------------------------------------------------------------------------------*/ 
unsigned char ISendByte(unsigned int suba,unsigned char c)
{
 unsigned char temp,tempw; 

 temp=(unsigned char)(suba>>8);  //temp =0 0 0 0 0 a10 a9 a8
 tempw=(IIC_WRITE|(temp<<1));   //tempw=1 0 1 0 a10 a9 a8 0
    Start_I2c();                  //啟動總線
    SendByte(tempw);               //發(fā)送命令            
    if(ack==0)
    {   
     //LED=0; 
     return(0);
    } 
 SendByte((unsigned char)suba);  //發(fā)送地址 
    if(ack==0)
    {  
    //LED=0;    
      return(0);
    } 
    SendByte(c);                    //發(fā)送數(shù)據(jù)
    if(ack==0)
    {
     //LED=0;
      return(0);
    } 
    Stop_I2c();                     //結束總線
    return(1);
} 

/*--------------------------------------------------------------------------------------------
功能:向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù)
     從啟動總線到發(fā)送命令,子地址,數(shù)據(jù),結束總線的全過程如果返回1表示操作成功,否則操作有誤。
名稱:ISendStr輸入:
輸出:
返回:
備注:使用前必須已結束總線。
---------------------------------------------------------------------------------------------*/ 
unsigned char ISendStr(unsigned int suba,unsigned char *s,unsigned char no)
{
 unsigned char i;
 unsigned char temp,tempw; 

 temp=(unsigned char)(suba>>8);       //temp=0 0 0 0  0 a10 a9 a8
 tempw=(IIC_WRITE|(temp<<1));  //tempw=1 0 1 0 a10 a9 a8 0
    Start_I2c();                  //啟動總線
    SendByte(tempw);              //發(fā)送命令
    if(ack==0)return(0);
    SendByte((unsigned char)suba);       //發(fā)送器件子地址
    if(ack==0)return(0);
    for(i=0;i<no;i++)
    {   
      SendByte(*s);              //發(fā)送數(shù)據(jù)
      if(ack==0)return(0);
      s++;
    } 
    Stop_I2c();                     //結束總線 
    return(1);
}
/*--------------------------------------------------------------------------------------------
功能:向有子地址器件讀字節(jié)數(shù)據(jù)函數(shù)
     從啟動總線到發(fā)送命令,地址,讀數(shù)據(jù),結束總線的全過程,器件子地址sbua ,返回值在c.
     如果返回1表示操作成功,否則操作有誤。
名稱:IRcvByte
輸出:
返回:
備注:
---------------------------------------------------------------------------------------------*/
unsigned char IRcvByte(unsigned int sbua,unsigned char *c)
{
 unsigned char temp,tempw,tempr;
 
 temp=(unsigned char)(sbua>>8);     //temp=0 0 0 0  0 a10 a9 a8
 tempw=(IIC_WRITE|(temp<<1));       //tempw=1 0 1 0 a10 a9 a8 0
 tempr=(IIC_READ|(temp<<1));       //tempr=1 0 1 0 a10 a9 a8 1
    Start_I2c();                      //啟動總線
 SendByte(tempw);                  //寫命令
 if(ack==0)
 {  
  return(0);
 }
 SendByte((unsigned char)sbua);    //寫地址
 if(ack==0)
 {
  return(0);
 } 
 Start_I2c();                      //重新啟動總線
    SendByte(tempr);                  //讀命令
    if(ack==0)
    {
     return(0);
    }
    *c=RcvByte();                     //讀取數(shù)據(jù)
    
    Ack_I2c(1);                       //發(fā)送非就答位
    Stop_I2c();                       //結束總線 
    return(1);
}  

/*--------------------------------------------------------------------------------------------
功能:向有子地址器件讀取多字節(jié)數(shù)據(jù)函數(shù)
     從啟動總線到發(fā)送命令,子地址,讀數(shù)據(jù),結束總線的全過程,如果返回1表示操作成功,否則操作有誤。
名稱:IRcvStr
輸出:
返回:
備注:
---------------------------------------------------------------------------------------------*/ 

unsigned char IRcvStr(unsigned int suba,unsigned char *s,unsigned char no)
{
    unsigned char i;
    unsigned char temp,tempw,tempr;
 
 temp=(unsigned char)(suba>>8);    //temp=0 0 0 0  0 a10 a9 a8
 tempw=(IIC_WRITE|(temp<<1));      //tempw=1 0 1 0 a10 a9 a8 0
 tempr=(IIC_READ|(temp<<1));       //tempr=1 0 1 0 a10 a9 a8 1
    Start_I2c();                      //啟動總線
    SendByte(tempw);                  //寫命令
    if(ack==0)return(0);
    SendByte((unsigned char)suba);    //寫地址
    if(ack==0)return(0); 

    Start_I2c();             //重新啟動總線
    SendByte(tempr);
    if(ack==0)return(0);
    for(i=0;i<no-1;i++)
    {   
      *s=RcvByte();               //發(fā)送數(shù)據(jù)
       Ack_I2c(0);                 //發(fā)送就答位
      s++;
    } 
    *s=RcvByte();
    Ack_I2c(1);                      //發(fā)送非應位
    Stop_I2c();                      //結束總線 
    return(1);
} 


void main(void)
{
 unsigned char a[4]={0xDc,0x55,0xaa,0xed};
 unsigned char d=0xDD;   
 
 OSCCON = 0b011001111;
 
 TRISD3=OUTPUT;
 TRISD4=INPUT;
 TRISD5=INPUT;
 
 TRISC3=OUTPUT;
 
 RD4=0;
 RD5=0;
  
 WP=0;   
 LED=1;
  
 ISendStr(0x400,a,4);   
 IRcvStr(0x400,b,4);
 
 if( b[0]==0xDC && b[1]==0x55 && b[2]==0xaa && b[3]==0xed )
 {
  LED=0;
 }
 /*
    ISendByte(0x301,d);
    IRcvByte(0x301,c);  
 
    if(c[0]==d)
    {
       LED=0;
    }  
    */
 //IRcvStr(0x400,b1,4); 
 while(1)
 {
  
 }
} 

本程序在MPLAB8.0版本中調成功 
 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人h版在线观看| 免费高清在线一区| 色婷婷av一区二区三区软件| 国产精品美女久久久久高潮| 国产电影精品久久禁18| 国产女同互慰高潮91漫画| 国产成人夜色高潮福利影视| 国产精品久久久久精k8 | 一区二区三国产精华液| 色婷婷久久久久swag精品| 亚洲国产aⅴ成人精品无吗| 欧美二区三区91| 久99久精品视频免费观看| 久久天堂av综合合色蜜桃网| 成人听书哪个软件好| 亚洲免费电影在线| 欧美一区二区日韩| 高清国产一区二区三区| 亚洲裸体xxx| 制服丝袜av成人在线看| 国产一区啦啦啦在线观看| 中文字幕在线一区| 欧美日韩在线一区二区| 国产在线播精品第三| 亚洲欧洲日产国码二区| 欧美丝袜丝交足nylons图片| 另类中文字幕网| 综合精品久久久| 日韩久久久久久| 成人a区在线观看| 日本视频在线一区| 国产精品美女一区二区三区| 3d成人h动漫网站入口| 国产精品自拍一区| 亚洲国产欧美日韩另类综合| 欧美大片免费久久精品三p| 成人av午夜电影| 日本系列欧美系列| 中文字幕亚洲一区二区va在线| 9191精品国产综合久久久久久| 国产成人精品免费网站| 五月综合激情网| ...中文天堂在线一区| 日韩免费观看2025年上映的电影| 91女厕偷拍女厕偷拍高清| 捆绑调教美女网站视频一区| 亚洲激情五月婷婷| 国产精品免费看片| 精品少妇一区二区三区| 欧美自拍丝袜亚洲| 成人激情动漫在线观看| 精品一区二区三区欧美| 亚洲成av人片在线| 亚洲精品美国一| 国产精品日产欧美久久久久| 精品国产免费久久| 欧美另类变人与禽xxxxx| 波多野洁衣一区| 国产自产2019最新不卡| 视频一区中文字幕| 亚洲女性喷水在线观看一区| 中文文精品字幕一区二区| 精品1区2区在线观看| 日韩视频国产视频| 欧美精品久久一区二区三区| 色素色在线综合| 99久久婷婷国产综合精品| 成人在线综合网站| 国产福利不卡视频| 国产精品一卡二卡| 国产伦精品一区二区三区免费迷| 日韩高清电影一区| 日本在线观看不卡视频| 亚洲国产aⅴ天堂久久| 亚洲午夜一区二区| 亚洲国产aⅴ成人精品无吗| 一区二区三区四区视频精品免费| 国产精品午夜免费| 欧美激情中文不卡| 欧美国产成人精品| 国产精品免费免费| 亚洲免费看黄网站| 一区二区三区中文字幕精品精品| 国产精品视频yy9299一区| 国产女人水真多18毛片18精品视频| 久久综合国产精品| 久久九九久久九九| 国产精品网站在线| 中文字幕一区二区三区不卡在线| 国产精品色呦呦| 日韩久久一区二区| 一区二区三区欧美日| 亚洲一区二区精品久久av| 性久久久久久久久| 日韩av一区二区三区| 美女免费视频一区二区| 国产一区不卡精品| 成年人网站91| 欧美三级电影在线看| 91精品婷婷国产综合久久| 日韩午夜三级在线| 国产色一区二区| 一区二区在线观看免费| 午夜伦理一区二区| 国产中文字幕精品| 91香蕉视频在线| 欧美一区二区三区四区久久| 久久久www成人免费毛片麻豆| 国产精品色哟哟网站| 亚洲国产视频在线| 国内久久精品视频| 91天堂素人约啪| 日韩一区二区三区四区| 中文字幕欧美激情| 五月天激情综合网| 国产露脸91国语对白| 色天使久久综合网天天| 欧美不卡一区二区三区四区| 亚洲人午夜精品天堂一二香蕉| 日韩精品亚洲一区二区三区免费| 国产激情一区二区三区桃花岛亚洲| 99久久婷婷国产综合精品电影| 欧美精品aⅴ在线视频| 国产午夜精品在线观看| 亚洲国产sm捆绑调教视频 | 日本不卡1234视频| 成人h动漫精品| 日韩欧美国产午夜精品| 最新久久zyz资源站| 青青草97国产精品免费观看无弹窗版 | 视频在线在亚洲| 成年人国产精品| 欧美v日韩v国产v| 一区二区三区高清在线| 国产成人亚洲综合a∨猫咪| 欧美日韩一区在线观看| 中文字幕一区不卡| 成人午夜av在线| 欧美一级黄色片| 亚洲免费视频中文字幕| 国产精华液一区二区三区| 欧美一区二区视频在线观看2020| 亚洲丝袜精品丝袜在线| 国产一区二区精品在线观看| 欧美肥妇毛茸茸| 一区二区三区电影在线播| 成人免费黄色在线| 精品少妇一区二区三区免费观看| 一区二区三区日韩精品| 成人国产精品免费观看| 精品国产免费久久 | 国产精品久久久久婷婷 | 国产aⅴ综合色| 2023国产一二三区日本精品2022| 五月婷婷色综合| 欧美日韩日日骚| 一区二区视频在线| 色婷婷久久一区二区三区麻豆| 欧美国产成人精品| 风间由美一区二区三区在线观看| 精品久久久网站| 蜜桃视频在线一区| 日韩美女一区二区三区四区| 日韩av一级片| 日韩精品一区二区在线| 日韩精品乱码免费| 欧美日韩美少妇| 亚洲国产一区二区视频| 欧美日韩一区二区在线观看视频| 亚洲欧美区自拍先锋| 91在线视频观看| 亚洲色大成网站www久久九九| 国产不卡视频一区二区三区| 久久蜜桃一区二区| 国产高清精品久久久久| 中文字幕精品一区二区三区精品| 国产黑丝在线一区二区三区| 国产情人综合久久777777| 国产成人夜色高潮福利影视| 国产精品网曝门| 色婷婷综合久久久中文字幕| 亚洲一区电影777| 欧美日韩国产高清一区二区三区 | 亚洲综合免费观看高清完整版在线 | 综合自拍亚洲综合图不卡区| 99久久精品国产导航| 亚洲香肠在线观看| 欧美一区欧美二区| 国内精品国产成人国产三级粉色| 欧美极品美女视频| 色呦呦国产精品| 日韩av电影免费观看高清完整版| 日韩午夜在线观看视频| 国产精品1区2区| 亚洲同性同志一二三专区| 欧美精品自拍偷拍| 国产一区二区91| 一区二区三区鲁丝不卡| 日韩欧美一二三区| 成人黄色av网站在线|