i2cmemtst.c

来自「* Use 10 MHz crystal frequency. * Use 」· C语言 代码 · 共 71 行

C
71
字号
#include "config.h"#include "serial.c"#include "serio.c"#include "delay.h"#include "i2cmsu.c"#include "i2c_memutil.c"#define EEPROM 0xA0  unsigned char membuf[BLKSIZE];unsigned int memaddr;void main(void){  unsigned char mode,i;  serial_init(95,1); // 19200 in HSPLL mode, crystal = 7.3728 MHz  if (!RI) {    RI = 1;    printf("Software reset!");pcrlf();    if (i2c_errstat) i2c_print_err();  }  if (!TO) {    printf("Watchdog timer reset has occurred.\n");    pcrlf();    if (i2c_errstat) i2c_print_err();  }  i2c_init(73); // ~100 kHz @ FOSC = 29.4912 MHz  pcrlf();  printf("I2C Mem Test Started");  pcrlf();  SWDTEN = 1;  // enable watchdog timer  memaddr = 0;  printf ("Enter 'w' for write mode, anything else reads: ");  mode = getche();  pcrlf();  while(1) {    if (mode == 'w') {      printf("Enter %d chars.",BLKSIZE);pcrlf();      for(i = 0;i< BLKSIZE;i++) {	membuf[i] = getche();      }      pcrlf();printf("Doing Write");pcrlf();      // write same string twice to check Write Busy polling      i2c_memwrite(EEPROM,memaddr,(unsigned char *)membuf); // do write      memaddr = memaddr +BLKSIZE;      i2c_memwrite(EEPROM,memaddr,membuf); // do write      memaddr = memaddr +BLKSIZE;    } else {      i2c_memread(EEPROM,memaddr,membuf); // do read      for(i = 0;i< BLKSIZE;i++) putch(membuf[i]);      pcrlf();      printf("Any key continues read...");pcrlf();      getch();      memaddr = memaddr + BLKSIZE;    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?