色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于HI-TECH C的PIC12C508讀寫93LC4源程序

          基于HI-TECH C的PIC12C508讀寫93LC4源程序

          作者: 時(shí)間:2012-08-18 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/171028.htm

          /*----------------------------------------------------
          Function : StartBit
          Input : None
          Output : None
          Description :
          1. Set Chip Select(CS) = 1 (high)
          2. Set a Start Bit(1) to Serial Data Input(DI)
          ------------------------------------------------------*/
          void StartBit(void)
          {
          CS = 1;
          DI = 1;
          Pulse();
          }

          /*----------------------------------------------------
          Function : EWEN
          Input : None
          Output : None
          Description : ERASE/WRITE Enable
          ------------------------------------------------------*/
          void EWEN(void)
          {
          unsigned char i,temp;

          StartBit(); /* 1 */

          temp = 0x80; /* 0011xxxx ,(opcode:00, Address:11xxxx) */
          for(i=0; i8; i++) {
          if(0x30 temp)
          DI = 1;
          else
          DI = 0;
          Pulse();
          temp >>= 1;
          }

          CS = 0;
          }

          /*----------------------------------------------------
          Function : EWDS
          Input : None
          Output : None
          Description : ERASE/WRITE Disable
          ------------------------------------------------------*/
          void EWDS(void)
          {
          unsigned char i;

          StartBit(); /* 1 */

          DI = 0; /* 0000xxxx, (opcode:00, Address:00xxxx) */
          for(i=0; i8; i++)
          Pulse();

          CS = 0;
          }

          /*----------------------------------------------------
          Function : Write6
          Input : unsigned char Offset Address, unsigned int tx_data
          Output : None
          Description : Write 16bits data in to 6 Offset Address
          ------------------------------------------------------*/
          void Write6(unsigned char Offset_Addr, unsigned int tx_data)
          {
          unsigned char Addr, i;
          unsigned int temp;

          EWEN();

          StartBit(); /* 1 */
          Offset_Addr=Offset_Addr0x3F; /* 6bits address */
          Addr = Offset_Addr + 0x40; /* 01AAAAAA ,(opcode:01, address:AAAAAA) */
          temp = 0x0080;
          for(i=0; i8; i++) {
          if(Addr temp)
          DI = 1;
          else
          DI = 0;
          Pulse();
          temp >>= 1;
          }

          temp = 0x8000; /* DDDDDDDDDDDDDDDD(16bits data)*/
          for(i=0; i16; i++) {
          if(tx_data temp)
          DI = 1;
          else
          DI = 0;
          Pulse();
          temp >>= 1;
          }
          CS = 0;

          EWDS();
          }

          /*----------------------------------------------------
          Function : Read93LC46
          Input : unsigned char Offset Address
          Output : unsigned int
          Description : Read 16bits data from 93LC46 offset address
          ------------------------------------------------------*/
          unsigned int Read93LC46(unsigned char Offset_Addr)
          {
          unsigned char Addr, i, temp;
          unsigned int rx_data;

          StartBit(); /* 1 */
          Offset_Addr = Offset_Addr0x3F; /* 6bits address */
          Addr = Offset_Addr + 0x80; /* 10AAAAAA ,(opcode:10, address:AAAAAA) */
          temp = 0x80;
          for(i=0; i8; i++) {
          if(Addr temp)
          DI = 1;
          else
          DI = 0;
          Pulse();
          temp >>= 1;
          }

          rx_data = 0x0000; /* DDDDDDDDDDDDDDDD(16bits data)*/
          for(i=0; i16; i++) {
          Pulse();
          if(DO)
          rx_data |= 0x0001;
          if(i 15)
          rx_data = 1;
          }
          CS = 0;

          return(rx_data);
          }

          void InitPIC(void)
          {
          OPTION = (GPWU | GPPU | PS2 | PS1 | PS0);
          TRIS = 0x10;
          CS = 0;
          CLK = 0;
          DI = 0;
          }

          /* Main routine */
          void main(void)
          {
          unsigned char addr;
          unsigned int rx_buf;

          InitPIC();
          /* Read a word then +1 and write back to 93LC46 */
          for (addr = 0; addr 10; addr++)
          {
          rx_buf = Read93LC46(addr);
          rx_buf = rx_buf+1;
          Write93LC46(addr, rx_buf);
          }

          }


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉