广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
第一章 介绍
这是一本关于
Intel 80C51
以及广大的
51
系列单片机的书 这本书介绍给读者一些
新的技术 ½½的
8051
工程和开发过程变得简单 请注意 这本书的目的可不是教½各种
8051
嵌入式系统的解决方法
为½问题讨论更加清晰 在适½的地方给出了程序代码 我们以讨论项目的方法来说
明每章碰到的问题 所有的代码½可在附带的光盘上找到 ½必须熟系
C
和
8051
汇编 因
为本书不是一本
C
和汇编的指导书 ½可以买到不少关于
ANSI C
的书 最½选择½然是
Intel
的数据书 可从½的芯片供应商处免费索取 和随编译工具附送的手册
附送光盘中有我为这本书编写和收集的程序 这些程序已经通过测试 这并不意味着
½可以随时把这些程序加到½的应用系统或工程中 有些地方必须首先经过修改才½结合
到½的程序中
这本书将教½充分½用½的工具 如果½只有
8051
的汇编程序 ½也可以学习该书和
½用这些例子 ½是½必须把
C
语言的程序装入½的汇编程序中 这对懂得
C
语言和
8051
汇编程序指令的人来说并不是一件困难的事
如果½有
C
编译器的话 那恭喜½ ½用
C
语言进行开发是一个½的决定 ½会发现
½用
C
进行开发将½½的工程开发和维护的时间大大减少 如果½已经拥有
Keil C51
那
½已经选择了一个非常½的开发工具 我发现
Keil
½件包½够提供最½的支持 本书支持
Keil C
的扩展 如果½有其它的开发工具像
Archimedes
和
Avocet
这本书也½很½地为
½服务 ½½必须根据½所用的开发工具改变一些
Keil
的特殊指令
在书的一些地方有硬件图 实例程序在这些硬件上运行 这些图绘制地不是很详细
主要是方框图 ½足以½读者明½½件和硬件之间的接口
读者应该把这本书看成工具书 而不是用来学习各种系统设计 通过本书 ½可以了
解给定一定的硬件和½件设计之后
8051
的各种性½ 希望½½从本书中获取灵感 并有助
于½的设计 ½½豁然开朗 ½然 我希望½也½够从本书中学到有用的知识 ½之½够
提升½的设计
1
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
第二章
硬件
1 概述
8051
系列微处理器基于简化的嵌入式控制系统结构 被广泛应用于从军事到自动控制
再到
PC
机上的键盘上的各种应用系统上 仅次于
Motorola 68HC11
在
8
½微控制器市场
上的销量 很多制造商½可提供
8051
系列单片机 像
Intel Philips Siemens
等 这些
制造商给
51
系列单片机加入了大量的性½和外部功½ 像
I
2
C
总线接口 模拟量到数字量
的½换 看门狗
PWM
输出等 不少芯片的工½频率达到
40M
工½电压下降到 1.5V 基
于一个内核的这些功½½得
8051
单片机很适合½为厂家产品的基本构架 它½够运行各种
程序 而且开发者只需要学习这一个平台
8051
系列的基本结构如下
1 一个
8
½算术逻辑单元
2 32
个
I/O
口
4
组
8
½端口 可单独寻址
3
两个 16 ½定时计数器
4
全双工串行通信
5 6
个中断源 两个中断优先级
6
128 字节内½
RAM
7
独立的
64K
字节可寻址数据和代码区
每个
8051
处理周期包括 12 个振荡周期 每 12 个振荡周期用来完成一项操½ 如取指
计算指令执行时间可把时钟频率除以 12 取倒数 然后指令执行所须的周期数
令和
因此 如果½的系统时钟是 11.059MHz 除以 12 后就得到了每秒执行的指令个数 为
921583
条指令 取倒数将得到每条指令所须的时间 1.085ms
2
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
2
存储区结构
8051
结构提供给用户
3
个不同的存储空间 如图
A-1
每个存储空间包括从
0
到最大
存储范围的连续的字节地址空间 通过利用特定地址的寻址指令 解决了地址重叠的问题
三个地址空间的功½如图所示
图
A-1-8051
存储结构
2.1 CODE
区
第一个存储空间是代码段 用来存放可执行代码 被 16 ½寻址 空间可达
64K
代码
段是只读的 ½要对外接存储器件如
EPROM
进行寻址时 处理器会产生一个信号 ½这并
不意味着代码区一定要用一个
EPROM
目前 一般½用
EEPROM
½为外接存储器 可以被外
围器件或
8051
进行改写 这½系统更新更加容易 新的½件可以下½½到
EEPROM
中 而不
用拆开它 然后装入一个新的
EEPROM
另外 带电池的
SRAMs
也可用来代替
EPROM
他可
以像
EEPROM
一样进行程序的更新 并且没有像
EEPROM
那样读写周期的限制 ½是 ½电
源耗½时 存储在
SRAMs
中的程序也随之丢失 ½用
SRAMs
来代替
EPROM
时 允许快速下
½½新程序到目标系统中 这避免了编程/调试/擦写这样一个循环过程 不再需要½用昂贵
的在线仿真器
除了可执行代码 还可在代码段中存储查寻表 为达此目的
8051
提供了通过数据指
针
DPTR
或程序计数器加上由累加器提供的偏移量进行寻址的指令 这样就可以把表头地址
装入
DPTR
中 把表中要寻址的元素的偏移量装入累加器中
8051
在执行指令时的过程中
把这两者相加 由此可节省不少指令周期 在以后的例子中我们会看到这点
3
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
2.2 DATA
区
第二个存储区是
8051
内 128 字节的内部
RAM
或
8052
的前 128 字节内部
RAM
这部分
主要是½为数据段 称为
DATA
区 指令用一个或两个周期来访问数据段 访问
DATA
区比
访问
XDATA
区要快 因为它采用直接寻址方式 而访问
XDATA
须采用间接寻址 必须先初
始化
DPTR
通常我们把½用比较频繁的变量或局部变量存储在
DATA
段中 ½是必须节省
½用
DATA
段 因为它的空间毕竟有限
在数据段中也可通过
R0
和
R1
采用间接寻址
R0
和
R1
被½为数据区的指针 将要恢
复或改变字节的地址放入
R0
或
R1
中 根据源操½数和目的操½数的不同 执行指令需要
一个或两个周期
数据段中有两个小段 第一个子段包含四组寄存器组 每组寄存器组包含八个寄存器
共
32
个寄存器 可在任½时候通过修改
PSW
寄存器的
RS1
和
RS0
这两½来选择四组寄存器
的任意一组½为工½寄存器组
8051
也可默认任意一组½为工½寄存器组 工½寄存器组
的快速切换不仅½参数传递更为方便 而且可在
8051
中进行快速任务½换
另外一个子段叫做½寻址段
BDATA
包括 16 个字节 共 128 ½ 每一½½可单独寻
址
8051
有½几条½操½指令 这½得程序控制非常方便 并且可帮助½件代替外部组合
逻辑 这样就减少了系统中的模块数 ½寻址段的这 16 个字节也可像数据段中其它字节一
样进行字节寻址
2.3
特殊功½寄存器
中断系统和外部功½控制寄存器½于从地址
80H
开始的内部
RAM
中 这些寄存器被称
做特殊功½寄存器 简称
SFR
其 中很 多寄 存器 ½
可½寻址 可通过名字进
行引用 如果要对中断½
½寄存器中的
EA
½进行
寻址 可½用
EA
或
IE.7
或
0AFH SFRs
控制定时/
计数器 串行口 中断源
及中断优先级等 这些寄
存器的寻址方式和
DATA
取中的其它字节和½一样
可½寻址
SFR
如表
A-1
所示
可进行½寻址的
SFR
表
A-1
4
广州周立功单片机发展有限公司
Tel
020
38730916 38730917 38730976 38730977
Fax:38730925
2.4 IDATA
区
8051
系列的一些单片机如
8052
有附加的 128 字节的内部
RAM
½于从
80H
开始的地址
空间中 被称为
IDATA
因为
IDATA
区的地址和
SFRs
的地址是重叠的 通过区分所访问的
存储区来解决地址重叠问题 因为
IDATA
区只½通过间接寻址来访问
2.5 XDATA
区
8051
的最后一个存储空间为
64K
和
CODE
区一样 采用 16 ½地址寻址 称½外部数
据区 简称
XDATA
区 这个区通常包括一些
RAM
如
SRAM
或一些需要通过总线接口的外
围器件 对
XDATA
的读写操½需要至少两个处理周期 ½用
DPTR R0
或
DPTR R1
对
DPTR
对于
R0
来说 至少需要两个处理周期来装入地址 而读写又需要两个处理周期 同样
或
R1
装入需要一个以上的处理周期 而读写又需两个周期 由此可见 处理
XDATA
中的数
据至少要花
3
个指令周期 因此 ½用频繁的数据应½量保存在
DATA
区中
如果不需要和外部器件进行
I/O
操½或者希望在和外部器件进行
I/O
操½时开关
RAM
则
XDATA
可全部½用
64K RAM
关于这方面的应用将在以后介绍
5
评论