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

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

?? avr2464.c

?? 24c64 for avr c source code, you can change it for other 24xx other document is for 率值配料下位機程序
?? C
字號:
//******************************************************************* 
//********File name        :24C64 eeprom's write and read 
//********File create date :2008/5/27 
//********Design dept      :ATE  
//********Systm explain    :Atmage 88 ,8m/8 
//******************************************************************* 
#include "C.h" 
//******************************************************************* 
//上位機發送:"AA+55+讀取字節數高字節+讀取字節數低字節+CHKSUM"后, 
//下位機開始讀24C64,相應的字節數發送給上位機. 
//******************************************************************* 
//通信波特率:4800,N,8,1 內部時種分頻 
//******************************************************************* 
int  Eepaddress=0x0000;   //要讀取的24C64內部存貯器單元地址 
int  Eep_long;            //保存上位機發數來的,將要讀取的字節個數數據 
char Eepdata[32]; 
int  read_byte=32; 

int usart_bit=0;                      //計錄串口接收數據個數 
int step_bit_0=0; 

char command_dataH;        
char command_dataL; 
char RXD_chksum; 

//******************************************************************* 
void main() 
{ 
    Mcu_init(); 
    initial_usart(); 
    Sei(); 
    while(1) 
    { 
          if(step_bit_0==0x01)                           //上位機發送的命今接收成功 
                 { 
                      step_bit_0=0x00; 
                      char chksum_sum=0xAA+0X55+command_dataH+command_dataL; 
                      if(RXD_chksum==chksum_sum)         //whether the chksum is right of data,if the data is right for It's downflow,then return 
                      { 
                              Eepaddress=0x0000; 
                              Eep_long=command_dataH*256+command_dataL; 
                              // 以下程序如果上位機發送的要讀取的字節數小于32字節,程序單字節讀取.每次所讀取的數據放在Eepdata[0]中; 
                              //如果大于32字節按塊讀取,先讀32倍數的字節數,余數按單節讀取. 
                              //如果大于24C64的存貯器最大范圍(8192字節).下位機不讀取數取,也不發送. 
                              //******************************************** 
                              if(Eep_long<=32)           //小于32時,一位一位讀取 
                              { 
                                  for(int b=0;b<Eep_long;b++) 
                                      { 
                                          AT24C64_R(Eepaddress); 
                                          UDR0=Eepdata[0]; 
                                          while(!CHKBIT(UCSR0A,TXC0));//wait for sending 
                                          SETBIT(UCSR0A,TXC0); 
                                      } 
                              } 
                              else                       //大于32是按塊讀取 
                              { 
                                  if(!(Eep_long>8192))   //大于24C64讀取范圍時,不讀取數據,也不回復給上位機 
                                     { 
                                          for(int a=0;a<(Eep_long/32);a++) 
                                          { 
                                             AT24C64_RB(Eepaddress,read_byte); 
                                             for(int b=0;b<read_byte;b++) 
                                             { 
                                                UDR0=Eepdata[b]; 
                                                while(!CHKBIT(UCSR0A,TXC0));//wait for sending 
                                                SETBIT(UCSR0A,TXC0); 
                                             } 
                                          } 
                                          for(int b=0;b<(Eep_long%32);b++) 
                                          { 
                                             AT24C64_R(Eepaddress); 
                                             UDR0=Eepdata[0]; 
                                             while(!CHKBIT(UCSR0A,TXC0));//wait for sending 
                                             SETBIT(UCSR0A,TXC0); 
                                          } 
                                     } 
                              } 
                      } 
                 } 
          Nop(); 
    } 

} 


//******************************************************************** 
//串口通信說明: 
//串口通信:4800,N,8,1 
//接收中斷使能,允許發送和接收 
//******************************************************************** 
void initial_usart(void) 
    { 
      UBRR0H=0; 
      UBRR0L=12;        //BAUD 4800 
      UCSR0B=(1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);//ENABLE 
      UCSR0C=(3<<UCSZ00);//no check bit, 8 bits, 1 stop 
    } 

//******************************************************************* 
//引腳定義 
//******************************************************************* 
void  Mcu_init() 
{ 
    OUT_SDA; 
    OUT_SCL; 
} 

//******************************************************************** 
//接收數據中斷: 
//******************************************************************** 
#pragma vector=USART_RX_vect 
__interrupt 
void USART_RX(void) 
      {   
         unsigned char command=UDR0; 
         if(usart_bit==0) 
              { 
                if(command==0XAA) 
                usart_bit=1; 
                else 
                usart_bit=0; 
              } 
         else if(usart_bit==1) 
              { 
                if(command==0x55) 
                usart_bit=2; 
                else 
                usart_bit=0; 
              } 
         else if(usart_bit==2) 
              { 
                command_dataH=command; 
                usart_bit=3; 
              } 
         else if(usart_bit==3) 
              { 
                command_dataL=command; 
                usart_bit=4;      //只接收4個字節,如還有數據則從數據頭開始檢測 
              } 
         else if(usart_bit==4) 
              { 
                RXD_chksum=command; 
                step_bit_0=0x01; //接收成功 
                usart_bit=0;     //只接收5個字節,如還有數據則從數據頭開始檢測 
              } 
      } 


//******************************************************************* 
//單字節寫程序 
//PartAdd_W 為器件地址+寫命今 
//AT24C64_address為要操作的I2C芯片的內部存貯單元,為雙字節(24C64) 
//Data 為要寫入的數據 
//******************************************************************* 
void AT24C64_W(int AT24C64_address,int Data) 
{ 
                I2C_Start(); 
                I2C_Send_Byte(0xa0 ); 
                I2C_Send_Byte(AT24C64_address/256 ); 
                I2C_Send_Byte(AT24C64_address %256 ); 
                I2C_Send_Byte(Data); 
                I2C_Stop(); 
                Delay_N_mS(10);        
} 


//****************************************************************** 
//單字節讀程序: 
//AT24C64_address為要操作的I2C芯片的內部存貯單元,為雙字節(24C64) 
//****************************************************************** 
void AT24C64_R(int AT24C64_address) 
{ 
                I2C_Start(); 
                I2C_Send_Byte(0xa0); 
                I2C_Send_Byte(AT24C64_address/256 ); 
                I2C_Send_Byte(AT24C64_address % 256 ); 
                I2C_Start(); 
                I2C_Send_Byte(0xa1); 
                Eepdata[0]=I2C_Receive_Byte(); 
                I2C_Nack(); 
                I2C_Stop();      
                Eepaddress++;                //讀取一個字節時不需此步.調用完此子程序后.你所要讀取單元字節的數據已放入Eepdata[0].直接用 
} 


//******************************************************************** 
//32字節(塊)讀程序 
//******************************************************************** 
void AT24C64_RB(int AT24C64_address,int eep_byte) 
{ 
                I2C_Start(); 
                I2C_Send_Byte(0xa0); 
                I2C_Send_Byte(AT24C64_address/256 ); 
                I2C_Send_Byte(AT24C64_address%256 ); 
                I2C_Start(); 
                I2C_Send_Byte(0xa1); 
                for(int a=0;a<eep_byte;a++) 
                { 
                    Eepdata[a]= I2C_Receive_Byte(); 
                    I2C_Ack(); 
                    Eepaddress++;                     //地址加1 
                } 
                I2C_Stop();             
} 


//******************************************************************** 
//接收數據: 
//用來接收數據 
//******************************************************************** 
char I2C_Receive_Byte(void) 
{ 
    char Data_C=0; 
    char Bitcont; 
    IN_SDA;                //切換數據線為輸入狀態 
    for(Bitcont=0;Bitcont<8;Bitcont++) 
    { 
        Nop(); 
        SCL_0; 
        Delay_10_uS(); 
        SCL_1; 
        Delay_10_uS(); 
        Data_C=Data_C<<1; 
        if(!(CHK_SDA==0)) 
           Data_C=Data_C+1; 
        Nop(); 
        Nop(); 
    } 
    SCL_0; 
    Delay_10_uS(); 
    OUT_SDA;             //恢復數據線為輸出狀態 
    return Data_C; 
} 

//******************************************************************** 
//*起始說明:                                                         * 
//*在時鐘為高時,數據線由高變低.                                      * 
//******************************************************************** 
void I2C_Start(void) 
{ 
        Delay_10_uS(); 
        SDA_1;//        I2C_SDA =1;        
        Delay_10_uS(); 
        SCL_1;//        I2C_SCK =1; 
        Delay_10_uS(); 
        SDA_0;//        I2C_SDA = 0; 
        Delay_10_uS(); 
        SCL_0;//        I2C_SCK = 0; 
        Delay_10_uS(); 
} 


//******************************************************************** 
//*結束說明:                                                         * 
//*在時鐘為高時,數據線由低變高                                       * 
//******************************************************************** 
void  I2C_Stop(void) 
{ 
        Delay_10_uS(); 
        SDA_0;//        I2C_SDA = 0; 
        Delay_10_uS(); 
        SCL_1;//        I2C_SCK = 1; 
        Delay_10_uS(); 
        SDA_1;//        I2C_SDA = 1; 
        Delay_10_uS(); 
} 


//******************************************************************** 
//主機發送應答位 
//******************************************************************** 
void I2C_Ack(void) 
{ 
        Delay_10_uS(); 
        SDA_0;//        I2C_SDA=0; 
        Delay_10_uS(); 
        SCL_1;//        I2C_SCK=1; 
        Delay_10_uS(); 
        SCL_0;//        I2C_SCK=0; 
        Delay_10_uS(); 
} 

//******************************************************************** 
//主機發送非應答位 
//******************************************************************** 
void I2C_Nack(void) 
{ 
        Delay_10_uS(); 
        SDA_1;//        I2C_SDA=1; 
        Delay_10_uS(); 
        SCL_1;//        I2C_SCK=1; 
        Delay_10_uS(); 
        SCL_1;//        I2C_SCK=0; 
        Delay_10_uS(); 
} 

//******************************************************************** 
//*發送說明: 
//*在發送數據時,時鐘線在高時,數據不能變化,只有在時鐘為低時,數據才可變* 
//******************************************************************** 
void I2C_Send_Byte(char d) 
{ 
        char i = 8; 
        while( i-- ) 
        { 
                Delay_10_uS(); 
                if ( d &0x80 )   SDA_1;//I2C_SDA =1; 
                else             SDA_0;//I2C_SDA =0; 
                Delay_10_uS(); 
                SCL_1;//                I2C_SCK = 1; 
                Delay_10_uS(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                Nop(); 
                SCL_0;//                I2C_SCK = 0; 
                d = d << 1; 
        } 
        Delay_10_uS(); 
        SDA_1;//        I2C_SDA = 1; 
        Delay_10_uS(); 
        SCL_1;//        I2C_SCK = 1; 
        Delay_10_uS(); 
        Nop(); 
        Nop(); 
        Nop(); 
        Nop(); 
        Nop(); 
        Nop(); 
        Nop(); 
        Nop(); 
        Nop(); 
        SCL_0;//        I2C_SCK =0; 
        //Delay_10_uS(); 
} 

//******************************************************************** 
//延時 
//******************************************************************** 
void  Delay_10_uS(void) 
{ 
        Nop(); 
        Nop(); 
} 

//******************************************************************** 
//延時程序 
//******************************************************************** 
void Delay_N_mS( int n_milisecond)  /* n mS delay */ 
{ 
        char i; 
        while(n_milisecond--) 
        { 
                i=8; 
                while(i--); 
        } 
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色视频一区| 欧美日韩国产电影| 成人动漫中文字幕| 波多野结衣91| 色国产综合视频| 93久久精品日日躁夜夜躁欧美| thepron国产精品| 色综合天天综合狠狠| 欧美伊人久久久久久久久影院 | 欧美一区二区三区色| 日韩1区2区日韩1区2区| 久久国产尿小便嘘嘘尿| 久久9热精品视频| 成人午夜精品在线| 91小视频在线| 91麻豆精品国产91久久久久| 精品国产三级电影在线观看| 国产校园另类小说区| 久久精品夜夜夜夜久久| 亚洲色图另类专区| 肉色丝袜一区二区| 国产精品一区二区三区99| 99久久er热在这里只有精品15| 色婷婷av一区二区三区大白胸| 欧美日韩成人综合天天影院| 欧美三级中文字| 国产亚洲午夜高清国产拍精品| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲国产高清在线| 亚洲国产综合91精品麻豆| 老鸭窝一区二区久久精品| 高清不卡在线观看av| 色婷婷综合五月| 欧美成人猛片aaaaaaa| 欧美一级在线免费| 亚洲免费观看高清在线观看| 日本sm残虐另类| 国产成人一区在线| 国产一区高清在线| 欧美三级韩国三级日本一级| 久久精品网站免费观看| 日韩av一级片| 欧美日韩三级一区| 26uuu亚洲| 丝袜美腿高跟呻吟高潮一区| 精品一区二区三区视频 | 国产精品一区二区黑丝| 在线中文字幕一区| 中文字幕乱码日本亚洲一区二区 | caoporen国产精品视频| www欧美成人18+| 国内精品视频666| 国产婷婷一区二区| aaa国产一区| 亚洲午夜激情av| 精品乱码亚洲一区二区不卡| 岛国精品一区二区| 亚洲免费看黄网站| 日韩一区二区免费在线观看| 国产高清亚洲一区| 亚洲精品少妇30p| 91精品黄色片免费大全| 国产精品99久久久久久似苏梦涵 | 在线观看日韩一区| 午夜视频在线观看一区| 精品国产乱码久久久久久闺蜜| 成人一区在线看| 天堂午夜影视日韩欧美一区二区| 精品国产露脸精彩对白| 日本精品裸体写真集在线观看| 午夜免费欧美电影| 国产欧美日韩另类视频免费观看 | 五月天视频一区| 日本一区二区三区久久久久久久久不 | 国产日韩三级在线| 欧美日韩激情一区二区| 国产激情一区二区三区桃花岛亚洲| 亚洲欧美日韩综合aⅴ视频| 欧美一区二区精品| 色网站国产精品| 国内外成人在线视频| 亚洲一区二区三区国产| 欧美激情一区二区三区不卡| 在线综合+亚洲+欧美中文字幕| 成人午夜av电影| 久久国产成人午夜av影院| 亚洲色图另类专区| 国产三级欧美三级日产三级99| 国产色产综合色产在线视频| 5566中文字幕一区二区电影| 91美女福利视频| 丁香婷婷深情五月亚洲| 免费av网站大全久久| 亚洲综合激情另类小说区| 国产丝袜美腿一区二区三区| 欧美一级高清片在线观看| 色吧成人激情小说| 91丝袜呻吟高潮美腿白嫩在线观看| 久久国产精品一区二区| 婷婷六月综合网| 亚洲综合在线五月| 亚洲欧洲av在线| 中文久久乱码一区二区| 国产午夜精品美女毛片视频| 精品国产乱码久久久久久浪潮| 91麻豆精品国产自产在线观看一区 | 欧美中文字幕一二三区视频| 国产经典欧美精品| 国产在线播放一区二区三区| 奇米色一区二区| 亚洲成在人线免费| 午夜日韩在线观看| 婷婷开心久久网| 午夜一区二区三区在线观看| 亚洲一区欧美一区| 亚洲乱码中文字幕综合| 中文欧美字幕免费| 国产精品久久久久久久久果冻传媒 | 国产福利不卡视频| 国产成人av电影在线播放| 国产精品99久| 国产成人午夜高潮毛片| 国产成人在线影院| 国产在线精品一区二区不卡了| 国产在线一区观看| 国产成人精品亚洲日本在线桃色| 久久91精品久久久久久秒播| 国产酒店精品激情| 不卡的av中国片| 欧美色图激情小说| 欧美一区二区三区日韩视频| 日韩欧美你懂的| 欧美tickling网站挠脚心| 欧美mv日韩mv| 一区二区三区在线高清| 亚洲男同1069视频| 婷婷国产v国产偷v亚洲高清| 毛片av中文字幕一区二区| 国产精品99久久久久久久vr| 91小视频免费观看| 欧美精品少妇一区二区三区| 欧美va天堂va视频va在线| 亚洲国产经典视频| 亚洲午夜激情网页| 国产揄拍国内精品对白| 色综合久久中文字幕| 欧美精品日日鲁夜夜添| 久久综合视频网| 国产精品久久久久久久第一福利| 亚洲韩国精品一区| 国产精品99久久久久久似苏梦涵| 91麻豆成人久久精品二区三区| 欧美精品久久一区| 亚洲国产激情av| 日本vs亚洲vs韩国一区三区二区 | 国产欧美日韩不卡免费| 亚洲黄一区二区三区| 韩国三级中文字幕hd久久精品| 97精品国产露脸对白| 欧美丰满高潮xxxx喷水动漫| 国产午夜亚洲精品理论片色戒| 亚洲一区二区在线视频| 国产高清一区日本| 欧美一区二区三区视频在线观看| 国产精品国模大尺度视频| 日本麻豆一区二区三区视频| av欧美精品.com| 久久久久久免费毛片精品| 亚洲福利视频导航| 大胆欧美人体老妇| 欧美电影免费观看完整版| 一区二区三区四区高清精品免费观看| 蜜桃免费网站一区二区三区| 91啪九色porn原创视频在线观看| 精品免费视频.| 五月激情六月综合| 91蜜桃免费观看视频| 欧美国产1区2区| 国产一区二三区| 欧美一区二区三区喷汁尤物| 亚洲综合男人的天堂| 99在线热播精品免费| 国产亚洲欧美日韩在线一区| 蜜臀av性久久久久蜜臀av麻豆| 欧美日韩中文字幕一区| 一区二区三区国产精品| 91视频在线观看| 亚洲视频免费观看| eeuss鲁一区二区三区| 欧美精彩视频一区二区三区| 国产综合成人久久大片91| 日韩一区二区在线播放| 偷拍与自拍一区| 欧美日韩在线免费视频| 亚洲一区二区在线播放相泽| 色八戒一区二区三区| 亚洲影院理伦片| 欧美日韩另类国产亚洲欧美一级| 亚洲精品国产成人久久av盗摄| 精品欧美一区二区久久|