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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? i2c.c

?? 51單片機
?? C
字號:
//--------------------------------------------------------------------------------
#include <c8051f340.h> 
#include <stdio.h>
typedef  unsigned int   uint ;     
typedef  unsigned char  uchar;             
#define  SYSCLK         12000000              // 12M內(nèi)部時鐘
#define  BAUDRATE        9600                 // Baud rate of UART in bps
sbit SDA = P1^0;
sbit SCL = P1^1;
uchar  buffer[16];    //數(shù)據(jù)存儲器

bit  Ack(void); /*應答位*/
bit  NAck(void);     //無應答位
void delay();        //長延時
void UART0_Init (void);   //UART Init
void Start(void); /*起始條件*/
void Stop(void); /*停止條件*/
void Send(uchar Data); /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/
uchar Read(void); /*讀一個字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/
void OSCILLATOR_Init (void);   //內(nèi)部振蕩器初始化
void PORT_Init (void);         //I/O初始化
void wait(int n);              //精確延時
int  I2cReadWriteZL(int mode,unsigned char ChipAddress,unsigned char *Data,int NbData);
void outputchar(uint order);
void selectout(uint dat);



void main (void)
{  
   uchar  i;   
   uchar  deviceAddr=0x1C;
   uchar  dat[2]={0x14,0xC0};
   uchar  ucBuffer[3]={0xFF};


   PCA0MD &= ~0x40;                    // WDTE = 0 (clear watchdog timer
                                       // enable)

   PORT_Init();                        // Initialize Port I/O
   OSCILLATOR_Init ();                 // Initialize Oscillator
  
   UART0_Init();                       //Initialize  UART0

   delay();
   delay();
 

   
 
}




void PORT_Init (void)
{

   P1MDOUT &= 0x00;                    // Enable UTX as push-pull output
   P0MDOUT |= 0x10;  
   XBR1    = 0x40;                     // Enable crossbar and enable
   XBR0     = 0x01;                    // Enable UART on P0.4(TX) and P0.5(RX)                     
                                       // weak pull-ups
}


void OSCILLATOR_Init (void)
{
   OSCICN |= 0x03;                     // Configure internal oscillator for
                                       // its maximum frequency
   RSTSRC  = 0x04;                     // Enable missing clock detector
}

void Start(void) /*起始條件*/

{
SDA=1;

SCL=1;

wait(50);

SDA=0;

wait(50);

}


void Stop(void) /*起始條件*/

{

SDA=0;

SCL=1;

wait(50);

SDA=1;

wait(50);


}




void UART0_Init (void)
{
   SCON0 = 0x10;                       // SCON0: 8-bit variable bit rate
                                       //        level of STOP bit is ignored
                                       //        RX enabled
                                       //        ninth bits are zeros
                                       //        clear RI0 and TI0 bits
   if (SYSCLK/BAUDRATE/2/256 < 1) {
      TH1 = -(SYSCLK/BAUDRATE/2);
      CKCON &= ~0x0B;                  // T1M = 1; SCA1:0 = xx
      CKCON |=  0x08;
   } else if (SYSCLK/BAUDRATE/2/256 < 4) {
      TH1 = -(SYSCLK/BAUDRATE/2/4);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 01                  
      CKCON |=  0x01;
   } else if (SYSCLK/BAUDRATE/2/256 < 12) {
      TH1 = -(SYSCLK/BAUDRATE/2/12);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 00
   } else {
      TH1 = -(SYSCLK/BAUDRATE/2/48);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 10
      CKCON |=  0x02;
   }

   TL1 = TH1;                          // Init Timer1
   TMOD &= ~0xf0;                      // TMOD: timer 1 in 8-bit autoreload
   TMOD |=  0x20;                       
   TR1 = 1;                            // START Timer1
   TI0 = 1;                            // Indicate TX0 ready
}
/*------長延時-----*/
void delay(void)
{  
int  i,j;
for(i=255;i>0;i--)
for(j=255;j>0;j--)
;
}


void wait(int n)               //延長n個系統(tǒng)時鐘
{
for(;n>0;n--)
;
}


void SEND_0(void) /*發(fā)送0比特*/
{
  SCL=0;           //獲取總線控制權(quán)
  SDA=0;           //發(fā)送數(shù)據(jù)
  SCL=1;
  wait(50);        //延時  確保從機讀取數(shù)據(jù)  具體時間視系統(tǒng)時鐘而定
  SCL=0;
  wait(20);         //延時
}


void SEND_1(void)               /*發(fā)送比特1*/
{
  SCL=0;
  SDA=1;
  SCL=1;
  wait(50);
  SCL=0;
  wait(20);
}


void Send(uchar Data)           /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/

{

 char i;
  for(i=0;i<8;i++)
  {
  if((Data<<i)&0x80)
    SEND_1();        
  else
    SEND_0();
  }
}

uchar Read(void)                 /*讀一個字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/

{
  bit F0;
  char b=0,i;
  for(i=0;i<8;i++)
  {
    SDA=1;     /*釋放總線*/
    SCL=1;     /*接受數(shù)據(jù)*/
    wait(10);  //等待數(shù)據(jù)建立
    F0=SDA;    //讀取數(shù)據(jù)
    if(F0==1)   //判斷存儲
    {
       b=b<<1;
       b=b|0x01;
    }
    else
       b=b<<1;
	   wait(20);
       SCL=0;
	   wait(10);
   }
  return b;

}



bit Ack(void) /*應答位*/

{
  uchar w=40;    //等待時間值
  bit F0=1;      //標志位
  SDA=1;
  SCL=1;
  wait(10);
  while(--w&&F0)  //讀取應答位
  F0=SDA;         
  wait(20);
  SCL=0;
  return F0;
} 


/*無應答數(shù)據(jù)位發(fā)送子程序*/

bit NAck(void) 

{

bit s=0;

SCL=0;

wait(5);

SCL=1;

SDA=1;

wait(20);

s=SDA;

wait(40);

SCL=0;
return !s;
}


/*------底層I2C讀寫子程序-----
函數(shù)為單主機主控發(fā)送接受子程序,該程序使用時總線上不可有其他主機。。。。
函數(shù)參數(shù)設(shè)置為   wr_mode--讀寫模式    char_slv_addr--從機地址    *dat--數(shù)據(jù)首地址     len----數(shù)據(jù)長度  
數(shù)據(jù)地址的第一個字節(jié)一般為寄存器的地址
寫數(shù)據(jù)時--在上層函數(shù)中需要把被寫寄存器地址寫入*dat的第一個字節(jié)   寫入數(shù)據(jù)從第二個字節(jié)開始  寫入字節(jié)數(shù)不多于16個
讀數(shù)據(jù)時--需要讀取的寄存器地址存放在第一個字節(jié)中,讀取的數(shù)據(jù)存放在第一個字節(jié)中,讀取的數(shù)據(jù)會覆蓋原寄存器的地址
讀模式專用于10313和10039器件,其格式為
--發(fā)送開始標志
--發(fā)送從機地址(寫形式)
--應答位
--發(fā)送寄存器地址
--應答位
--發(fā)送開始標志
--發(fā)送從機地址(讀模式)
------------------
--應答位
--讀取寄存器數(shù)據(jù)
----------------
--無應答位
--結(jié)束標志。
----------------------------------------------------------------------------------------------------------------*/
int I2cReadWriteZL(int wr_mode, char slv_addr, char *dat, int len)
{
    uchar i;
	if (wr_mode == 1)      //判斷讀寫功能
	{
    Start();               //開始標志
    Send(slv_addr);        //發(fā)送從機地址
    for(i=0;i<len;i++)
    {
    if(Ack())              //讀取應答位
	return 1;
    Send(*dat);            //發(fā)送數(shù)據(jù)
    ++dat;
    }
    NAck();
    Stop();                 //結(jié)束標志  
    if(i==len)    //成功
        return 0;
    } 
	
	
	else                          //數(shù)據(jù)讀取
	{
      Start();                    //開始標志位
      Send(slv_addr);             //從機地址
      Ack();
      Send(*dat);                  //數(shù)據(jù)發(fā)送--寄存器地址
      Ack();
      Start();                     //開始標志
      Send(slv_addr+1);            //從機地址
      for(i=0;i<len;i++)
      {
      if (Ack())                    //應答位
	  return 1;
      *dat=Read();                  //數(shù)據(jù)讀取
      ++dat;
      }
      NAck();
      Stop();                        //結(jié)束標志
      if(i==len)     //成功
            return 0;
	
	}
	
	return 1;         //失敗
}


/*------輸出字符形式數(shù)據(jù)---
數(shù)據(jù)以ASCII的形式輸出  
------------------------------*/
void outputchar(uint order)
{
selectout(order/16);

selectout(order%16);
}


/*獲得的數(shù)據(jù)判斷--以確定輸出字符
---------------------------------*/
void selectout(uint dat)
{
switch(dat)
{
case 0:printf("%c",'0');
break;
case 1:printf("%c",'1');
break;
case 2:printf("%c",'2');
break;
case 3:printf("%c",'3');
break;
case 4:printf("%c",'4');
break;
case 5:printf("%c",'5');
break;
case 6:printf("%c",'6');
break;
case 7:printf("%c",'7');
break;
case 8:printf("%c",'8');
break;
case 9:printf("%c",'9');
break;
case 10:printf("%c",'A');
break;
case 11:printf("%c",'B');
break;
case 12:printf("%c",'C');
break;
case 13:printf("%c",'D');
break;
case 14:printf("%c",'E');
break;
case 15:printf("%c",'F');
break;
default:printf("error");
}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级午夜免费电影| 国产精品综合一区二区三区| 欧美一级片在线观看| jizzjizzjizz欧美| 热久久久久久久| 中文字幕一区在线| 欧美tickle裸体挠脚心vk| 欧美影视一区在线| 国产 日韩 欧美大片| 日韩1区2区日韩1区2区| 亚洲色图.com| 国产精品色呦呦| 欧美大片免费久久精品三p| 日本久久一区二区| 丰满白嫩尤物一区二区| 精品一区免费av| 日精品一区二区三区| 亚洲婷婷综合久久一本伊一区| 欧美成人高清电影在线| 欧美人牲a欧美精品| 色悠悠久久综合| 成人综合在线视频| 精品在线一区二区| 五月婷婷综合网| 亚洲资源中文字幕| 亚洲丝袜另类动漫二区| 久久久高清一区二区三区| 91精品久久久久久久91蜜桃| 欧美日韩一区视频| 欧美体内she精视频| 一本色道a无线码一区v| 成人99免费视频| 国产91精品一区二区麻豆网站 | 日韩精品成人一区二区在线| 亚洲精品日韩专区silk| 亚洲激情综合网| 亚洲美女免费在线| 亚洲精品中文在线观看| 18成人在线视频| 亚洲天天做日日做天天谢日日欢| 国产精品女主播在线观看| 欧美国产一区二区| 欧美国产欧美综合| 国产日产欧美一区| 中文一区二区完整视频在线观看| 国产亚洲欧洲997久久综合| 国产日产亚洲精品系列| 国产精品妹子av| 欧美国产综合一区二区| ...中文天堂在线一区| 亚洲日本中文字幕区| 一区二区在线免费观看| 亚洲伊人色欲综合网| 五月激情综合网| 麻豆成人综合网| 国产一区二区剧情av在线| 国产精品1024| 91小视频在线观看| 欧美日韩国产一区二区三区地区| 欧美日韩高清一区二区不卡| 日韩一区二区精品在线观看| 久久男人中文字幕资源站| 国产精品免费av| 亚洲国产aⅴ成人精品无吗| 日韩综合小视频| 国产麻豆午夜三级精品| av在线这里只有精品| 欧美日韩亚洲综合一区 | 欧美亚洲国产怡红院影院| 在线成人av网站| 精品国产乱码久久久久久图片 | 伦理电影国产精品| 国产成人免费网站| 色噜噜夜夜夜综合网| 日韩亚洲欧美在线观看| 国产午夜精品久久久久久免费视 | 亚洲精品在线免费观看视频| 亚洲国产高清在线观看视频| 亚洲精品一二三区| 日本成人在线视频网站| 成人禁用看黄a在线| 欧美体内she精高潮| 久久蜜桃av一区二区天堂 | 91精品国产综合久久久蜜臀图片 | 99国产精品久久久久久久久久| 欧美日韩你懂得| 欧美激情在线一区二区| 偷拍一区二区三区四区| 国产成人综合在线播放| 欧美日韩亚洲综合一区二区三区| 国产三级精品三级在线专区| 亚洲国产精品久久久男人的天堂| 国产成人亚洲精品青草天美| 欧美日韩一级片在线观看| 国产三级精品视频| 日韩电影在线看| 色婷婷精品大在线视频| 久久丝袜美腿综合| 亚洲mv在线观看| 91麻豆国产福利在线观看| 精品国产乱码久久久久久牛牛 | 精品无人区卡一卡二卡三乱码免费卡 | 蜜臀a∨国产成人精品| 99国产精品国产精品毛片| 欧美成人午夜电影| 亚洲综合一二三区| 国产成人av电影在线| 日韩欧美二区三区| 五月天激情综合网| 在线观看日韩av先锋影音电影院| 国产亚洲女人久久久久毛片| 蜜臀精品一区二区三区在线观看| 91久久精品网| 中文字幕制服丝袜成人av | ㊣最新国产の精品bt伙计久久| 久久黄色级2电影| 在线电影欧美成精品| 一区二区三区免费看视频| 成人a区在线观看| 久久久久久久精| 久久69国产一区二区蜜臀 | 亚洲欧洲99久久| 国产成人av网站| 2020国产精品久久精品美国| 免费精品视频在线| 欧美一区二区视频网站| 午夜视频在线观看一区二区| 欧美羞羞免费网站| 亚洲精品成人悠悠色影视| 99精品桃花视频在线观看| 亚洲国产精品av| 成人福利视频在线| 中文字幕欧美日本乱码一线二线 | 99精品久久只有精品| 国产精品久久久久久久岛一牛影视| 国产一区二区三区四区五区美女 | 中文字幕欧美一区| 成人91在线观看| 亚洲天堂成人在线观看| 色悠久久久久综合欧美99| 亚洲激情成人在线| 91成人网在线| 五月天丁香久久| 日韩欧美国产精品一区| 久久99国内精品| 国产日韩欧美麻豆| 成人激情黄色小说| 亚洲天堂2016| 欧美亚一区二区| 人妖欧美一区二区| 精品国产乱码久久久久久蜜臀| 国产麻豆视频精品| 国产精品二区一区二区aⅴ污介绍| 99在线精品免费| 亚洲最大成人网4388xx| 欧美肥胖老妇做爰| 国产一区二三区| 中文字幕制服丝袜一区二区三区| 色av一区二区| 日韩精品亚洲专区| 久久久久99精品国产片| 成av人片一区二区| 亚洲综合免费观看高清完整版| 欧美日韩免费视频| 国产一区二区三区四| 国产精品久久久久久久裸模| 精品视频在线免费观看| 久久er精品视频| 国产精品对白交换视频 | eeuss影院一区二区三区| 亚洲一区二区三区四区不卡| 91精品久久久久久久99蜜桃 | 日本三级亚洲精品| 国产色婷婷亚洲99精品小说| 色爱区综合激月婷婷| 老司机免费视频一区二区三区| 国产丝袜欧美中文另类| 欧美午夜精品电影| 激情综合网天天干| 亚洲黄色性网站| 日韩女优av电影| 色视频一区二区| 久久99这里只有精品| 亚洲欧美偷拍三级| 日韩精品一区二区在线观看| 91麻豆成人久久精品二区三区| 亚洲va韩国va欧美va| 亚洲国产激情av| 91精品国产91综合久久蜜臀| 国产91露脸合集magnet| 日韩精品免费视频人成| 国产精品午夜久久| 欧美日韩成人高清| 成人激情黄色小说| 美女视频一区在线观看| 亚洲黄色在线视频| 中文字幕精品一区二区三区精品| 欧美一区二区三区系列电影| 成人av在线播放网址| 美女视频免费一区|