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

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

?? spi_ee_f30x.c

?? C8051系列單片機中SPI總線讀寫的例程
?? C
?? 第 1 頁 / 共 2 頁
字號:
// P0.7 - 
//
void PORT_Init (void)
{
   XBR0    =  0x0F;                    // skip SPI pins in XBAR
   XBR1    =  0x03;                    // UART0 TX and RX pins enabled
   XBR2    =  0x40;                    // Enable crossbar and weak pull-ups
   P0MDOUT |= 0x5D;                    // enable TX0, MOSI, SCK, LED and NSS as
                                       // push-pull outputs
}

//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
//
// This routine initializes the system clock to use the internal 24.5 MHz clock
// as its clock source.
//
void SYSCLK_Init (void)
{

   OSCICN = 0x07;                      // select internal oscillator as SYSCLK
                                       // source
}

//-----------------------------------------------------------------------------
// UART0_Init
//-----------------------------------------------------------------------------
//
// Configure the UART0 using Timer1, for <BAUDRATE> and 8-N-1.
//
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 &= ~0x13;                  
      CKCON |= 0x10;                   // T1M = 1; SCA1:0 = xx
   } 
   else if (SYSCLK/BAUDRATE/2/256 < 4) 
   {
      TH1 = -(SYSCLK/BAUDRATE/2/4);
      CKCON &= ~0x13;
      CKCON |=  0x01;                  // T1M = 0; SCA1:0 = 01
   } 
   else if (SYSCLK/BAUDRATE/2/256 < 12) 
   {
      TH1 = -(SYSCLK/BAUDRATE/2/12);
      CKCON &= ~0x13;                  // T1M = 0; SCA1:0 = 00
   } 
   else 
   {
      TH1 = -(SYSCLK/BAUDRATE/2/48);
      CKCON &= ~0x13;
      CKCON |=  0x02;                  // T1M = 0; SCA1:0 = 10
   }

   TL1 = 0xff;                         // set Timer1 to overflow immediately
   TMOD |= 0x20;                       // TMOD: timer 1 in 8-bit autoreload
   TMOD &= ~0xD0;                      // mode
   TR1 = 1;                            // START Timer1
   TI0 = 1;                            // Indicate TX0 ready
}

//-----------------------------------------------------------------------------
// Timer0_ms
//-----------------------------------------------------------------------------
//
// Configure Timer0 to delay <ms> milliseconds before returning.
//
void Timer0_ms (unsigned ms)
{
   unsigned i;                         // millisecond counter

   TCON  &= ~0x30;                     // STOP Timer0 and clear overflow flag
   TMOD  &= ~0x0f;                     // configure Timer0 to 16-bit mode
   TMOD  |=  0x01;
   CKCON |=  0x08;                     // Timer0 counts SYSCLKs

   for (i = 0; i < ms; i++)            // count milliseconds
   {                                   
      TR0 = 0;                         // STOP Timer0
      TH0 = (-SYSCLK/1000) >> 8;       // set Timer0 to overflow in 1ms
      TL0 = -SYSCLK/1000;
      TR0 = 1;                         // START Timer0
      while (TF0 == 0);                // wait for overflow
      TF0 = 0;                         // clear overflow indicator
   }
}

//-----------------------------------------------------------------------------
// Timer0_us
//-----------------------------------------------------------------------------
//
// Configure Timer0 to delay <us> microseconds before returning.
//
void Timer0_us (unsigned us)
{
   unsigned i;                         // millisecond counter

   TCON  &= ~0x30;                     // STOP Timer0 and clear overflow flag
   TMOD  &= ~0x0f;                     // configure Timer0 to 16-bit mode
   TMOD  |=  0x01;
   CKCON |=  0x08;                     // Timer0 counts SYSCLKs

   for (i = 0; i < us; i++) {          // count microseconds
      TR0 = 0;                         // STOP Timer0
      TH0 = (-SYSCLK/1000000) >> 8;    // set Timer0 to overflow in 1us
      TL0 = -SYSCLK/1000000;
      TR0 = 1;                         // START Timer0
      while (TF0 == 0);                // wait for overflow
      TF0 = 0;                         // clear overflow indicator
   }
}

//-----------------------------------------------------------------------------
// EE_Read
//-----------------------------------------------------------------------------
//
// This routine reads and returns a single EEPROM byte whose address is
// given in <Addr>.
//
unsigned char EE_Read (unsigned Addr)
{
   unsigned char retval;               // value to return

   NSS = 0;                            // select EEPROM

   Timer0_us (1);                      // wait at least 250ns (CS setup time)

   // transmit READ opcode
   retval = SPI_Transfer(EE_READ);

   // transmit Address MSB-first
   retval = SPI_Transfer((Addr & 0xFF00) >> 8);   // transmit MSB of address

   retval = SPI_Transfer((Addr & 0x00FF));        // transmit LSB of address

   // initiate dummy transmit to read data

   retval = SPI_Transfer(0x00);

   Timer0_us (1);                      // wait at least 250ns (CS hold time)

   NSS = 1;                            // de-select EEPROM

   Timer0_us (1);                      // wait at least 500ns (CS disable time)

   return retval;
}

//-----------------------------------------------------------------------------
// EE_Write
//-----------------------------------------------------------------------------
//
// This routine writes a single EEPROM byte <value> to address <Addr>.
//
void EE_Write (unsigned Addr, unsigned char value)
{
   unsigned char retval;               // return value from SPI

   NSS = 0;                            // select EEPROM
   Timer0_us (1);                      // wait at least 250ns (CS setup time)

   // transmit WREN (Write Enable) opcode
   retval = SPI_Transfer(EE_WREN);

   Timer0_us (1);                      // wait at least 250ns (CS hold time)

   NSS = 1;                            // de-select EEPROM to set WREN latch
   Timer0_us (1);                      // wait at least 500ns (CS disable 
                                       // time)

   NSS = 0;                            // select EEPROM
   Timer0_us (1);                      // wait at least 250ns (CS setup time)

   // transmit WRITE opcode
   retval = SPI_Transfer(EE_WRITE);

   // transmit Address MSB-first
   retval = SPI_Transfer((Addr & 0xFF00) >> 8);   // transmit MSB of address

   retval = SPI_Transfer((Addr & 0x00FF));        // transmit LSB of address

   // transmit data
   retval = SPI_Transfer(value);

   Timer0_us (1);                      // wait at least 250ns (CS hold time)

   NSS = 1;                            // deselect EEPROM (initiate EEPROM 
                                       // write cycle)

   // now poll Read Status Register (RDSR) for Write operation complete
   do {

      Timer0_us (1);                   // wait at least 500ns (CS disable
                                       // time)

      NSS = 0;                         // select EEPROM to begin polling

      Timer0_us (1);                   // wait at least 250ns (CS setup time)

      retval = SPI_Transfer(EE_RDSR);

      retval = SPI_Transfer(0x00);

      Timer0_us (1);                   // wait at least 250ns (CS hold
                                       // time)
      NSS = 1;                         // de-select EEPROM

   } while (retval & 0x01);            // poll until WIP (Write In 
                                       // Progress) bit goes to '0'

   Timer0_us (1);                      // wait at least 500ns (CS disable
                                       // time)
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩区在线观看| 欧美体内she精高潮| 亚洲6080在线| 亚洲欧美日韩一区| 亚洲欧美韩国综合色| 亚洲欧美日韩人成在线播放| 中文字幕一区二区不卡| 亚洲激情图片一区| 亚洲一区在线视频观看| 偷拍自拍另类欧美| 精品制服美女丁香| 国产精品一级在线| 国产91对白在线观看九色| 成人一区二区视频| 99久久国产综合精品女不卡| 91麻豆精品一区二区三区| 在线免费观看日韩欧美| 欧美精品99久久久**| 在线播放视频一区| 久久久久国产精品人| 亚洲欧洲av一区二区三区久久| 自拍偷拍亚洲欧美日韩| 亚洲高清视频中文字幕| 日本美女一区二区| 国产精品一区一区| 91国偷自产一区二区开放时间| 欧美网站一区二区| 亚洲精品一区二区三区99| 国产精品女主播在线观看| 亚洲综合激情网| 国产一区在线不卡| 99re这里都是精品| 日韩一区和二区| 亚洲少妇屁股交4| 日本va欧美va瓶| a级精品国产片在线观看| 欧美日韩精品一区二区三区蜜桃| 久久久久九九视频| 日韩高清中文字幕一区| 国产99久久久精品| 91精品欧美久久久久久动漫| 欧美国产精品一区二区三区| 亚洲成人免费在线| 粉嫩aⅴ一区二区三区四区 | 国产.欧美.日韩| 色哟哟在线观看一区二区三区| 欧美一级艳片视频免费观看| 中文字幕日本不卡| 国产一区在线精品| 69久久夜色精品国产69蝌蚪网| 中文文精品字幕一区二区| 午夜日韩在线观看| 色诱视频网站一区| 国产肉丝袜一区二区| 免费成人在线网站| 欧美日韩一区二区在线观看| 国产精品日日摸夜夜摸av| 国产一区二区三区在线观看免费视频| 91国偷自产一区二区使用方法| 国产精品视频yy9299一区| 麻豆91精品视频| 欧美日韩高清不卡| 亚洲国产一二三| 一本久道久久综合中文字幕| 国产日韩影视精品| 国产精品系列在线观看| 精品国产乱码久久久久久图片 | 一区二区三区精密机械公司| 大陆成人av片| 国产亚洲一区二区三区| 黄页网站大全一区二区| 91精品福利在线一区二区三区| 夜夜嗨av一区二区三区| 色哟哟国产精品| 一区二区三区四区高清精品免费观看| zzijzzij亚洲日本少妇熟睡| 欧美国产一区二区在线观看| 国产成人免费在线视频| 国产三级精品视频| av电影在线不卡| 亚洲人成伊人成综合网小说| 91亚洲永久精品| 亚洲美女偷拍久久| 欧美日韩视频一区二区| 亚洲大型综合色站| 宅男在线国产精品| 精品夜夜嗨av一区二区三区| 久久先锋影音av| 成人午夜视频福利| 国产精品美女www爽爽爽| 91视频免费播放| 亚洲成av人影院在线观看网| 91精品国产入口在线| 国内精品不卡在线| 国产精品毛片无遮挡高清| 91同城在线观看| 五月天婷婷综合| 精品久久一区二区三区| 国产成人精品免费| 亚洲精品一二三区| 91精品国产入口在线| 国产美女娇喘av呻吟久久| 中文字幕一区二区三区视频 | 日韩电影在线一区| 国产午夜一区二区三区| 一本久久a久久精品亚洲| 蜜臀久久99精品久久久画质超高清 | 亚洲一区二区三区不卡国产欧美| 欧美精品在线一区二区三区| 国产酒店精品激情| 依依成人综合视频| 亚洲精品在线一区二区| 91女厕偷拍女厕偷拍高清| 午夜成人在线视频| 中文字幕亚洲一区二区av在线| 欧美美女网站色| 成人性生交大片免费看中文网站| 亚洲第一成年网| 国产精品人妖ts系列视频| 欧美精选在线播放| 色综合天天狠狠| 韩国欧美国产一区| 亚洲一级电影视频| 国产欧美日韩三区| 日韩一区二区麻豆国产| 色综合久久综合网欧美综合网| 九九热在线视频观看这里只有精品| 亚洲日本免费电影| 国产色产综合产在线视频| 欧美高清视频一二三区| 91色|porny| 国产成人精品亚洲777人妖 | 制服丝袜国产精品| 91免费版在线| 成人h动漫精品一区二| 国产一区二区按摩在线观看| 婷婷综合五月天| 亚洲一区二区三区四区在线观看 | 国产高清视频一区| 九九久久精品视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲亚洲人成综合网络| 亚洲色图一区二区三区| 国产精品家庭影院| 国产色爱av资源综合区| 国产天堂亚洲国产碰碰| 亚洲精品一区在线观看| 欧美一区二区女人| 日韩一二三区视频| 91精品国产综合久久久久久漫画| 欧美午夜不卡视频| 欧美无砖砖区免费| 欧美另类变人与禽xxxxx| 欧美日本韩国一区二区三区视频| 92精品国产成人观看免费| 99久久精品免费| 91丨九色丨尤物| 日本道色综合久久| 欧美亚洲自拍偷拍| 欧美日韩的一区二区| 日韩午夜精品视频| 久久久亚洲综合| 国产精品色噜噜| 夜色激情一区二区| 日韩av电影天堂| 久久99精品久久只有精品| 国产一区二区三区久久悠悠色av| 精品一区二区三区视频| 国产精品一区二区x88av| 99久久综合国产精品| 在线观看精品一区| 日韩一级在线观看| 国产欧美一区二区精品忘忧草 | 亚洲h在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久av资源站| av一区二区三区在线| 欧美性受xxxx黑人xyx性爽| 678五月天丁香亚洲综合网| 亚洲精品一线二线三线| 国产精品欧美极品| 日本三级韩国三级欧美三级| 国产乱淫av一区二区三区| 日本精品视频一区二区| 91精品国产一区二区三区| 国产免费久久精品| 亚洲国产一区二区三区青草影视| 激情综合网av| 91视频.com| 日韩精品中午字幕| 亚洲色图.com| 麻豆精品蜜桃视频网站| 91麻豆.com| 久久伊人中文字幕| 亚洲综合色丁香婷婷六月图片| 九九久久精品视频 | 国产真实乱偷精品视频免| 99re视频这里只有精品| 欧美一级国产精品| 亚洲日本一区二区三区|