欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: stc12c5608ad I2c學習筆記 含程序 [打印本頁]

作者: 51黑mcu    時間: 2016-6-18 01:47
標題: stc12c5608ad I2c學習筆記 含程序
        開場白------本人年過五十二了年邁的父母已經離去。孩子也已經工作三年也不用我多余操心 。小生意也清淡這下算有時間來搗鼓搗鼓我的業余愛好,本人愚笨沒有棋牌類的大眾愛好,駕車技術也不好自然自駕游就沒興趣了。想來想去還是做一個老宅男在家里做一些小電路實驗。這也算滿足自己的好奇心吧。動手動腦遠離老年癡呆癥哈哈哈哈。。。。  由于從小就愛好自然電子垃圾很多于是開始了。。。。。
      言歸正傳,想來想去還是從單片機I2c開始吧。找到吃灰的stc12c5608ad ,洞洞板,于是乎搭建最小系統,下載軟件就開始I2c 之旅。選stc主要是下載方便,一個usb轉串口就可以下載了。
     先是看I2c的協議,開始不太明白,看了幾天有了些理解,時序很重要弄清楚了。對今后的實驗有好處。語言就用c51,編譯器用keil
編了幾段程序試了一下基本按照我的思路運行。注意的事項是,啟動器件,器件地址,讀寫命令。
//***********I2C********* //
#include <STC12C56.H>      
int k,i,j,n; //定義全局變量
void yanshi() ; // 延時程序
void qidong();  //啟動程序
void pz();  //器件地址
void songshu();  // 送器件地址
sbit sda=P2^4;
sbit scl=P2^5; void songshu() //送器件地址
{     int b, a=0x80,c=0xa0 ,d=0xff;
      scl=0;    //這一定要
      yanshi() ;
       for(b=0;b<8;b++)   //要送數據長度為8位/
      {   if((c<<b)&0x80) //判斷發送位/   
           sda=1;      
           else  sda=0;
           yanshi( );
           P20=0;//送一個數閃一次
            scl=1 ;      
            yanshi();      
            scl=0;
            P20=1;                                         
                                  }
            yanshi();
            sda=1;
            yanshi();
             scl=1;
            P20=0;
            yanshi();
            if(P24==0)
              P20=0;   //方便觀察應答
              else P20=1;
                                                          }
void pz() //基礎實驗,死辦法一個個的送,在第9個上會收到應答
{  scl=0;            //1
   yanshi();
    sda=1;
    P20=0;
    yanshi();
     P20=1;
     scl=1;
     yanshi();
     scl=0;              //2
      yanshi();
      sda=0;
      P20=0;
     yanshi();
      P20=1;
      scl=1;
     yanshi();
     scl=0;
       yanshi(); //3
      sda=1;
      P20=0;
      yanshi();
      P20=1;
       scl=1;
      yanshi();

    scl=0;
   yanshi();
    sda=0;      //4
    P20=0;
    yanshi();
    P20=1;
     scl=1;
    yanshi();

    scl=0;
yanshi();
    sda=0;   //5
    P20=0;
yanshi();
P20=1;
scl=1;
yanshi();

scl=0;
yanshi();
    sda=0;  //6
    P20=0;
yanshi();
P20=1;
scl=1;
yanshi();

scl=0;
yanshi();
    sda=0;
    P20=0;     //7
yanshi();
P20=1;
scl=1;
yanshi();

    scl=0;
yanshi();
    sda=1;
    P20=0;     //8
yanshi();
P20=1;
scl=1;
yanshi();
scl=0;
yanshi();
sda=1;      
yanshi();
scl=1;
    if(P24==0)
P20=0;     //9
else  P20=1;
                         }
void yanshi()//延時程序
{  for(n=1;n<=1000;n++)
  {  P21=0;
    for(j=1;j<=10;j++)
     P21=1;
    }     
       }

  void qidong()  //啟動程序

  {     scl=1;
        sda=1;
       yanshi() ; // 調用延時程序
       sda=0;  
      yanshi();  
                      }
void main(void)
{      qidong();  //調用啟動   
        songshu();  
          while(1);
                              }

     程序中用了大量的延時是為了方便調試,在P20口接了一個發光管觀察,嘿嘿程序灌進去運行一下看見了。。。。。。明天繼續學習




作者: lb688    時間: 2016-6-18 12:53
學習學習
作者: 1678    時間: 2016-12-3 20:51
請問有stc12c5608ad的引腳圖嗎?
作者: 1678    時間: 2016-12-3 20:51
請問有stc12c5608ad的引腳圖嗎?
作者: 1678    時間: 2016-12-3 20:52
有的話可以發我一份嗎?

作者: 銀河系外的我    時間: 2018-11-12 11:39
我的uVison3 沒有12c5608ad的頭文件怎么辦?
作者: 大雨    時間: 2019-2-21 11:26
現在學習的怎么樣了?在嗎不見下文呀
作者: 3花木城    時間: 2022-1-8 22:34
有心人




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1