<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC:讀寫24LCxx系列的EEPROM的實例C語言程序

          PIC:讀寫24LCxx系列的EEPROM的實例C語言程序

          作者: 時間:2011-05-06 來源:網(wǎng)絡(luò) 收藏

          C

          本文引用地址:http://www.ex-cimer.com/article/172809.htm

          //*********************************************************
          //* Using I2C Master Mode for access Slave (EEPRM)
          //*
          //* Written by: Richard Yang
          //* Sr. Corporate Application Engineer
          //* Microchip Technology Inc.
          //* Date: Oct. 3nd '2002
          //* Revision: 1.00
          //* Language tools : MPLAB-C18 v2.09.13
          //* MPLINK v3.10
          //* MPLAB-IDE v6.00.17 ICD2
          //***********************************************************
          /* Include Header files */

          #i nclude p18f452.h>
          #i nclude i2c.h> // Load I2C Header file from defult direct
          #i nclude timers.h>
          #i nclude P18LCD.h // Load P18LCD Header file form current working direct

          /* Declare the Function Prototype */

          void Initialize_I2C_Master(void);
          void EE_Page_Write(unsigned char,unsigned char,unsigned char,unsigned char *);
          void EE_SEQU_Read(unsigned char,unsigned char,unsigned char,unsigned char *);
          void _Write(unsigned char,unsigned char,unsigned char);
          void _ACK(unsigned char);
          unsigned char EEPROM_Read(unsigned char,unsigned char);
          void I2C_Done(void);
          void Initialize_Timer2(void);
          void isr_high_direct(void);
          void isr_high(void);

          #pragma romdata My_romdata=0x1000
          const rom far unsigned char LCD_MSG1[]=SW2: Byte Write ;
          const rom far unsigned char LCD_MSG2[]=SW6: Random Read;
          const rom far unsigned char LCD_MSG3[]=Byte Write Mode ;
          const rom far unsigned char LCD_MSG4[]=Random Read Mode;
          const rom far unsigned char LCD_MSG5[]=Sended: ;
          const rom far unsigned char LCD_MSG6[]=Send: ;
          const rom unsigned char I2C_Write_Buffer[]=Microchip Technology;
          #pragma romdata

          /* Define following array in data memory */

          unsigned char I2C_Read_Buffer [32];

          /* define following variable in data memory at Access Bank */
          #pragma udata access My_RAM
          near unsigned char Debounce;
          near unsigned char Send_Addr;
          near unsigned char Send_Data;
          near unsigned char Send_Length;
          near unsigned char Read_Data;
          near unsigned char P_SW2;
          near unsigned char P_SW6;
          #pragma udata

          #define Page_Length 8
          #define SW2 PORTAbits.RA4
          #define SW6 PORTEbits.RE1
          #define Bounce_Time 6
          #define EE_CMD 0xA0

          //***********************************************************
          /* */
          /* Main Program */
          /* */
          //***********************************************************


          void main(void)
          {
          ADCON1=0b00000110; // Disable A/D Function
          TRISAbits.TRISA4=1; // Set SW2 for input
          TRISEbits.TRISE1=1; // Set SW6 for Input
          Initialize_Timer2( );
          Initialize_I2C_Master( );
          OpenLCD( );

          if (SW2 SW6)Debounce=0;
          else Debounce = Bounce_Time;

          while(1)
          {
          LCD_Set_Cursor(0,0); // Put LCD Cursor on (0,0)
          putrsLCD(LCD_MSG1);
          LCD_Set_Cursor(1,0); // Put LCD Cursor on (1,0)
          putrsLCD(LCD_MSG2);

          P_SW2=P_SW6=0;
          Send_Addr=0;

          while(1)
          {
          if (P_SW2)
          {
          P_SW2=0;
          Debounce = Bounce_Time;
          LCD_Set_Cursor(0,0); // Put LCD Cursor on (0,0)
          putrsLCD(LCD_MSG3);
          LCD_Set_Cursor(1,0); // Put LCD Cursor on (0,0)
          putrsLCD(LCD_MSG5);

          do
          {
          while (!P_SW2);
          P_SW2=0;
          LCD_Set_Cursor(1,8);
          Send_Data=I2C_Write_Buffer[Send_Addr];
          EEPROM_Write(EE_CMD,Send_Addr,Send_Data);
          puthexLCD(EE_CMD);
          putcLCD(' ');
          puthexLCD(Send_Addr);
          putcLCD(' ');
          puthexLCD(Send_Data);
          EEPROM_ACK(EE_CMD);
          Send_Addr++;
          } while (I2C_Write_Buffer[Send_Addr]!=0x00);
          break;
          }

          if (P_SW6)
          {
          P_SW6=0;
          Debounce = Bounce_Time;
          LCD_Set_Cursor(0,0); // Put LCD Cursor on (0,0)
          putrsLCD(LCD_MSG4);
          LCD_Set_Cursor(1,0); // Put LCD Cursor on (0,0)
          putrsLCD(LCD_MSG6);


          while(1)
          {
          if (P_SW6)
          {
          P_SW6=0;
          LCD_Set_Cursor(1,5);
          Read_Data = EEPROM_Read(EE_CMD,Send_Addr);
          puthexLCD(EE_CMD);
          putcLCD(' ');
          puthexLCD(Send_Addr);
          putcLCD(' ');
          puthexLCD(EE_CMD);
          putcLCD(' ');
          puthexLCD(Read_Data);
          Send_Addr++;
          }
          if (P_SW2) break;
          }
          if (P_SW2) break;
          }
          if (P_SW2)
          {
          P_SW2=0;
          break;
          }
          }
          }
          }
          //************************************************
          //* #pragma Interrupt Declarations *
          //* *
          //* Function: isr_high_direct *
          //* - Direct execution to the actual *
          //* high-priority interrupt code. *
          //************************************************
          #pragma code isrhighcode = 0x0008

          void isr_high_direct(void)
          {
          _asm //begin in-line assembly
          goto isr_high //go to isr_high function
          _endasm //end in-line assembly
          }

          c語言相關(guān)文章:c語言教程



          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();