单片机期末复习

单片机期末复习


只针对MCS-51单片机

基础

  • A/Acc:累加器。
  • B:B寄存器。
  • DPTR:数据指针,一个16位的SFR,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。
  • E A ‾ \overline{{EA}} EA E A ‾ \overline{{EA}} EA引脚确定CPU的访问片内、片外存储器。
    • E A ‾ \overline{EA} EA接高电平时,程序将从片内存储器开始执行;当PC超出片内ROM的容量时,会自动转向片外程序存储器执行程序。
    • E A ‾ \overline{EA} EA接低电平时,迫使单片机只能只能执行片外存储器
    • 此处要注意8031没有内部程序存储器,只能接低电平
  • PC:16位程序计数器,工作方式:1.程序计数自动+1。2.执行有条件,无条件转移指令,程序计数器被置入新的数值,从而使程序流向发生变化。PCL,是其低八位;PCH,是其高八位。
  • PSW:程序状态寄存器,一个8位可读写寄存器。
    • Cy(PSW.7):进位标志位。
    • Ac(PSW.6):辅助进位标志位。
    • F0(PSW.5):标志位
    • RS1,RS0(PSW.4,PSW.3):4组工作寄存器去选择控制位1和位0。
    • OV(PSW.2):溢出标志位
    • PSW.1:保留位
    • P(PSW.0):奇偶标志位,用来表示累加器A中为1的位数的奇偶数,P=1,则A中的 ‘1’位数为奇数,P=0,则A中的 ‘1’ 位数位偶数
  • P0-P3:4个并行I/O口
  • R0-R7:表示当前的工作寄存器组中的寄存器。
  • SFR:特殊寄存器,用于对片内各个功能部件进行管理、控制、监视。
  • SP:堆栈指针,一个8位的特殊功能寄存器,一个字节数据压入堆栈前, SP自动+1,一个字节数据弹出堆栈后,SP自动-1。
  • 内部数据存储器(RAM):共128个单元,地址范围:00H~7FH。
    • 00H-1FH,为4组通用工作寄存器,每个区含8个8位寄存器编号R0~R7,使用由PSW的PS1和PS0控制,如PS1=0,PS0=1,使用1组工作寄存器。
    • 20H-2FH:可以进行共128位的位寻址,共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的对应值是 00H-7FH 。
    • 30H-7FH:为用户RAM存储器,只能进行字节寻址。
  • 机械周期:12个时钟周期,单片机完成一个基本操作需要的时间,分为6种状态:S1-S6。每个状态又分为2拍:P1,P2。所以一个机械周期的12个时钟周期又可以表示为:S1P1,S2P2 … \dots S6P2。如果采用12MHz晶振,1个机械周期为 1 12 ∗ 1 0 6 ∗ 12 s = 1 u s \cfrac{1}{12*10^{6}}*12s=1us 12106112s=1us
  • 时钟周期:1/晶体震荡频率
  • 寻址范围:单位字节,1KB=1024Byte= 2 10 2^{10} 210Byte
    • 单片机程序存储区的寻址范围是由程序计数器PC的位数决定的,若PC为16位,则寻址范围是(64K): 2 6 ∗ 2 10 = 64 K 2^6*2^{10}=64K 26210=64K
  • BCD码: 用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。
  • 溢出率: 溢出率应该是每秒溢出的次数。12/fosc=每个机器周期时间, ( 12 f o s c ) ∗ ( 256 − 初 值 ) = 溢 出 一 次 所 需 的 时 间 (\cfrac{12}{fosc})*(256-初值)=溢出一次所需的时间 (fosc12)(256)=-------这里 (256-初值) 代表溢出多少个机械周期,最后用1除以该数就代表每秒溢出的次数,也就是溢出率。
  • 时钟周期 = 晶振周期 = 振荡周期Tosc = 晶振频率(振荡频率fosc)的倒数。
  • 复位时,堆栈SP=07H,P0~P3=0FFH,其他都为0

单片机概述

  • 单片机还可以称为微控制器嵌入式控制器
  • 与普通计算器不同之处:将微处理器存储器各种输入输出接口集成到一个一块芯片上。
  • 根据基本操作处理位数分类:1位单片机,4位单片机,8位单片机,16位单片机,32位单片机.
  • MCS-51系列单片分类及其不同之处:
    • 分类:8031,8051,8751
    • 8031:1个8位cpu,128BRAM,21个特殊寄存器SFR,4个8位并行I/O接口,1个全双工接口,2个16位定时器/计数器,中断系统。
    • 8051:在8031的基础上,片内又集成了4KBROM作为程序存储器,是1个程序不超过1KB的程序。
    • 8071:在8031的基础上增加4KB的EPROM,它1个程序不超过1KB的小系统。用户可以把程序固化在EPROM中,可以反复修改程序。

内部RAM可寻址位

在这里插入图片描述
知道位地址,求字节地址和位数?
位地址=x(变成十进制),字节地址=y(16进制),位数=n
n = x − ⌊ x 8 ⌋ ∗ 8 , y = 2 ⌊ x 8 ⌋ H n=x-⌊ \cfrac{x}{8}⌋*8,y=2⌊ \cfrac{x}{8}⌋H n=x8x8,y=28xH

指令系统

描述指令的意义

*意义
Rn当前工作区的8个工作寄存器R0~R7
Ri当前工作区可作地址寄存器的2个寄存器R0、R
direct直接地址
#data包含在指令中的8位立即数
#data16包含在指令中的16位立即数
@间接寄存器或基址寄存器的前缀
(X)X中的内容
((X))由X寻址单元中的内容,即(X)中的内容
→ \to 右边的内容被左边的内容取代
C/Cy位处理机中的累加器或进位标志位
OV溢出标志
addr1111位目的地址
addr1616位目的地址
rel相对转移指令的偏移量,位8位带符号数的补码数。
bit内部RAM或特殊功能寄存器中的直接寻址位

寻址方式

  1. 寄存器寻址
    MOV A,Rn; n=0~7
  2. 直接寻址
    MOV A,40H
  3. 寄存器间接寻址
    MOV A,@Ri; i=1或0
  4. 立即寻址
    MOV A,#40H;
  5. 基址寄存器加变址寄存器间址寻址
    以DPTR或PC作为基址,A作为变址,两者内容相加形成16位进制的操作数的地址。
    MOV A,@A + DPTR;
  6. 位寻址
    MOV C,40H;
    把40H位的值送进位位C;
  7. 相对寻址

数据传送指令

数据传送类指令
MOV 内部 RAM ( 包括特殊功能寄存器)的 数据传送
MOVX 外部扩展RAM 的 数据传送
MOVC 程序存储器 的 读取数据 ( 包括数据表)

以下代码不在做过多做文字描述,详情看上章描述指令的意义

MOV <目的操作数> <源操作数>

  • mov A, Rn;(Rn) → \to A, n=0~7 把Rn的内容复制到A的内容
  • mov A, @Ri; ((Ri)) → \to A, i=0,1
  • mov A, direct; (direct) → \to A
  • mov A, #40H; 40 → \to A
  • mov Rn,A; A → \to (Rn), n=0~7
  • mov Rn, direct; (direct) → \to (Rn)

累加器读写外部数据存储器

  • movx A,@DPTR; ((DPTR)) → \to A 读外部RAM/IO
  • movx @DPTR,A;(A) → \to ((DPTR)) 写外部RAM/IO

查表指令movc

  • movc A,@A + PC
  • movc A, @A +DPTR

字节交换指令XCH

  • XCH A,Rn; (A) ⇆ \leftrightarrows (Rn)

半字节交换指令XCHD

  • XCHD A,@Ri;
    累加器A的低四位与内部RAM低四位交换,例:
    (R0)= 60H, (60H)=3EH, (A)=59H
    执行 XCHD @R0,A; 则 (A)=5EH, (60H)=39H

算数操作指令

程序执行的结果将使程序状态寄存器–PSW中的进位(Cy),辅助进位(Ac),溢出(OV),P 4种标志位,置“1”或者清“0”,但是增1减1指令不影响这些标志位。

加法指令运算结果对标志位的影响:

  1. 位7有进位,则置标志位Cy为“1”,否则清“0”.
  2. 位3有进位,则置辅助进位标志Ac为“1”,否则清“0”.
  3. 如果位6有进位,位7无进位,或者位7有进位,位6无进位,置溢出标志位OV为“1”,否则清“0”.
  4. 若结果“1”的个数为奇数,置P为“1”,否则清“0”.
  5. 值得注意的是,溢出标志位只有在带符号数时才有意义。两个带符号数相加若OV为“1”,则说明运算超出了累加器A的运算范围(-128~+128),产生溢出,运算结果错误,否则运算结果正确。

加法指令ADD

ADD A, Rn; (A)+(Rn) → \to A, n=0~7
ADD A,direct; (A)+(direct) → \to A
ADD A,@Ri; (A)+((Ri)) → \to A, i=0,1
ADD A,#data; (A)+# data → \to A

例:(A)= 53H, (R0) = FCH, 执行指令 ADD A,R0
0101 0011 + ) 1111 1100 1 ← 0011 1111 \begin{matrix} & 0101&0011 \\ +)& 1111&1100\\ \hline 1\leftarrow&0011&1111 \end{matrix} +)1010111110011001111001111

结果为(A)=4FH,Cy=1, AC=0, OV=0, P=1(A中的“1”为奇数)
注意: 此时OV为0是因为位6,位7都进位。

带进位加法指令ADDC

ADDC A, Rn; (A)+(Rn)+Cy → \to A, n=0~7
ADDC A,direct;
ADDC A,@Ri;
ADDC A,#data;

增1指令INC

INC A
INC Rn
INC direct
INC @Ri
INC DPTR

十进制调整指令DA

DA A;
针对BCD码的加法运算;
修正方法:

  • 累加器低4位大于9或辅助进位位Ac=1则进行低4位加6修正。
  • 累加器高4位大于9或辅助进位位Ac=1则进行低4位加6修正。
  • 累加器高4位为9,低4为大于9,则高4为和低4为分别加6修正。

例:(A)=56H,(R5)=67H,把他们看作压缩的BCD数,进行BCD数的加法。执行指令:
ADD A,R5
DA A
0101 0110 + ) 0110 0111 1011 1101 + ) 0110 0110 1 ← 0010 0011 \begin{matrix} & 0101&0110 \\ +)&0110&0111\\ \hline &1011&1101\\ +)&0110&0110\\ \hline 1\leftarrow&0010&0011 \end{matrix} +)+)10101011010110110001001100111110101100011

(A)=23H,Ac=1,Cy=1,P=1

带结尾的减法指令SUBB

SUBB A, Rn; (A)-(Rn)-Cy → \to A, n=0~7
SUBB A,direct;
SUBB A,@Ri;
SUBB A,#data;

减1指令DEC

DEC A
DEC Rn
DEC direct
DEC @Ri

乘法指令MUL

乘法指令除法指令,建议转换成10进制后计算
MUL AB; A*B → \to BA
累加器A和寄存器B中的无符号8位整数相乘,其16位积的低位在累加器中,高位在寄存器B中。

除法指令DIV

DIV AB; A/B → \to A(商) B(余数)
商放在累加器A中,余数放在寄存器B中。

逻辑运算指令

简单逻辑操作指令CLR ,CPL

  • CLR A; 使累加器清“0”
  • CPL A; 使累加器取反

左环移指令RL

  • RL A; 累加器A循环左移,位7取代位0

带进位左环移指令RLC

  • RLC A;累加器A循环左移,Cy取代位0,位7取代Cy,

右环移指令RR

  • RR A; 累加器A循环右移,位0取代位7

带进位右环移指令RRC

  • RRC A;累加器A循环右移,Cy取代位7,位0取代Cy,

累加器半字节交换指令SWAP

  • SWAP A;累加器高半字节和低半字节互换
    (A)=C5H
    SWAP A;
    (A) = 5CH

逻辑与指令ANL

其他指令不在一 一列举。
ANL A, Rn; (A) ∧ \land (Rn) → \to A

逻辑或指令ORL

ORL A,Rn; ( A ) ∨ ( R n ) → A (A) \lor(Rn)\to A (A)(Rn)A

逻辑异或指令XRL

XRL A,Rn; ( A ) ⊕ ( R n ) → A (A)\oplus(Rn)\to A (A)(Rn)A


控制转移类指令

无条件转移指令AJMP

AJMP addr11;
该指令执行时,先将PC+2,然后把addr11送到PC.10-PC.0,PC.15-PC.11保持不变。

相对转移指令SJMP

SJMP rel;
rel是单字节的带符号的8位二进制补码数,rel为正,则向后(地址增大的方向),否则向前(地址减小的方向),执行本指令时,PC先加2(本指令为2个字节),再把指令的有符号偏移量rel加入PC上。
用户在编写程序时,只需在相对转移指令中,直接写上要转向的目标地址标号就可以了。
例:
L O O P : M O V A , R 6 ⋮ S J M P L O O P ⋮ \begin{matrix} LOOP:&MOV&A,R6\\ &&\vdots\\ &SJMP&LOOP\\ &&\vdots \end{matrix} LOOP:MOVSJMPA,R6LOOP
程序在汇编时,由汇编程序自动填入偏移量。
在手工汇编时,偏移量需要自己计算:

  • 1230H:SJMP 46H
    SJMP所在地址为1230H,rel=46H时正数,则PC=1230H+02H+46H=1278H
  • 1230H:SJMP 0E7H
    rel=0E7H是负数19H的补码,PC=1230H+02H-19H=1219H
  • 根据目标地址计算偏移量
    向前偏移:rel=FFH-源地址+目标地址-1
    向后偏移:rel=目标地址-源地址-2

长跳转指令LJMP

LJMP addr16

间接跳转指令JMP

JMP @A+DPTR
转移目标由A中8位无符号数与DPTR的16位数内容之和来确定。

条件转移指令JZ

JZ rel ;若A=0,则PC+2+rel—>PC;
;否则,PC+2—>PC
还有是:
JNZ rel ;若A!=0,则PC+2+rel—>PC;
;否则,PC+2—>PC

比较不相等转移指令CJNE

CJNE A,direct,rel
CJNE A,#data,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
比较前两个操作数大小,不相等则转移,PC先加3(本条指令占3个字节),在加rel,
如果第一个操作数小于第二个操作数,则置Cy为“1”,否则清“0”.

减一不为零转移指令DJNZ

DJNZ Rn,rel;
DJNZ direct, rel;
操作数减一,并将结果送到源操作数中。结果不为0则转移。本指令可使用寄存器Rn或direct用作循环变量,控制循环次数。

调用子程序指令

  • 短调用指令
    ACALL addr11
    执行该指令时,PC先+2(该指令占2个字节),获取下一条指令地址,并把该地址压入堆栈保护,SP+1,PCL入栈,SP+1,PCH入栈,SP+1,再把PC高5位和addr11连接得到16位地址,送入PC。调用的子程序地址必须与下一条指令的第一个字节在同一2K区内
  • 长调用指令
    LCALL addr16
    可以调用64K内的任意子程序,执行该指令时,PC先+3(该指令占3个字节),获取下一条指令地址,并把该地址压入堆栈保护,SP+1,PCL入栈,SP+1,PCH入栈,SP+1,再把指令的第二第三字节(A15-A8,A7-A0)装入PC的高位,低位,执行程序。

子程序返回指令RET

RET; ( S P ) → P C H , ( S P ) − 1 → S P ; ( S P ) → P C L , ( S P ) − 1 → S P (SP)\to PCH,(SP)-1\to SP;(SP)\to PCL,(SP)-1\to SP (SP)PCH,(SP)1SP;(SP)PCL,(SP)1SP

中断返回指令RETI

RETI
与RET不同处,清除被置“1”MCS-51单片机内部中断优先级状态.

空操作指令NOP

NOP
消耗一个机械周期


位操作类指令

数据位传送指令MOV

MOV C,bit
MOV bit, C
把源操作数指出的位变量送到目的操作数指定的单元去。
例: M O V C , 06 H ; ( 20 H ) . 6 → C y MOV C,06H; (20H).6\to Cy MOVC,06H;(20H).6Cy
这里06H是位地址,20H是内部RAM的字节地址。06H是内部RAM 20H字节位6的位地址。

位变量修改指令CLR ,CPL ,SETB

CLR C ;清“0”Cy
CLR bit ;清“0”bit
CPL C ;Cy取反
CPL bit ;bit位取反
SETB C ;置Cy“1”
SETB bit ;置bit位“1”
例:
CLR 27H; 0 → ( 24 H ) . 7 位 0\to(24H).7位 0(24H).7
CPL 08H; ( 21 H ) . 0 ‾ → ( 21 H ) . 0 位 \overline{(21H).0}\to(21H).0位 (21H).0(21H).0
SETB P1.7; 1 → P 1.7 位 1\to P1.7位 1P1.7

位变量逻辑与指令ANL

ANL C,bit; b i t ∧ C y → C y bit\land Cy \to Cy bitCyCy
ANL C, b i t ‾ \overline{bit} bit; b i t ‾ ∧ C y → C y \overline{bit}\land Cy\to Cy bitCyCy

位变量逻辑或指令ORL

ORL C,bit;
ORL C, b i t ‾ \overline{bit} bit;

条件转移指令JC ,JNC,JB,JNB

JC rel; Cy=1,转移
JNC rel; Cy=0,转移
JB bit,rel; 直接寻址位=1,转移
JNB bit,rel; 直接寻址位=0,转移
JBC bit,rel; 直接寻址位=1,转移并清0直接寻址位

中断系统

能够实现中断处理功能的部件。

作用

中断方式完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。

中断源入口地址

中断优先级由高到低。

中断源入口地址中断请求标志位
外部中断00003HIE0
定时器/计数器 T0 溢出中断000BHTF0
外部中断10013HIE1
定时器/计数器 T1 溢出中断001BHTF1
串行口中断0023HT1/R1

中断请求标志位特殊寄存器TCON/SCON

TCON为定时器/计数器的控制寄存器。

TCONTF1TR1TF0TR0IE1IT1IE0IT0
位地址8FH8DH8BH8AH89H88H
  • 跳沿触发方式:引脚 I N T 0 ‾ 或 I N T 1 ‾ 从 高 电 平 跳 变 到 低 电 平 有 效 。 \overline{INT 0}或\overline{INT1}从高电平跳变到低电平有效。 INT0INT1
  • 电平触发方式:引脚 I N T 0 ‾ 或 I N T 1 ‾ 低 电 平 有 效 。 \overline{INT0}或\overline{INT1}低电平有效。 INT0INT1
*功能
IT0选择 I N T 0 ‾ \overline{INT0} INT0跳沿触发方式(“1”)或电平触发方式 (“0”) 控制位
IE0外部中断0请求标志位
IT1选择 I N T 1 ‾ \overline{INT1} INT1跳沿触发方式(“1”)或电平触发方式 (“0”) 控制位
IE1外部中断1请求标志位
TF0定时器/计数器T0溢出中断请求标志位
TF1定时器/计数器T1溢出中断请求标志位

SCON为串行口控制寄存器,其低二为分别为接收中断和发送中断标志位。

  • T1–发送中断请求标志位
  • R1–接收中断请求标志位

中断允许寄存器IE

IE功能
EA中断允许控制位
ES串行中断控制位
ET1定时器/计数器T1溢出中断允许位
EX1外部中断1允许位
ET0定时器/计数器T0溢出中断允许位
EX0外部中断0允许位

中断优先级寄存器IP

IP功能
PS串行中断优先级控制位
PT1定时器T1中断优先级控制位
PX1外部中断1中断优先级控制位
PT0定时器T0中断优先级控制位
PX0外部中断0中断优先级控制位

中断请求相应条件

  1. 中断源发出中断请求。
  2. CPU开中断相应,即EA为1。
  3. 申请中断的中断源中断允许位为1。
  4. 无同级或更高级中断服务正在被响应。

中断服务程序流程

关 中 断 → 现 场 保 护 → 开 中 断 → 中 断 处 理 → 关 中 断 → 现 场 恢 复 → 开 中 断 → 中 断 返 回 关中断\to现场保护\to开中断\to中断处理\to关中断\to现场恢复\to开中断\to中断返回

扩展外部中断源的方法

  • 定时器/计数器作为外部中断源的使用方法:T0/T1引脚作为外部中断源输入引脚,定时器/计数器溢出请求标志位TF1/TF0作为外部中断请求标志位。
  • 中断和查询结合的方法:对多规格中断源按优先级排序,把优先级最高了连接 I N T 0 ‾ \overline{INT0} INT0,其余中断源用“线或”连接 I N T 1 ‾ \overline{INT1} INT1,同时连接P1接口。发生中断时,用查询方法判断哪个中断源发生中断。
  • 用优先权编码器扩展外部中断源:由优先权编码器给出多个外部中断源安排中断优先级,8031只响应优先级最高的。

查询法扩展外部中断源比较简单,但是当中断源数量较多时,查询时间较长。
用优先权编码器扩展外部中断源,结构简单,价格低廉,但是无法实现中断服务子程序嵌套。

定时器/计数器

  • 计数工作模式:T0(P3.4)和T1(P3.5)输入引脚作为两个计数器的输入引脚,发生负跳变计数+1。
  • 定时工作模式:每个机器周期产生一个计数脉冲,根据计数次数算出时间。定时器有4种工作模式,由TMOD的M1和M0位控制。
    注意: 当作为计数器工作时,因为一个计数周期要进行一个负跳变,高电平到低电平的过程,所以一个计数周期=2*机械周期,即24个振荡周期,又因为外部脉冲的变化必须要比 51单片机采样的速度慢才行,否则会丢失计数脉冲的个数,所以外部脉冲的脉冲频率 ≤ \le 振荡频率/24。
    例如:

选用6MHz频率的晶体,求允许输入最大的脉冲频率?

允 许 输 入 最 大 脉 冲 频 率 = 6 ∗ 1 0 6 24 H z = 250 ∗ 1 0 3 H z = 250 K H z 允许输入最大脉冲频率=\cfrac{6*10^{6}}{24}Hz=250*10^{3}Hz=250KHz =246106Hz=250103Hz=250KHz

工作方式寄存器TMOD

GATE C / T ‾ C/\overline{T} C/TM1M0GATE C / T ‾ C/\overline{T} C/TM1M0

高4位控制T1,低4位控制T0。

  • GATE:
    • 值为0时,仅由控制位TRX(X=0,1)=1来启动计数器/定时器运行。
    • 值为1时,由TRX(X=0,1)=1和外中断引脚 I N T 0 ‾ \overline{INT0} INT0 I N T 1 ‾ \overline{INT1} INT1的高电平共同控制。
  • C / T ‾ C/\overline{T} C/T:定时器模式,计数器模式选择。
    • =0,定时器模式,计数输入信号时内部时钟脉冲
    • =1,计数器模式,计数器对外部输入引脚T0,T1的外部脉冲(负跳变)计数。
  • M1,M0工作模式选择。
    M1M0工作方式
    00方式0,13位定时器/计数器
    01方式1,16位定时器/计数器
    10方式2,8位初值自动填装入8位定时器计数器
    11方式3,仅适用于T0,分成两个8位计数器,T1停止计数

定时器/计数器控制寄存器TCON

TF1TR1TF0TR0IE1IT1IE0IT0
  • 跳沿触发方式:引脚 I N T 0 ‾ 或 I N T 1 ‾ 从 高 电 平 跳 变 到 低 电 平 有 效 。 \overline{INT0}或\overline{INT1}从高电平跳变到低电平有效。 INT0INT1
  • 电平触发方式:引脚 I N T 0 ‾ 或 I N T 1 ‾ 低 电 平 有 效 。 \overline{INT0}或\overline{INT1}低电平有效。 INT0INT1
*功能
IT0选择 I N F 0 ‾ \overline{INF0} INF0作为跳沿触发方式(“1”)或电平触发方式 (“0”) 控制位
IE0外部中断0请求标志位
IT1选择 I N F 1 ‾ \overline{INF1} INF1作为跳沿触发方式(“1”)或电平触发方式 (“0”) 控制位
IE1外部中断1请求标志位
TF0定时器/计数器T0溢出中断请求标志位
TF1定时器/计数器T1溢出中断请求标志位
TR0定时器/计数器T0启动标志位,=1启动
TR1定时器/计数器T1启动标志位

串行口

串行口控制器SCON

SM0SM1SM2RENTB8RB8T1R1
  • SM0,SM1串行口4种工作方式控制
SM0SM1方式功能波特率
000同步位于寄存器方式,常用作外接位移寄存器,用以扩展并行I/O口fosc/12
0118位异步收发,比特率可变(由定时器控制) 2 S M O D 32 ∗ 定 时 器 T 1 溢 出 率 \cfrac{2^{SMOD}}{32}*定时器T1溢出率 322SMODT1
1029位异步收发 2 S M O D 64 ∗ f o s c \cfrac{2^{SMOD}}{64}*fosc 642SMODfosc
1139位异步收发,波特率可变(由定时器控制) 2 S M O D 32 ∗ 定 时 器 T 1 溢 出 率 \cfrac{2^{SMOD}}{32}*定时器T1溢出率 322SMODT1
  • SM2多机通讯控制位
    主要用于方式2、3。
    • SM2=1时,收到第9位数据(RB8)为1,将收到的前八位放入SBUF,置RI为“1”,产生中断请求。RB8为0,丢弃前8位数据。
    • SM2=0时,无论RB8为何值,都把前8为放入SBUF。置RI为“1”,产生中断请求。
    • 方式1,当SM3=1,收到有效停止位,才会置RI为“1”.
    • 方式0,SM3=0.
  • REN允许串行接收位
    • REN=0,禁止串行接收
    • REN=1,允许串行接收
  • TB8发送的第9位
    • 在方式2、3,TB8是要发送的第9位数据
    • 在双机通讯,TB8做奇偶校验位。
    • 在多机位通讯中,TB8=0表示数据帧,TB8=1表示为地址帧。
  • RB8接收的第9位数据
    • 在方式0,不使用RB8
    • 在方式1,接收停止位
    • 在方式2,3,接收第9位数据
  • TI发送中断标志位
  • RI接收中断标志位

特殊功能寄存器PCON

SMOD-------

SMOD:波特率选择位
例,方式1波特率计算公式:
方 式 1 波 特 率 = 2 S M O D 32 ∗ 定 时 器 T 1 溢 出 率 方式1波特率=\cfrac{2^{SMOD}}{32}*定时器T1溢出率 1=322SMODT1
溢出率的意义,见名词解释

波特率

串行口每秒发送或接收的位数。
定 时 器 T 1 溢 出 率 = 计 数 速 率 256 − X = f o s c / 12 256 − X 定时器T1溢出率=\cfrac{计数速率}{256-X}=\cfrac{fosc/12}{256-X} T1=256X=256Xfosc/12

方式波特率
0fosc/12
1 2 S M O D 32 ∗ 定 时 器 T 1 溢 出 率 \cfrac{2^{SMOD}}{32}*定时器T1溢出率 322SMODT1
2 2 S M O D 64 ∗ f o s c \cfrac{2^{SMOD}}{64}*fosc 642SMODfosc
3 2 S M O D 32 ∗ 定 时 器 T 1 溢 出 率 \cfrac{2^{SMOD}}{32}*定时器T1溢出率 322SMODT1

特殊寄存器功能背诵

TMOD

GATE C / T ‾ C/\overline{T} C/TM1M0GATE C / T ‾ C/\overline{T} C/TM1M0

TCON

TF1TR1TF0TR0IE1IT1IE0IT0

SCON

SM0SM1SM2RENTB8RB8T1R1

PCON

SMOD-------

IE

EA--ESET1EX1ET0EX0

IP

---PSPT1PX1PT0PX0

D/A、A/D接口

D/A转换器

D/A(数/模)转换器输入的数字量,经转换后输出的是模拟量。转换过程就是将数码按照权值大小转换成相应的模拟分量,再以叠加方法把相应的模拟分量相加,和就是D/A转换结果。

主要技术指标

  • 分辨率:输入单位数字量变化引起模拟量输出的变化。
    • 定义满刻度值与 2 n 2^n 2n(n为D/A转换器二进制位数)之比。
    • 例如:满量程为10V,8为D/A转换器分辨率多少?
      • 10 V 2 8 = 39.1 m V = 0.391 % 满 量 程 \cfrac{10V}{2^8}=39.1mV=0.391\%满量程 2810V=39.1mV=0.391%
  • 建立时间:描述D/A转换速度。
  • 转换精度:理想情况下,与分辨率基本一致,由于电源电压、参考电压,电阻等因素影响存在误差。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值