1、单片机就是在一个半导体硅片上,集成了中央处理单元(CPU),存储器(RAM和ROM )、并行口、串行口、定时/计数器、中断系统、系统时钟电路及系统总线,用于
测控领域的单片微型计算机,简称单片机P1
- 单片机与普通微型计算机的不同之处在于其将 CPU、存储器和IO口三部分,通过内部系統总线连接在一起,集成于一个芯片上P11
- P0口是漏极开路的双向 I / O 口。当AT89S51单片机扩展外部 RAM 及 I / O 接口芯片时, PO 口作为地址总线(低8位)及数据总线的分时复用口。 PO 口也可作为通用 I / O 口使用,但需加上拉电阻,这时为准双向口。 PO 口可驱动8个 LS 型 TTL 负载,
p0与p1 p2 p3 相比多了一个高阻输入的悬浮态。
- P1口是准双向 I / O 口,具有内部上拉电阻,可驱动4个 LS 型 TTL 负载。P1口是完全可提供给用户使用的准双向 I / O 口。 MOSI /P1.5、 MISO /P1.6和 SCK /P17可用于对内部 Flash 存储器的串行编程和校验,它们分别是串行数据输入、串行数据输出和移位脉冲引脚
- P2口是准双向 I / O 口,具有内部上拉电阻,可驱动4个 LS 型 TTL 负载。当AT89S51单片机扩展外部 RAM 及 I / O 接口芯片时,P2口作为高8位地址总线使用,输出高8位地址也可作为通用 I / O 口使用
- P3口是准双向 I / O 口,具有内部上拉电阻。P3口可作为通用 I / O 口使用,可驱动4个LS型 TTL 负载
- P3口的第二功能定义
引脚 | 第二功能 | 说明 |
P3.0 | RXD | 串行数据输入 |
P3.1 | TXD | 串行数据输出 |
P3.2 | INT0 | 外部中断0输入 |
P3.3 | INT1 | 外部中断1输入 |
P3.4 | T0 | 定时/计数器 T0 外部计数输入 |
P3.5 | T1 | 定时/计数器 T1 外部计数输入 |
P3.6 | WR | 外部数据存储器的写选通控制 |
P3.7 | RD | 外部数据存储器的读选通控制 |
- AT89S51单片机内部程序存储器为4KB Flash 存储器,地址范围为0000H~ 0FFFH
AT89S51单地址总线,可外扩的程序存储器空间最大为64KB,地址范围为0000H~ FFFFH
地址空间最低位的位地址与其字地址相同,其地址字节的末位为0H或8H
- 64k程序存储器空间有5个特殊单元分别对应于5个中断源的中断服务子程序的中断入口
中断源 | 入口地址 |
外部中断0(INT0) | 0003H |
定时/计数器T0 | 000BH |
外部中断1(INT1) | 0013H |
定时/计数器T1 | 001BH |
串行口 | 0023H |
- 堆栈主要是为子程序调用和中断操作而设立的,具体功能有两个,保护断点和现场保护
- 机器周期、指令周期与指令时序
时钟周期是单片机时钟控制信号的基本时间单位。若时钟晶体的振荡频率为 fose ,则时钟周期 Tosc =1/fosc。例如, fosc =6MHz, Tosc =166.7ns
CPU 完成一个基本操作所需要的时间称为机器周期。单片机常把执行一条指令的过程分为几个机器周期。每个机器周期完成一个基本操作,如取指令、读数据或写数据等。AT89S51单片机的每12个时钟周期为一个机器周期,即 Tov =12/fosc。例如, fosc =6MHz, Tey =2us; fose =12MHz, Tcy = l μ s
指令周期P28
- 复位操作单片机复位时PC初始值为0000H,复位时,SP=07H
- 在AT89S51单片机中,若采用6MHz晶振,则一个机器周期2us
- 一个机器周期为12个时钟周期
- AT89S51单片机特殊寄存器(SFR)占内部RAM的部分地址
- 数组
字符数组用单撇号
Char a [10]={‘a’, ‘c’, ‘x’, ‘z’, ‘a’, .....};
字符串数组用双撇号
Char a[11]={“ dfhjdf”};
字符/字符串数组结束皆为‘\0’
17.
数码管显示实例
数值0亮为abcdef 对应二进制时从gf~a读
共阴极时为: 0 0 1 1 1 1 1 1 对应16进制为0x3FH
共阳极时为:1 1 0 0 0 0 0 0 对于16进制为0xC0H
循环移位函数的头文件是<intrins.h>
18.5个中断请求源的中断请求标志分别由特殊功能寄存器TCON和SCON的相应位锁存P159
19.关于各中断源的中断优先级关系,可归纳为下面两条基本规则:
①低优先级可被高优先级中断,高优先级不能被低优先级中断。
②任何一种中断源(不管是高优先级还是低优先级)一旦得到响应,不会再被它的同级中断源所中断。如果某个中断源被设置为高优先级,在执行该中断源的中断服务程序时,不能被任何其他中断源的中断请求所中断
20.
中断源 | 中断级别 | 地址 | 中断号N | 中断向量 |
外部中断0(INT0) PX0 | 最高 | B8H | 0 | 0003H |
定时/计数器T0 PT0 | B9H | 1 | 000BH | |
外部中断1(INT1) PX1 | BAH | 2 | 0013H | |
定时/计数器T1 PT1 | BBH | 3 | 001BH | |
串行口 PS | 最低 | BCH | 4 | 0023H |
以上 中断线排列设置为1(高优先级)后排列设置为0(低优先级)
实例:PT0=1,PS=1则优先级由高到低为:PT0 > PS > PX0 > PX1 > PT1
21.响应中断请求的条件
一个中断源的中断请求要得到响应,必须满足以下必要条件:
- 总中断允许开关接通,即IE寄存器中的中断允许总开关控制位 EA =1。
- 该中断源发出了中断请求,即该中断源对应的中断请求标志位为1。
- 该中断被允许,即该中断源的中断允许控制位为1。
- 无相同优先级或更高优先级的中断正在被服务
断允许寄存器IE的作用,是控制所有中断源的开放或禁止,以及每个中断源是否被允许。寄存器IE的位格式如下:
EX0:外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。
ET0:T0溢出中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。
EX1:外部中断1允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。
ET1:T1溢出中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
ES:串行中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。EA:中断总允许位。EA=1,CPU开放中断;EA=0,CPU禁止所有的中断请求。总允许EA好比一个总开关
22.P164
1.定时/计数器中断请求的撤销
定时/计数器中断请求被响应后,硬件会自动把中断请求标志位( TFO 或TF1)清0.定时/计数器中断请求是自动撤销的。
外部中断请求的撤销﹣-
①跳沿触发方式外部中断请求的撤销。包括两项内容:中断请求标志位清0和外部中信号的撤销。其中,中断请求标志位( IEO 或IE1)清0是在中断响应后由硬件自动完成击而由于跳沿信号过后也就消失了,所以跳沿方式的外部中断请求也是自动撤销的
23.P167大题
24 IP寄存器的内容为0001 0100B则优先级最高者为外部中断1 最低优先级为定時器T1
P170 P188思考题1
25. 下列说法正确的是
A 同一级别的中断请求按时间的先后顺序响应
B 同一时 同一级别的多中断请求,将形成阻塞,系统无法响应
C 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求中断
D 同级中断请求不能嵌套
- T0、T1都具有定时器和计数器两种工作模式,不论是工作在定时器模式下还是计数器模式下,实质都是对脉冲信号进行计数,只不过计数信号的来源不同。计数器模式对加在 TO (P3.4)和T1(P3.5)两个引脚上的外部脉冲信号进行计数(见图7-1);而定时器模式对单片机的系统时钟经内部12分频后的内部脉冲信号(脉冲信号周期=机器周期)计数。由于系统时钟频率是定值,所以可根据计数值计算出准确的定时时间。两个定时/计数器都属于增1计数器,即每对一个脉冲计一次数,则计数器增1。P171
- 方式3只适用于定时/计数器 TO ,而定时/计数器T1不能工作于方式3
28定时/计数器控制寄存器TCON怎么配置?四种方式
TMOD 寄存器的字节地址为89H,不能位寻址。其格式如图7-2所示。
其8位分为两组,高4位控制T1工作方式,低4位控制 TO 工作方式。其各位的功能说
明如下
TGATE : 门控位。 GATE =0, 定时/计数器是否计数, 仅由运行控制位 TRx( x =0,1)来控制; GATE =1, 定时/计数器是否计数,要由外部中断引脚( INT0 或INT1)上的电平与 TRx
的状态这两个条件共同控制
TMOD | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 89H |
GATE | C/`T | M1 | M0 | GAT`E | C/`T | M1 | M0 | ||
T1工作方式字段 | T0工作方式字段 |
四种方式
M1 | MO | 工作方式 |
0 | 0 | 方式0,为13位定时/计数器 |
0 | 1 | 方式1,为16位定时/计数器 |
1 | 0 | 方式2,为8位的初值自动装入定时/计数器 |
1 | 1 | 方式3,仅适用T0此时T0分成2个8位计数器,T1停止计数 |
TCON 寄存器的字节地址为88H,可位寻址,位地址为88H~8FH
TCON | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 88H |
TF1 | TR1 | TF0 | TR0 | IE1 | IT0 | IE0 | IT0 |
要使定时器/计数器停止运行,也必须通过设置TCON中的某些位来实现。当定时器/计数器计满溢出,或有外部中断请求时,TCON能标明溢出和中断情况。下面介绍控制寄存器TCON每位的含义:
TF1:定时器T1溢出标志位。当定时器T1溢出时,由硬件自动使TF1置1,并向CPU申请中断。CPU响应中断后,自动对TF1清零。TF1也可以用软件清零。
TR1:定时器T 1运行控制位。可由软件置1(或清零)来启动(或关闭)定时器T1,使定时器T1开始计数。用指令SETB TR1(或CLR TR1)使TR1置1(或清零)。
TF0:定时器T0溢出标志位。其功能与TF1相同。
TR0:定时器T0运行控制位。其功能与TR1相同。
IE1:外部中断1请求标志位。
IT1:外部中断1触发方式控制位。
IE0:外部中断0请求标志位。
IT0:外部中断0触发方式控制位。
IE1、IT1、IE0、IT0这4位将在第3节讲述。
控制寄存器TCON的位地址是88H,可以对它进行位寻址。
其低4位功能与外部中断有关,已在第6章中断系统中介绍过。这里仅介绍与定时/计数器相关的高4位功能。
①TF1、 TFO :计数溢出标志位。当计数器计数溢出时,该位置1。使用查询方式时,此位可供 CPU 查询,但应注意查询后,应使用软件及时将该位清0。使用中断方式时,此位作为中断请求标志位,进入中断服务程序后由硬件自动清0。
②TR1、 TRO :计数运行控制位。TR1(或 TRO )=1,启动定时/计数器计数的必要条件:TR1(或TR0)=0,停止定时/计数器计数。该位可由软件置1或清0。
27. SBUF 只能读出不能写入,两个数据缓冲器公用一个特殊功能寄存器字节地址(99H)
- 串行口的四种方式:
SMO SM1 | 方式 | 功能说明 |
0 0 | 方式0 | 同步移位寄存器输入/输出方式(用于扩展 IO 口) |
0 1 | 方式1 | 8位异步收发,波特率可变(由定时/计数器控制) |
1 0 | 方式2 | 9位异步收发,波特率为 fosc /64或 fosc /32 |
1 1 | 方式3 | 9位异步收发,波特率可变(由定时/计数器控制) |
SM2:多机通信控制位。多机通信是在方式2和方式3下进行的,因此SM2位主要用于方式2或方式3
28.串行口的方式0为同步移位寄存器输入/输出方式。这种方式并不是用于两个AT89S51单片机之间的异步通信,而是用于外接移位寄存器,用来扩展并行 I/O 口
- P177