一个X25045的C51读写程序

发布者:Jikai最新更新时间:2020-02-02 来源: elecfans关键字:X25045  C51  读写程序 手机看文章 扫描二维码
随时随地手机看文章

  * x25045的读写程序 用c51写的 */

  #define CS P2.7 /*单片机p2.7为片选 可以改为你的实际引脚 */

  #define SO P2.6 /*数据输出 */

  #define SK P2.5 /* 时钟 */

  #define SI P2.4 /* 数据输入*/

  /* here is the instrution of x25045*/

  #define WREN 0x06

  #define WRDI 0x04

  #define RDSR 0x05

  #define WRSR 0x01

  #define READ0 0x03

  #define READ1 0x0b

  #define WRITE0 0x02

  #define WRITE1 0x0a

  unsigned char Read8()

  {

  bit bData;

  unsigned char cLoop;

  unsigned char cData;

  for(cLoop=0;cLoop《8;cLoop++)

  {

  SK=1;

  SK=0;

  bData=SO;

  cData《《=1;

  if(bData)

  {

  cData|=0x01;

  }

  }

  return cData;

  }

  void Write8(unsigned char cData)

  {

  unsigned char cLoop;

  for(cLoop=0;cLoop《8;cLoop++)

  {

  if((cData&0x80)==0)

  {

  SI=0;

  }

  else

  {

  SI=1;

  }

  SK=0;

  SK=1;

  cData《《=1;

  }

  }

  unsigned char ReadSR()

  {

  unsigned char cData;

  CS=0;

  Write8(RDSR);

  cData=Read8();

  CS=1;

  return cData;

  }

  unsigned char WriteSR(unsigned char cData)

  {

  unsigned char cTemp;

  cTemp=ReadSR();

  if((cTemp&0x01)==1)

  return 0;

  CS=0;

  Write8(WREN);

  CS=1;

  CS=0;

  Write8(WRSR);

  Write8(cData);

  CS=1;

  return 1;

  }

  void Write1B(unsigned char cData,unsigned char cAddress,bit bRegion)

  /* 写入一个字节,cData为写入的数,cAddress为写入地址,bRegion为页 */

  {

  while((ReadSR()&0x01)==1)

  {

  }

  CS=0;

  Write8(WREN);

  CS=1;

  CS=0;

  if(bRegion==0)

  {

  Write8(WRITE0);

  }

  else

  {

  Write8(WRITE1);

  }

  Write8(cAddress);

  Write8(cData);

  SK=0;

  CS=1;

  }

  unsigned char Read1B(unsigned char cAddress,bit bRegion)

  /* 读入一个字节,cAddress为读入地址,bRegion为页 */

  {

  unsigned char cData;

  while((ReadSR()&0x01)==1)

  {

  }

  CS=0;

  if(bRegion==0)

  {

  Write8(READ0);

  }

  else

  {

  Write8(READ1);

  }

  Write8(cAddress);

  cData=Read8();

  CS=1;

  return cData;

关键字:X25045  C51  读写程序 引用地址:一个X25045的C51读写程序

上一篇:如何用51单片机来产生PWM波
下一篇:如何使用单片机驱动标准PC机键盘?C51程序详细说明

推荐阅读最新更新时间:2024-11-20 04:22

C51之外部中断
/* 名称:C51之外部中断实验 说明:关于什么是中断这里就不说了。说说计算机中使用中断有什么好处吧。 (1)、实时处理。在计算机控制系统中,环境、参数的突然变化,可能需要 CPU立即做出相应或处理。 (2)、异常处理。计算机系统运行过程中,经常会出现断电、程序出错等问 题,这时就需要CPU对故障源进行处理。(从某种程度上说,第二点和第一点 差不多)。 (3)、提高效率。由于外设和CPU的速度不同,采用中断技术可以大大提高C PU的运行效率。 再来谈谈C51单片机的中断使用。对于C51来说,其中断的内容还是比较简单的,一般而言,C51单片机有5个中断源(2个外部中断、2个定时器中断和一个串口 中断)。对中断
[单片机]
C51单片机数据类型范围
C51单片机(宏晶科技STC11L32/48/60XE)编程中数据类型范围: 如下图:
[单片机]
8条口线24按键的C51源程序
//键盘扫描处理,无按键返回0,有按键返回键值,键值对应于keycode 下标值。8条(以P2为例)口线24按键 //键盘码也可定义为局部数组变量 unsigned char code keycode = {0x00,0xee,0xde,0xbe,0xed,0xdd,0xbd,0xeb,0xdb,0xbb,0xd7,0xe7,0xb7,0x7b,0x7d,0x7e,0x77, 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0x7f,0xbf}; unsigned char keyread(void) { unsigned char i,j,x,k1,k2; P2=0xff; if(P2!=0xff) {k1=P2;
[单片机]
intrins.h 简介
在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便. 内部函数 描述   _crol_ 字符循环左移   _cror_ 字符循环右移   _irol_ 整数循环左移   _iror_ 整数循环右移   _lrol_ 长整数循环左移   _lror_ 长整数循环右移   _nop_ 空操作8051 NOP 指令   _testbit_ 测试并清零位8051 JBC 指令函数名: _crol_,_irol_,_lrol_   原 型: unsigned char _crol_(unsigned char val,unsigned char n);   unsigned int _irol_(
[单片机]
C51单片机和AVR单片机的区别
1.avr为risc结构cpu,大多数指令在一个时钟周期内完成.所以MIPS比51高 2.avr单片机的复位电平为负逻辑, 而51为正逻辑 3.汇编的程序不通用,但是如果用c写的程序还是可以移植的. AVR 单片机是ATMEL 在90年代推出的精简指令集RISC的单片机,跟PIC类似.使用哈佛结构.可以这样类比,AT89C52相当于复杂指令集CISC的intel的奔腾CPU,AT90S8515相当于AMD的精简指令集RISC的K7 CPU. 以上是指令集的类比.AVR是专门为使用高级语言设计的,在使用高级语言时, 会比89C52有较佳的表现. 可以直接替代89C52的CPU是AT90S4414和AT90S8515.
[单片机]
Keil C51是如何支持双数据指针,有哪些特别的要求
在8051体系中,数据指针DPTR作为一个特殊的16位寄存器,用于寻址64 KB的XDATA或CODE空间,通常它被当作一个16位指针,指向一个常数表。双数据指针可以改善同时有两个16位指针使用时的性能。作为一种增强特性,有许多8051派生型器件支持双数据指针。以宏晶科技STC89系列的产品为例,DPTR被增强为DPTR0和DPTR1两个,仍然使用原来的地址,用另外一个SFR AUXR1的0位DPS来切换。当DPS位为0时,所有对DPTR的操作使用DPTR0;当DPS位为1时,所有对DPTR的操作使用DPTR1。这样,通过一个简单的INC AUXR1指令,就可以来回切换两个数据指针。 1 Keil C51对双数据指针的支持情况
[单片机]
Keil <font color='red'>C51</font>是如何支持双数据指针,有哪些特别的要求
C51的基础 10《 联 合(union) 》
联 合(union) 1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型和不同长度的变量。 下例表示说明一个联合a_bc: union a_bc{ int i; char mm; }; 再用已说明的联合可定义联合变量。例如用上面说明的联合定义一个名为lgc的联合变量, 可写成: union
[单片机]
[C51代码]广告灯的循环移动
#include reg51.h /************************************************/ sbit Key=P2^0; static unsigned char p=0; void delay1ms(unsigned int count) { int x,y; for(x=0;x count;x++) for(y=0;y 120;y++); } /************************************************/ void ScanKey() { if(Key==0) { delay1ms(1); if(Key==0) {
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved