全国电子设计大赛培训之单片机部分剖析.ppt

全国电子设计大赛培训之单片机部分剖析.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5:SPI接口 SPI的概念: SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8~16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。 STC89C51单片机功能介绍:SPI接口 SPI主机或从机操作; 10MHZ位频率(最大); 数据传输LSB在前或MSB在前; 4个可编程位速率; 传输终止(SPIF); 写冲突标志保护; 空闲模式唤醒(仅用于从机) 串行外围接口(SPI)实现了STC89C516RD+与外围器件之间及多个STC89C516RD+之间的数据高速同步传输。接口为: SS — 片选信号 MOSI — 主出从入 MISO — 主入从出 SCK — 时钟信号 STC89C51单片机功能介绍:SPI接口 SS — P1.4,从机选择位 MOSI — P1.5 MISO — P1.6 SCK — P1.7 硬件SPI STC89C51单片机功能介绍:SPI接口 STC89C51单片机功能介绍:SPI接口 SPI时序图 SPI相关寄存器 主机 从机 二、存储空间分配 当单片机的程序代码增加时,需要通过合理的方式为不同类型的代码分配不同存储空间,以提高系统效率。 程序代码存储空间分配方式可以通过设置数据的修饰符实现,也可通过Keil软件中Target菜单的设置来实现。 [类型说明符][修饰符] 标识符[=初值]…… 例: unsigned char code Flag = 0x0f ; 类型说明符 修饰符 标识符 初值 这个定义给出的内容是:定义一个无符号的字符型变量,该变量的名字是Flag,初值为0x0f,该变量存放在ROM空间中。 说明:如果在一个定义中,没有修饰符,即没有说明存放的位置,则默认存放在片内RAM中,即是一个data类型的变量。 数据声明的格式 1、设置修饰符来分配存储空间 存储类型 寻址空间 数据长度 值域范围 data 片内直接寻址 RAM 8 0~127 idata 片内间接寻址 RAM 8 0~255 pdata 分页寻址,片外 RAM 8 0~255 xdata 片外数据存储 (64K) 16 0~65535 code 片内统一编址ROM(64K) 16 0~65535 bdata 片内可位寻址的RAM(16byte) 1 0~127 存储类型 data区 对data区的寻址是最快的,所以应把使用频率高的变量放在data区,data区除了包含程序变量外,还包含了堆栈和寄存器组data区。在SMALL存储模式下,未说明存储器类型时,变量默认被定位在data区。标准变量和用户自定义变量都可以存储在data区,只要不超过data区的范围。 unsigned char data system_status=0; unsigned int data unit_id[2]; idata区也可以存放使用比较频繁的变量,使用寄存器作为指针进行寻址。在寄存器中设置8位地址进行间接寻址,与外部存储器寻址比较,它的指令执行周期和代码长度都比较短。 char idata inp_string[16]; float idata outp_value; idata区 bdata区 当在data区的位寻址区定义变量,这个变量就可进行位寻址,并且声明位变量。这对状态寄存器来说十分有用,可以单独使用变量的每一位。下面是一些在bdata区中声明变量和使用位变量的例子。 unsigned int bdata status_word; sbit stat_flag=status_byte^4; if(status_word^15){……} stat_flag=1; pdata和xdata区 对pdata和xdata的操作是相似的,对pdata区寻址比对xdata区寻址要快,因为对pd

您可能关注的文档

文档评论(0)

四月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档