93C46.rar

  • PUDN用户
    了解作者
  • C/C++
    开发工具
  • 36KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 3
    下载次数
  • 2014-06-18 13:56
    上传日期
该程序是对93C46 EEPROM的读写实验,单片机通过I2C总线对93C46进行读写操作。
93C46.rar
  • 3. 93C46读写实验
  • STARTUP.LST
    11.4KB
  • 93C46.M51
    13.2KB
  • 93C46.Opt
    1.3KB
  • 93C46.lnp
    43B
  • STARTUP.A51
    5KB
  • 93C46.OBJ
    8.5KB
  • 93C46.plg
    0B
  • 流程图.vsd
    44.5KB
  • 93C46.c
    6KB
  • STARTUP.OBJ
    749B
  • 93C46.Uv2
    1.7KB
  • 93C46.LST
    12.5KB
  • 93C46
    8.3KB
  • 93C46_Uv2.Bak
    1.7KB
  • 93C46_Opt.Bak
    1.3KB
内容介绍
/************************************/ /*杭州电子&计算机工作室 */ /*http://www.hificat.com */ /*93C46测试程序 */ /*目标器件:AT89S51 */ /*晶振:11.0592MHZ */ /*编译环境:Keil 7.50A */ /************************************/ /*********************************包含头文件******************************/ #include <reg51.h> #include <intrins.h> /*********************************数据定义********************************/ #define OP_EWEN_H 0x00 // 00 write enable #define OP_EWEN_L 0x60 // 11X XXXX write enable #define OP_EWDS_H 0x00 // 00 disable #define OP_EWDS_L 0x00 // 00X XXXX disable #define OP_WRITE_H 0x40 // 01 A6-A0 write data #define OP_READ_H 0x80 // 10 A6-A0 read data #define OP_ERASE_H 0xc0 // 11 A6-A0 erase a word #define OP_ERAL_H 0x00 // 00 erase all #define OP_ERAL_L 0x40 // 10X XXXX erase all #define OP_WRAL_H 0x00 // 00 write all #define OP_WRAL_L 0x20 // 01X XXXX write all /*********************************端口定义**********************************/ sbit CS = P3^4; sbit SK = P3^3; sbit DI = P3^5; sbit DO = P3^6; /*******************************共阳LED段码表*******************************/ unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; /********************************定义全局变量*******************************/ int readdata; //从93C46读出的数据 /**************************************************************************** 函数功能:数码管扫描延时子程序 入口参数: 出口参数: ****************************************************************************/ void delay1(void) { int k; for(k=0;k<400;k++); } /**************************************************************************** 函数功能:读写延时子程序 入口参数:ms 出口参数: ****************************************************************************/ void delayms(unsigned char ms) { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } } /**************************************************************************** 函数功能:数码管显示子程序 入口参数:k 出口参数: ****************************************************************************/ void display(int k) { P2=0xfe; P0=tab[k/1000]; delay1(); P2=0xfd; P0=tab[k%1000/100]; delay1(); P2=0xfb; P0=tab[k%100/10]; delay1(); P2=0xf7; P0=tab[k%10]; delay1(); P2=0xff; } /**************************************************************************** 函数功能:写入指令和地址子程序 入口参数:op_h,op_l 出口参数: ****************************************************************************/ void inop(unsigned char op_h, unsigned char op_l) { unsigned char i; SK = 0; // 开始位 DI = 1; CS = 1; _nop_(); _nop_(); SK = 1; _nop_(); _nop_(); SK = 0; // 开始位结束 DI = (bit)(op_h & 0x80); // 移入指令码高位 SK = 1; op_h <<= 1; SK = 0; DI = (bit)(op_h & 0x80); // 移入指令码低位 SK = 1; _nop_(); _nop_(); SK = 0; op_l <<= 1; // 移入余下的指令码或地址数据 for(i = 0; i < 7; i++) { DI = (bit)(op_l & 0x80);// 先移入高位 SK = 1; op_l <<= 1; SK = 0; } DI = 1; } /**************************************************************************** 函数功能:写入数据子程序 入口参数:indata 出口参数: ****************************************************************************/ void shin(unsigned char indata) { unsigned char i; for(i = 0; i < 8; i++) { DI = (bit)(indata & 0x80); // 先移入高位 SK = 1; indata <<= 1; SK = 0; } DI = 1; } /**************************************************************************** 函数功能:写入数据使能子程序 入口参数: 出口参数: ****************************************************************************/ void ewen() { inop(OP_EWEN_H, OP_EWEN_L); CS= 0; } /**************************************************************************** 函数功能:写入数据禁止子程序 入口参数: 出口参数: ****************************************************************************/ void ewds() { inop(OP_EWDS_H, OP_EWDS_L); CS= 0; } /**************************************************************************** 函数功能:数据清除子程序 入口参数: 出口参数: ****************************************************************************/ void erase() { inop(OP_ERAL_H, OP_ERAL_L); delayms(30); CS = 0; } /**************************************************************************** 函数功能:写入数据子程序 入口参数:addr,indata 出口参数: ****************************************************************************/ void write(unsigned char addr, unsigned char indata) { inop(OP_WRITE_H, addr); //写入指令和地址 shin(indata); //写入数据 CS = 0; delayms(10); } /**************************************************************************** 函数功能:读出数据子程序 入口参数: 出口参数:outdata ****************************************************************************/ unsigned char shout(void) { unsigned char i, out_data; for(i = 0; i < 8; i++) { SK = 1; out_data <<= 1; SK = 0; out_data |= (unsigned char)DO; } return(out_data); } /**************************************************************************** 函数功能:读出某地址数据子程序 入口参数:addr 出口参数:out_data ****************************************************************************/ unsigned char read(unsigned char addr) { unsigned char out_data; inop(OP_READ_H, addr); out_data = shout(); CS = 0; return out_data; } /**************************************************************************** 函数功能:主程序 入口参数: 出口参数: ****************************************************************************/ void main(void) { unsigned char i; CS = 0; //初始化端口 SK = 0; DI = 1; DO = 1; ewen(); //使能写入操作 erase(); //擦除全部内容 write(0x02, 0x55); //向0x02地址写入0x55(85) write(0x03, 0xAA); //向0x03地址写入0xAA(170) while(1) { readdata=read(0x03); //读取其中一个地址内数据验证 display(readdata); //显示数据 } }
评论
    相关推荐
    • AT93C46.rar
      串行EE2PROM芯片93C46SPI接口驱动程序。
    • 93c46.rar
      93C46 测试程序,9346接口程序,93c46 的底层子程序部分,51开发。
    • 93c46.zip
      93c46读写,在选定的地址写数据,然后读出数据从P2口输出8个写入的数据
    • 93c46.rar
      单片机开发系统演示程序 - 读写93C46,8位数码管显示
    • 93c46.rar
      keil 93C46存储程序,已经验证,可正常运行,KE FANGXINSHIYONG
    • 93C46芯片程序
      此程序是用汇编语言编译而成,将附件下载保存解压后用汇编语言进行编译,可与C++代码编写的程序进行比较,可以得出用汇编语言编写的程序在语法上与C的区别
    • SPI读写EEPROM93c46
      通过C语言的编程,用IO口模拟SPI对EEPROM进行读写
    • 93C46读写C语言程序
      93C46/93CXX系列C语言读写程序,内附原理图以及93CXX系列的一些使用参考文档
    • SPI_93c46记忆.zip
      93C46的驱动代码,能存储数据和读取数据,亲自测试可用于51代码
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路