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

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

?? i2c_bb_pg_def.c

?? aduc834 iic 通訊 aduc834 iic 通訊
?? C
字號:
//        
      #include "ADUC834.h"
  	 #include<intrins.h> // 聲明了void _nop_(void);

    #include "i2c_bb_pg_dec.h"  
	sfr S1CONX = 0xB6  ;     // correct declaration of S1CON 
	  int h,j;
	 #define  DEV_ADR_WR  0xa0           // slave address + write_bit 
     #define  DEV_ADR_RD  0xa1           // slave address +  read_bit 
//............................................................................ 
//                  GLOBAL  VARIABLES
//............................................................................      
      unsigned char bdata eep_buf         ;      //   eeprom's data buffer  
            sbit shift7 = eep_buf^7       ;      //   bit7 of  data buffer
            sbit shift0 = eep_buf^0       ;      //   bit0 of  data buffer 
      
//...........................................................................
//           INITIALIZATION FUNCTIONS  
//...........................................................................
       void  ini_osc(void)     
    { // TRIM |= 0xc0         ;              
       PLLCON = 1;           // core clock = 6.291456MHz
  CFG834 = 0x01;        // enable internal XRAM
                           } 															  
  
       void  ini_i2c(void)     // I2C bit-bang init 
    {  SDA = 1   ; SCL = 1  ;  // SDA = SCL = 1 , pre-start condition 
                         }                            

       void  ini_com1(void)    // UART1's      init
    {   T3CON = 0x84;
    T3FD = 0x12;
    SCON = 0x52;
  //SBUF=0X41 ;  
                        }      

       void  ini_tim(void)     // Timers'  init
    {  TMOD = 0x22          ;  // T0,1 = MODE2 (8b auto-reload)  
                               // GATE0,1=0(delay timer_0 will start at TR0) 
                         }      
//.............................................................................  
//             I2C  ACCESS FUNCTIONS  DEFINITIONS 
//*****************************************************************************
             void i2c_start(void) 
           {   SDA = 1 ; SCL = 1 ;         // initial state of the I2C bus 
               dly_usec(7) ; SDA = 0 ;     // SCL=1 , SDA=0 after 7 usecs 
               dly_usec(5) ; SCL = 0 ;     // //鉗住I2C總線,準備發送或接收數據                       
                                        } 
//.............................................................................
             void i2c_stop(void) 
           {  SDA = 0 ;                    // SDA=0,SCL=0, initial state of I2C
              dly_usec(2) ; SCL = 1 ;      // SDA=0,SCL=1, after 2 usecs 
              dly_usec(6) ; SDA = 1 ;      // SDA=1,SCL=1, after other 5 usecs                     
                                     }   
//.............................................................................
             void nack_mcu(void) 
           { SDA = 1 ; dly_usec(3) ;     // SDA=1,SCL=0 for 3 usecs 
             SCL = 1 ; dly_usec(6) ;     // SDA=1,SCL=1 for 6 usecs ; +pulse SCL  
             SCL = 0 ; dly_usec(2) ;     // SDA=1,SCL=0,SCL stabilization 2us                     
                                      }
//............................................................................
             void  ack_mcu(void)
           { SDA = 0 ; dly_usec(3) ;     // SDA=0,SCL=0 for 3 usec 
             SCL = 1 ; dly_usec(6) ;     // +pulse SCL  for 6 usec
             SCL = 0 ; dly_usec(2) ;     // 2 usec stabilization for SCL 
             SDA = 1 ; dly_usec(2) ;     // prepare SDA for reception 
                                      }  
//............................................................................
             void i2c_wr(void)           // write an 8b streaming 
      { unsigned char bit_count = 0 ;    // bit counter for the 8b streaming 
        while(bit_count<8) 
        { dly_usec(3) ; SDA=shift7  ;    // SDA = bit_n of eeprom's data buffer 
          dly_usec(2) ; SCL=1       ;    // pulse high SCL 
          dly_usec(5) ; SCL=0       ;    // for 5 microseconds 
          eep_buf=eep_buf<<1        ;    // shift left 1bit the eep's data buf 
          bit_count++ ; dly_usec(2) ; }  // increment bit counter(repeat for 8b)
          SDA=1 ;   // rise-up SDA and program it as input //置時鐘線為高,通知被控器開始接收數據位
   
          dly_usec(3)               ;    // to read the ACK from the memory 
          SCL=1 ; dly_usec(5)       ;    // pulse high SCL for 5 useconds 
          SCL=0 ;     // program again SDA as open-drain out    //置時鐘線為低,準備接收數據位                          
                                        } 
//............................................................................
         unsigned char i2c_rd(void)      // read an 8b streaming 
      { unsigned char bit_count = 0 ;    // bit counter the 8b streaming 
        SDA=1 ;     // prepare SDA as input (=1) 
        while(bit_count<8)   
       { eep_buf=eep_buf<<1         ;    // shift left 1b eeprom data buffer
         dly_usec(4) ; SCL=1        ;    // rise-up SCL  //置時鐘線為高使數據線上數據有效        
         shift0=SDA ; dly_usec(4)   ;    // read bit_n from eeprom 
         SCL=0 ; dly_usec(2)        ;    // pulse SCL   
         bit_count++ ; dly_usec(2)  ; }  // increment bit counter(repeat for 8b) 
          return eep_buf ;    // SDA open drain(return data buf) 
                                        } 
//...........................................................................
      void i2c_rndwr(unsigned int eep_adr, unsigned char eep_data) 
      {  i2c_start()                ;    // START command 
         eep_buf = DEV_ADR_WR       ; 
         i2c_wr()                   ;    // write first slave adr + write_bit 
         eep_buf = eep_adr>>8       ; 
         i2c_wr()                   ;    // write the high_byte of the adr 
         eep_buf = eep_adr&0xff     ;      
         i2c_wr()                   ;    // write the  low_byte of the adr
         eep_buf = eep_data         ; 
         i2c_wr()                   ;    // write the data_character 
         i2c_stop()                 ;    // finally , STOP command 
         dly5ms()                   ;    // write cycle time after each byte  
                                        } 
//............................................................................
         void i2c_rndrd(unsigned int eep_adr,unsigned char *dst) 
      {  i2c_start()                ;  // START command 
         eep_buf = DEV_ADR_WR       ;      
         i2c_wr()                   ;  // write slave address + write_bit 
         eep_buf = eep_adr>>8       ; 
         i2c_wr()                   ;  // write the high_byte of the adr 
         eep_buf = eep_adr&0xff     ;      
         i2c_wr()                   ;  // write the  low_byte of the adr 
         i2c_start()                ;  // REPEATED START condition 
         eep_buf = DEV_ADR_RD       ;       
         i2c_wr()                   ;  // change the direction of the trsf 
         *dst = i2c_rd()            ;  // store the result in "dst"(<-eep_buf)
         nack_mcu()                 ;  // send a NACK from MCU to the memory 
         i2c_stop()                 ;  // finally , STOP command              
                                        } 
//............................................................................
  void i2c_pgwr(unsigned char *source,unsigned int eep_adr,unsigned char lofsstr)
  { 
   unsigned char k = 0              ;  // auxiliary counter 
   i2c_start()                      ;  // START command 
   eep_buf = DEV_ADR_WR             ; 
   i2c_wr()                         ;  // write SLAVE ADDRESS + wr_bit 
   eep_buf = eep_adr>>8             ;
// eep_buf = (eep_adr>>8)&0xff      ;  
   i2c_wr()                         ;  // write high address 
   eep_buf = eep_adr&0xff           ; 
   i2c_wr()                         ;  // write low address 
   while(k<lofsstr)
   { eep_buf = *source              ;  // load buffer from char string 
 //  eep_buf = source[k]            ; 
 //  eep_buf = *(source+k)          ; 
     i2c_wr()                       ;  // stream data in the memory 
     source++                       ;  // increment pointer 
	      k++                       ;  // increment counter 
                   }				   // do until end 
	 i2c_stop()                     ;  // STOP command 
	 dly5ms()                       ;  // final write cycle time 
                               }          
//............................................................................
  void i2c_pgrd(unsigned char *dest,unsigned int eep_adr,unsigned char lofdstr)
      {  unsigned char k = 0        ;  // auxiliary counter 
         i2c_start()                ;  // START command 
         eep_buf = DEV_ADR_WR       ;      
         i2c_wr()                   ;  // write slave address + write_bit 
         eep_buf = eep_adr>>8       ; 
         i2c_wr()                   ;  // write the high_byte of the adr 
         eep_buf = eep_adr&0xff     ;      
         i2c_wr()                   ;  // write the  low_byte of the adr 
         i2c_start()                ;  // REPEATED START condition 
         eep_buf = DEV_ADR_RD       ;       
         i2c_wr()                   ;  // change the direction of the trsf
         if(lofdstr==1)   ;            // if single byte string 
//         {;}                         // do nothing , the byte will be read
                                       // & the NACK will be sent at the end
         else 
	   { while(k<lofdstr-1)            // if length of the string > 1 
                                       // do for the first (lofdstr-1) bytes
       { *dest = i2c_rd()           ;  // read byte 
           ack_mcu()                ;  // send ACK, requesting more bytes 
           dest++ ; k++ ;     }     }  // increment pointer & counter 
           *dest = i2c_rd()         ;  // read the last byte 
           nack_mcu()               ;  // send the final NACK (for the last byte)    
           i2c_stop()         ;     }  // STOP transfer            

//****************************************************************************
//               AUXILIARY  FUNCTIONS  DEFINITIONS 
//****************************************************************************
   void dly_usec(unsigned char num_usec) // delay in micro-seconds  	
 {
 while(--num_usec);
 }

 //............................................................................
    void dly5ms(void)                 // 5 miliseconds delay 
  { unsigned char j = 30   ;      // 100 * 50usec = 5 msec 
    while(--j) { dly_usec(50)  ; }  
                                   }  
//............................................................................
  	   void dly50ms(void)               // 250 miliseconds delay 
  { unsigned char k = 10   ;      //  50 * 5 msec = 250 msec 
    while(--k) { dly5ms()      ; }    // usefull for messages' display
                                   }  
  
  
    void dly250ms(void)               // 250 miliseconds delay 
  { unsigned char k = 50     ;      //  50 * 5 msec = 250 msec 
    while(--k) { dly5ms()      ; }    // usefull for messages' display
                                   }  
//.............................................................................
    void dly1s(void)                  // 1 second delay  
  { dly250ms() ; dly250ms()    ;      // 4 * 250 ms = 1 second 
    dly250ms() ; dly250ms()    ;   }  // usefull for messages' display
//.............................................................................
       void tx_com1(unsigned char com1_buf)  // sends on UART1 line com1_buf  
       {                              //  TI1 = set in S1CON init 
//       while(!(S1CON&0x02))  ;      //  wait for TI_1 = 1 
//       S1CON &= 0xfd         ;      //  clear TI_1 
       
         SBUF = com1_buf      ;      //  write data in serial data buffer                 
         // SBUF=0X13;  
	   //SBUF=0X10;          
	                    }  
//*****************************************************************************          

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本午夜一区二区| 亚洲第四色夜色| 亚洲毛片av在线| 天天综合色天天综合色h| 91精品国产综合久久精品麻豆| 日韩一区二区视频| 亚洲黄色小视频| 成人看片黄a免费看在线| 国产精品自拍网站| 狠狠色狠狠色综合系列| 极品美女销魂一区二区三区| 99精品国产视频| 国产伦精品一区二区三区在线观看| 国产精品你懂的在线欣赏| 2023国产精品| 久久女同精品一区二区| 欧美一级生活片| 国产视频在线观看一区二区三区| 日韩毛片一二三区| 久久精品久久综合| 91在线看国产| 久久国产精品99精品国产| 麻豆国产91在线播放| 日韩欧美精品在线| 粉嫩av亚洲一区二区图片| 91小视频在线免费看| 激情综合网激情| 91亚洲精品一区二区乱码| 久久不见久久见中文字幕免费| 欧美日韩在线播放| 成人综合日日夜夜| 久久国产福利国产秒拍| 久久视频一区二区| 日韩免费看的电影| 不卡av免费在线观看| 精品国产伦一区二区三区观看体验 | 国产精品免费网站在线观看| 丝袜美腿亚洲综合| 国产偷v国产偷v亚洲高清| 日韩**一区毛片| 国产精品中文字幕日韩精品| 欧美一级午夜免费电影| 91麻豆视频网站| 成人av高清在线| 99热在这里有精品免费| 国产成人精品综合在线观看| 国产精品综合一区二区三区| 精品一区二区三区免费视频| 亚洲女与黑人做爰| |精品福利一区二区三区| 欧美精品三级日韩久久| 91麻豆视频网站| 成人小视频在线| 亚洲成人一区二区| 久久久久久久久久久久电影| 91久久奴性调教| 成人自拍视频在线观看| 国产日韩欧美在线一区| 亚洲丝袜自拍清纯另类| 欧美mv日韩mv亚洲| 91网站黄www| 成人理论电影网| 91福利区一区二区三区| 国产69精品久久久久毛片| 国产乱码一区二区三区| 麻豆一区二区三区| 日韩中文字幕区一区有砖一区| 亚洲一区二区综合| 欧美精品一区二区三| 国产精品高潮呻吟| 成人深夜视频在线观看| 欧美aaaaaa午夜精品| 日韩一卡二卡三卡国产欧美| 91久久久免费一区二区| 亚洲丝袜另类动漫二区| 美女国产一区二区三区| 欧美日高清视频| 免费一级欧美片在线观看| 在线成人午夜影院| 九九热在线视频观看这里只有精品| 91精品国产福利在线观看| 日韩和欧美一区二区三区| 国产偷国产偷精品高清尤物| 精品国产污污免费网站入口 | 国产一区不卡视频| 91影视在线播放| 天天综合日日夜夜精品| 国产高清在线精品| 亚洲精品视频自拍| 成人黄色综合网站| 国产人伦精品一区二区| 岛国精品一区二区| 久久久亚洲欧洲日产国码αv| 久久99精品一区二区三区三区| 97久久精品人人做人人爽| 一区二区三区四区精品在线视频 | 国产精品水嫩水嫩| 精品国产91九色蝌蚪| 国产一区二区三区国产| 日本亚洲欧美天堂免费| 亚洲自拍都市欧美小说| 欧美色欧美亚洲另类二区| 国产盗摄女厕一区二区三区| 午夜不卡av免费| 国产午夜亚洲精品午夜鲁丝片| 精品久久免费看| 久久久国产一区二区三区四区小说 | 亚洲激情欧美激情| 夜夜操天天操亚洲| 一区精品在线播放| 一区二区在线观看视频在线观看| 综合色天天鬼久久鬼色| 亚洲最新视频在线观看| 精品国产一二三区| 免费欧美日韩国产三级电影| 一区二区三区欧美视频| 欧美日韩亚洲国产综合| 日韩高清一区二区| 欧美一二三在线| 欧美剧在线免费观看网站 | 亚洲一区二区三区视频在线播放| 久久精品亚洲国产奇米99| 国产在线视频一区二区三区| 精品国产欧美一区二区| 成人99免费视频| 国产精品99久久久久久久vr| 丰满白嫩尤物一区二区| 国产亚洲欧美色| 精品一区二区三区在线观看| 日韩一区二区在线看| 秋霞电影网一区二区| 日韩一区二区在线观看视频 | 国产91综合网| 欧美另类videos死尸| 国产一区二区日韩精品| 日韩精品国产欧美| 国产麻豆视频精品| 91精品国产高清一区二区三区 | 欧美日韩国产成人在线91| 国产亚洲欧美中文| 久久爱www久久做| 精品久久一区二区三区| 亚洲亚洲人成综合网络| 91在线国产观看| 天天综合日日夜夜精品| 色999日韩国产欧美一区二区| 久久欧美一区二区| av动漫一区二区| 一级日本不卡的影视| 欧美亚洲综合色| 一区二区视频在线看| 91精品国产高清一区二区三区| 亚洲高清视频在线| 99re6这里只有精品视频在线观看| 精品成人免费观看| 麻豆精品视频在线观看视频| 欧美精品xxxxbbbb| 亚洲精品免费一二三区| 国产精品卡一卡二卡三| 五月婷婷另类国产| 久久综合综合久久综合| 精品国产乱码久久| 波多野结衣亚洲| 国产精一品亚洲二区在线视频| 8v天堂国产在线一区二区| 成人免费看黄yyy456| 亚洲美女免费在线| 欧美日韩卡一卡二| 日本午夜一区二区| 亚洲色图欧美激情| 欧美性色综合网| 亚洲在线一区二区三区| 欧美日韩精品三区| 美美哒免费高清在线观看视频一区二区| 久久久久久电影| 91麻豆精品秘密| 成人在线一区二区三区| 欧美日韩高清一区二区三区| 麻豆精品在线观看| 久久久综合精品| 欧美日韩视频第一区| 亚洲精品水蜜桃| 亚洲精品在线观看视频| 久久日一线二线三线suv| 一区二区三区四区蜜桃| 欧美激情资源网| 一区二区三区不卡视频 | 欧美高清www午色夜在线视频| 日韩欧美在线网站| 日韩网站在线看片你懂的| 91精品国产高清一区二区三区| 久久午夜国产精品| 亚洲最大的成人av| 美女网站在线免费欧美精品| 成人午夜免费电影| 欧美一个色资源| 亚洲欧美日韩成人高清在线一区| 亚洲自拍偷拍网站| 国产自产高清不卡| 日韩免费一区二区三区在线播放|