单片机学习笔记(一)
来源:互联网 发布:淘宝市场营销 编辑:程序博客网 时间:2024/04/28 14:59
MCS-51单片机的结构
(1)一个8位的CPU
(2)一个片内振荡器及时钟电路
(3)4KBROM
(4)128KBRAM
(5)64KB程序存储器可寻址的地址空间
(6)64KB数据存储器可寻址的地址空间
(7)两个16位可编程的定时计数器
(8)一个UART
(9)32条I/O线
HMOS:高速、高封装密度
CMOS:低功耗
引脚
外接晶体引脚XTAL1和XTAL2
RST/VPD——复位信号输入端/备用电源输入端
ALE/PROG——地址锁存允许信号端/编程脉冲信号输入端
PSEN——程序存储器允许输出信号端
EA/Vpp——外部程序存储器地址允许输入端/固化编程电压输入端
P0:(1)通用I/O口
(2)当CPU访问片外存储器时,分时提供低8位地址和8位数据的复用总线
P1:(1)通用I/O口
(2)对片内EPROM编程或校验时输入片内EPROM的低8位地址
P2:(1)通用I/O口
(2)带片外存储器时,与P0口配合,传送片外存储器的高8位地址
P3:(1)通用I/O口
(2)第2功能
P3.0
RXD
串行数据接收口
P3.1
TXD
串行数据发送口
P3.2
INT0
外部中断0输入
P3.3
INT1
外部中断1输入
P3.4
T0
定时计数器0外部输入
P3.5
T1
定时计数器1外部输入
P3.6
WR
外部RAM写选通信号
P3.7
RD
外部RAM读选通信号
指令——>指令寄存器——>指令译码器——>定时控制
PC:专门用来控制指令执行顺序的一个寄存器,其内容可被指令强迫改写
IR:用来存放指令操作码的专用寄存器
DPTR:间址寄存器
运算器:(1)8位算术逻辑运算单元ALU
(2)8位的暂存器1和暂存器2
(3)8位的累加器A、B寄存器、PSW
B寄存器可控制位寻址
在执行乘法运算时,ALU的两输入来自A、B,结果低8位在A中存放,高8位在B中存放
在执行除法运算时,被除数取自A,除数取自B,商存放于A,余数存放于B
PSW.0
P
奇偶标志位
PSW.1
F1
用户标志位
PSW.2
OV
溢出标志位
PSW.3
RS0
工作寄存器组
选择位(00H~1FH)
PSW.4
RS1
PSW.5
F0
用户标识位
PSW.6
AC
辅助进位标志位
PSW.7
CY
进位标志位
堆栈指针SP
存储器
4种物理存储空间:片内ROM、片外ROM
片外RAM、片内RAM
3种逻辑存储空间:(1)片内、片外统一的64KBROM
(2)片外64KBRAM
(3)片内256字节RAM:片内数据RAM(低128字节)、SFR(高128字节)
(1)对于8051,片内与片外ROM在低4KB地址出现重叠,由EA进行控制
当EA=1时,内部ROM有效
当EA=0时,内部ROM无效
(2)片内ROM的某些特定单元被保留用于特定的程序入口地址
启动地址
5个中断的服务程序入口(中断矢量地址)
RAM在物理上和逻辑上都分为两个地址空间:一个是片内256字节的RAM,另一个是片外最大可扩充至64KB的RAM
片内低128字节RAM:工作寄存器区
位寻址区
字节寻址区
堆栈区及堆栈指示区
片内高128字节RAM内有21个特殊功能寄存器访问SFR只允许使用直接寻址方式,有11个具有位寻址能力,有六个属于CPU范围,分别为:ACC、B、PSW、SP、DPH、DPL,余15个属于接口范围
I/O端口的每一位均由锁存器,输出驱动器和输入缓冲器组成
(1)P0口的每一位I/O端口输出可驱动8个LSTTL输入端,而P1~P3可驱动3个LSTTL输入端
(2)P0口作普通I/O口使用时,须外加上拉电阻,P1~P3内部有上拉电阻,无须外加
(3)P0~P3口作普通输入口使用时,应先使锁存器置1,再读引脚
(4)端口的自动识别
定时计数器
8051单片机内有两个16位定时计数器,即T0、T1。他们都有定时和计数的功能。两个16位定时计数器实际上都是16位加1计数器,其功能由SFR寄存器TMOD和TCON控制。
不管是定时还是计数的工作方式,定时器T0和T1在对内部时钟的计数或是对外部事件的计数时都不占用CPU时间,除非溢出,才有可能中断CPU当前的操作。
TMOD(89H):
中断
中断:由于外部或内部事件改变原来CPU正在执行的指令顺序的一种工作机制。
外部中断源有两个,通常是外设产生的中断请求信号,内部中断源有三个,两个定时计数器和一个串口中断源
时序
振荡器:自激振荡器
外部振荡器
振荡器信号fosc——>时钟信号fosc/2
时钟信号的周期称为状态周期S,每个状态周期S有两个节拍P1、P2
机器周期:一个机器周期包含6个状态周期
指令周期:通常含1~4个机器周期
用于T1
用于T0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
选通控制
更能选择
工作模式
M1 M0
工作模式
更能描述
0 0
模式0
13位计数器
0 1
模式1
16位计数器
1 0
模式2
自动再装入8位计数器
1 1
模式3
对定时器0:分成两个8位计数器
对定时器1:停止计数
(1)模式0时选择定时器T0(T1)的高8位和低5位组成一个13位的定时计数器,定时时间为:
t=(213-T0初值)*振荡周期*12
(2)模式1是一个16位定时计数器,用于定时工作方式时,定时时间为:
t=(216-T0初值)*振荡周期*12
(3)模式2把T0(T1)配置成一个可以自动重装载的8位定时计数器,当TL0计数溢出时,不仅使溢出中断标志位TF0置1,同时自动把TH0中的内容重新再装载到TL0中。用于定时工作方式时,其定时时间为:
t=(28-T0初值)*振荡周期*12
这种工作模式可省去软件中重装常数的语句,产生相当精确的定时时间,适用于作串行口波特率发射器。
(4)工作模式为3时对T0和T1是完全不同的,T0在模式3工作时,TL0和TH0被分成两个互相独立的8位计数器,其功能和操作与模式0和模式1完全相同,TL0可工作在定时器方式或计数器方式;但TH0只可用作简单的内部定时功能,它还占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TR1的控制。
定时器T1无工作模式3,若将T1设置为模式3,就会使T1立即停止计数,但可设置T1为模式0、1和2,由于此时中断源已被T0占用,所以仅能作为波特率发生器或用在其他不用中断的地方。
ps:
C/T=0,设置为定时方式,定时器计数8051内部脉冲,对机器周期计数
C/T=1,设置为计数方式,计数器的输入来自T0或T1端的外部脉冲
当GATE=0时,只要用软件使TR0(TR1)置1就启动了定时器,而不管INT0(INT1)电平的高低
当GATE=1时,只要INT0(INT1)为高电平,同时使TR0置1时,才能启动定时器工作
TCON(88H):
TF1
TR1
TF0
TR0
GATE
C/T
M1
M0
T1的溢出标志位
T1的运行控制位
T0的溢出标志位
T0的运行控制位
- 单片机学习笔记(一)
- 单片机 学习笔记(一)
- 80C51单片机学习笔记(一)
- pic18f6720单片机学习(一)
- 单片机学习笔记--51单片机
- ★51单片机学习笔记(一)_总记
- 51单片机学习笔记【一】——LED灯实验
- STC89C52单片机学习(一)----点亮LED
- 单片机学习(一)__led灯
- 一、学习单片机
- 51单片机学习笔记(二)
- 51单片机学习笔记(三)
- 51单片机学习笔记(四)
- 51单片机学习笔记(五)
- 51单片机汇编学习笔记(待续)
- 单片机学习笔记(Arduino Uno r3)
- 单片机学习笔记090710
- AVR 单片机学习笔记
- Decimal类型在地图坐标中的运用
- C初级程序员劝告
- 美是秩序的光彩
- 谁能教我用PS做网店模板? 谢谢了
- 手机阅读的博览会表现
- 单片机学习笔记(一)
- 网友评选出的10
- [转]淘宝经:大学生三家网店 月入5万!
- ubuntu 9.04 支持4G以上内存方法
- [转]淘宝经:卖花女状元“空手套白狼”
- 两个常见问题: HashMap和Hashtable的区别 , ArrayList,Vector, LinkedList的存储性能和特性
- 我们是唯一的leader,我们不是follower
- JavaScript中的JSON
- vs 2008解压错误!