51单片机的资源、接口以及内部系统

MCU资源

词表

机器周期 单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。 一个机器周期包括12个时钟周期。 如果一个单片机选择了12MHZ晶振,它的时钟周期是1/12us,它的一个机器周期是12x(1/12)us,也就是1US。

S5P2 每个 时钟周期 (以后常称状态S)有两个节拍即相位P1和P2,CPU就以两相时钟P1和P2为基本节拍指挥8051各们部件协调工作。 因此,S5P2指的就是第5个时钟周期的相位2(后半拍)。

S6 第6个时钟周期

PC = progammer counter //程序计数器
ACC = accumulate //累加器
PSW = progammer status word //程序状态字
SP = stack point //堆栈指针
DPTR = data point register //数据指针 寄存器
IP = interrupt priority //中断优先级
IE = interrupt enable // 中断使能
TMOD = timer mode //定时器 方式 (定时器/计数器 控制寄存器)
ALE = alter (变更,可能是)
PSEN = progammer saving enable //程序存储器使能(选择外部程序存储器的意思)
EA = enable all(允许所有中断)完整应该是 enable all interrupt PROG = progamme (程序)
SFR = special funtion register //特殊功能寄存器
TCON = timer control //定时器控制
PCON = power control //电源控制
MSB = most significant bit//最高有效位
LSB = last significant bit//最低有效位
CY = carry //进位(标志)
AC = assistant carry //辅助进位
OV = overflow //溢出
ORG = originally //起始来源
DB = define byte //字节定义
EQU = equal //等于
DW = define word //字定义
E = enable //使能
OE = output enable //输出使能
RD = read //读
WR = write //写

中断部分:
INT0 = interrupt 0 //中断0
INT1 = interrupt 1//中断1
T0 = timer 0 //定时器0
T1 = timer 1 //定时器1
TF1 = timer1 flag //定时器1 标志 (其实是定时器1中断标志位)
IE1 = interrupt exterior //(外部中断请求,可能是)
IT1 = interrupt touch //(外部中断触发方式,可能是)
ES = enable serial //串行使能
ET = enable timer //定时器使能
EX = enable exterior //外部使能(中断)
PX = priority exterior //外部中断优先级
PT = priority timer //定时器优先级
PS = priority serial //串口优先级

寄存器部分:

SFR:special funtion register //特殊功能寄存器(片内RAM 80H~FFH)
ACC:accumulate //累加器
PSW:progammer status word //程序状态字
SP:stack point //堆栈指针
DPL,DPH:DPTR(data point register //数据指针寄存器)的低8位和高8位
IE:interrupt enable // 中断使能
IP:interrupt priority //中断优先级
PCON:power control //电源控制
SCON:serial control //串行口控制
SBUF:serial buffer //串行数据缓冲
TCON:timer control //定时器控制
TMOD:timer mode //定时器方式
PSW:
CY:carry (psw.7) //进位(标志)
AC:auxiliary carry (psw.6) //辅助进位
F0: (psw.5) //用户自定义标志位
RS1,RS0:register select (psw.4,psw.3)//工作寄存器组选择位
OV:overflow (psw.2) //溢出
P:parity (psw.0) //奇偶校验位

IE:
EA:Enable All Interrupt //CPU开/关中断控制位
ET1:Enable Timer //定时器2溢出中断允许位
ES:Enable Serial Port //串行口中断允许位
EX:Enable External //外部中断1的中断允许位

IP:

PS:Priority Serial //串口优先级
PT:Priority Timer //定时器优先级

PX:Priority External //外部中断优先级

SCON:
RI:Receive Interrupt //串行口接收中断请求标志位

TI:Transmit Interrupt //串行口发送中断请求标志位

TCON:
TF1:Timer1 Overflow Flag //定时器1溢出中断请求标志
TR1:Timer1 Run //定时器1启动控制位
IE1:Interrupt Edge //外部中断1请求标志位
IT1:Interrupt Type //外部中断1触发方式选择位

8051引脚:
RST:RESET //复位,重启
P3: RXD:Received eXchange Data (10,p3.0)//接收串行数据
TXD:Transmit eXchange Data (11,p3.1)//发送串行数据
INT0:interrupt 0 (12,p3.2)//中断0
INT1:interrupt 1 (13,p3.3)//中断1
T0:timer 0 (14,p3.4)//定时器0
T1:timer 1 (15,p3.5)//定时器1
RD:ReaD (16,p3.6)//外部数据存储器(RAM)的读信号
WR:WRite (17,p3.7)//外部数据存储器(RAM)的写信号
XTAL2,XTAL1:External Crystal Oscillator (18,19) //外部晶体振荡器
PSEN:Program Store Enable (29) //程序存储器(ROM)使能
ALE:Address Latch Enable (30) //地址锁存
EA:External Address Enable (31) //外部程序存储器(ROM)地址允许

其它:

OE:output enable //输出使能
MSB = most significant bit//最高有效位
LSB = last significant bit//最低有效位
ORG = originally //起始来源
DB = define byte //字节定义
EQU = equal //等于
DW = define word //字定义
CLKOUT:Clock out,时钟输出
BUSWDITH:总线宽度
Vref:参考电压(带ADC的单片机中有的)
HSO:High Speed Output,高速输出
HSI:High Speed Input:高速输入
INST:Instruction,指令
READY就绪,总线中的就绪信号或引脚
NMI:No Mask Interruput (Input):不可屏蔽的中断请求(输入)
BHE:Bank High Enable:存储器的高位允许,如在80286系统中RAM的组织为16位的,分为高8位和低8位数据,分别的控制信号为BHE和BLE

MCS-51指令
(1)数据传送类指令(7种助记符)
助记符
英文注释
功能
MOV Move 对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送
MOVC Move Code 读取程序存储器数据表格的数据传送
MOVX Move External RAM 对外部RAM的数据传送
XCH Exchange 字节交换
XCHD Exchange low-order Digit 低半字节交换
PUSH Push onto Stack) 入栈
POP Pop from Stack) 出栈

(2)算术运算类指令(8种助记符)
ADD Addition 加法
ADDC Add with Carry 带进位加法
SUBB Subtract with Borrow 带借位减法
DA Decimal Adjust 十进制调整
INC Increment 加1
DEC Decrement 减1
MUL Multiplication、Multiply 乘法
DIV Division、Divide 除法

(3)逻辑运算类指令(10种助记符)
ANL And Logic 逻辑与
ORL OR Logic 逻辑或
XRL Exclusive-OR Logic 逻辑异或
CLR Clear 清零
CPL Complement 取反
RL Rotate left 循环左移
RLC Rotate Left throught the Carry flag 带进位循环左移
RR Rotate Right 循环右移
RRC Rotate Right throught the Carry flag 带进位循环右移
SWAP Swap 低4位与高4位交换

(4)控制转移类指令(17种助记符)
ACALL Absolute subroutine Call 子程序绝对调用
LCALL Long subroutine Call 子程序长调用
RET Return from subroutine 子程序返回
RETI Return from Interruption 中断返回
JMP Jump Indirect
SJMP Short Jump 短转移
AJMP Absolute Jump 绝对转移
LJMP Long Jump 长转移
CJNE Compare and Jump if Not Equal 比较不相等则转移
DJNZ Decrement and Jump if Not Zero 减1后不为0则转移
JZ Jump if Zero 结果为0则转移
JNZ Jump if Not Zero 结果不为0则转移
JC Jump if the Carry flag is set 有进位则转移
JNC Jump if Not Carry 无进位则转移
JB Jump if the Bit is set) B位为1则转移
JNB Jump if the Bit is Not set B位为0则转移
JBC Jump if the Bit is set and Clear the bit 位为1则转移,并清除该位
NOP No Operation 空操作

(5)位操作指令(1种助记符)
SETB Set Bit 置位
ORG Origin
DB Define Byte
DW Define Word
EQU Equal
DATA Data
XDATA External Data
BIT Bit
END End

51外部引脚
Reset 复位信号引脚
RxD (10–P3.0) Receive Data 串口接收端
TxD (11–P3.1) Transmit Data 串口发送端
INT0(————) (12–P3.2)
Interrupt0 外部中断0信号输入引脚
INT1(————) (13–P3.3)
Interrupt1 外部中断1信号输入引脚
T0 (14–P3.4)
Timer0 定时/计数器0输入信号引脚
T1 (15–P3.5)
Timer1 定时/计数器1输入信号引脚 WR(———) (16–P3.6)
write 写信号引脚 RD(———) (17–P3.7)
read 读信号引脚 PSEN(—————)
progammer saving enable 外部程序存储器读选通信号
ALE Address Latch Enable 地址锁存允许信号
EA(———) enable 外部ROM选择信号

51内部寄存器
SFR special funtion register 特殊功能寄存器
ACC accumulate 累加器A
PSW progammer status word 程序状态字
CY (PSW.7) carry 进位标志位
AC (PSW.6) assistant carry 辅助进位标志位
OV (PSW.2) overflow 溢出标志位
PC progammer counter 程序计数器
DPTR data point register 数据指针寄存器
SP stack point 堆栈指针
TCON timer control 定时器控制寄存器
TF1 (TCON.7) Timer1 flag T1中断标志位
TR1 (TCON.6) Timer1 Run T1运行控制位
TF0 (TCON.5) Timer0 flag T0中断标志位
TR0 (TCON.4) Timer0 Run T0运行控制位
IE1 (TCON.3) Interrupt1 exterior 外部中断1中断标志位
IT1 (TCON.2) Interrupt1 touch 外部中断1 触发方式选择位
IE0 (TCON.1) Interrupt0 exterior 外部中断0中断标志位
IT0 (TCON.0) Interrupt0 touch 0-电平触发 1-下降沿触发
IE (A8H) interrupt enable 中断允许寄存器
EA (IE.7) enable all interrupt 中断总允许位
ES (IE.4) enable serial 串行口中断允许位
ET1 (IE.3) enable timer 1 T1中断允许位
EX1 (IE.2) enable exterior 1 外部中断1中断允许位
ET0 (IE.1) enable timer 0 T0中断允许位
EX0 (IE.0) enable exterior 0 外部中断0中断允许位
IP (B8H) interrupt priority 中断优先级寄存器
PS (IP.4) priority serial 串口优先级标志位
PT1 (IP.3) priority timer 1 定时器1优先级标志位
PX1 (IP.2) priority exterior 1 外部中断1优先级标志位
PT0 (IP.1) priority timer 0 定时器0优先级标志位
PX0 (IP.0) priority exterior 0 外部中断0优先级标志位
PCON (87H) power control 电源控制和波特率选择
TMOD (89H) timer mode 定时器方式控制寄存器
MSB = most significant bit//最高有效位
LSB = last significant bit//最低有效位
OE = output enable //输出使能

知识

完整的指令周期

一般一条完整的指令包括:取指周期、间址周期、执行周期、中断周期。

JMP X:该指令的指令周期只有取指周期。

ADD X:该指令只有取指周期、执行周期。

一个指令周期包含的机器周期个数亦与指令所要求的动作有关,如单操作数指令,只需要一个取操作数周期,而双操作数指令需要两个取操作数周期。实际上,不同的指令可以有不同的机器周期个数,而每个机器周期又可包含不同的时钟脉冲个数。

取指周期:在取指周期中CPU主要完成两个操作:(1)按程序计数器PC的内容取指令(2)形成后继指令的地址;

间址周期:当遇到间接寻址的指令时,由于指令字中只给出操作数有效地址的地址,因此,为了取出操作数,需先访问一次存储器,取出有效地址,然后再访问存储器,取出操作数。

执行周期:间址周期是取出操作数的有效地址。执行周期是取出操作数,并执行。

中断周期:当CPU采用中断方式实现主机与I/O交换信息时,CPU在每条指令执行阶段结束前, 都要发中断查询信号,以检测是否有某个I/O提出中断请求。如果有请求,CPU则要进入中断响应阶段,又称中断周期。在这阶段, CPU必须将程序断点保存到存储器中。

每个指令的CPU周期不同,每个CPU周期的长度也不同。

机器周期(CPU周期):CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。

指令周期的每个阶段都是一个机器周期。指令周期中所包含的CPU周期的长度并不是相同的,因此指令周期又有定长CPU周期组成的指令周期,不定长CPU周期组成的指令周期。

时钟周期:通常称为节拍脉冲或T周期。一个CPU周期包含若干个时钟周期。

程序计数器(PC)、堆栈指针(SP)与函数调用过程

PC(program counter)是CPU中用于存放下一条指令地址的寄存器,SP为堆栈指针。下面将介绍函数调用过程中CPU对PC和SP这两个寄存器的操作。

假设有如下函数Fun

[复制代码](javascript:void(0)😉

Fun()
{
    …………………
    Sub-fun(a, b);
    …………………
}

[复制代码](javascript:void(0)😉

当函数Fun调用其子函数sub-fun时,CPU内部执行情况如下:

  1. 执行CPU指令push,将参数a、b入栈,即根据CPU SP寄存器的值,把a、b的值存入SP指向的地址,并把SP减1(栈通常从高地址向低地址生长)。
  2. 执行CPU指令call,CPU会把目前PC寄存器的值push到heap中,这个动作意味着存储返回地址。
  3. 接着CPU把PC寄存器的值设为函数sub-fun的地址,则下个被执行的指令就是函数sub-fun的第一行语句。
  4. 当函数sub-fun在执行时,可以根据目前SP寄存器的值计算出参数a、b的地址。
  5. 如果函数sub-fun有定义局部变量,这些变量的地址会从目前heap的顶端继续生长(这就是为什么我们在嵌入式开发时,总是会要求应用程序工程不要定义size太大的局部变量,否则容易导致栈溢出的原因)。
  6. 当函数sub-fun执行完毕后,CPU会执行ret指令,这个命令会从heap顶端pop出返回地址——即调用sub-fun之前Fun函数执行到的语句的地址,然后更改PC寄存器的值为这个返回地址,则下个指令就会返回执行函数sub-fun的下一行语句,从而完成了函数调用。
中断

作用:主要用于实时监测与控制,及时地响应中断请求源提出的请求,快速响应、及时处理。由片内中断系统实现。采用中断技术完全消除了单片机在查询方式中的等待现象(长时间花在查询是否有服务请求发生的定时查询操作上);效率和实时性。

过程:

img

中断系统结构

img

响应过程

image-20230417222719360

2.中断响应过程:

中断请求:中断源将相应请求中断的标志位置 “1”,表示发出请求,并由CPU 查询。

中断响应:在中断允许条件下响应中断。断点入栈→撤除中断标志→关闭低同级中断允许→中断入口地址送PC。 这些工作都是由硬件自动完成的。

中断服务:根据入口地址转中断服务程序,包含保护现场、执行中断主体、恢复现场。

中断返回:执行中断返回RETI指令→断点出栈→开放中断允许→返回原程序。

3.中断服务程序入口地址:

中断响应主要是由硬件自动生成一长调用指令(LCALL addr16),CPU执行它便是响应中断,转入相应的中断服务程序。addr16就是中断服务程序的入口地址,MCS-51的5个中断源的中断服务程序入口地址固定

中断函数编号中断名称中断标志位中断使能位中断向量地址默认优先级
0外部中断IE0EX00x00031(最高)
1T0TF0ET00x000B2
2外部中断IE1EX10x00133
3T1TF1ET10x001B4
4UARTTI/RIES0x00235
5T2TF2/EXF2ET20x002B6

说明:在接受中断申请时,如遇下列情况之一时,硬件生成的长调用指令“LCALL”将被封锁:

⑴ CPU正在执行同级或高一级的中断服务程序中。

⑵ 查询中断请求的机器周期不是执行当前指令的最后一个周期。

⑶ 当前正在执行RETI指令或执行对IE、IP的读/写操作指令。

中断的执行过程与调用子程序相似点:

⑴ 都是中断当前正在执行的程序,转去执行子程序或中断服务程序。

⑵ 都是由硬件自动地把断点地址压入堆栈,然后通过软件完成现场保护。

⑶ 执行完子程序或中断服务程序后,都要通过软件完成现场恢复,并通过执行返回指令,重新返回到断点处,继续往下执行程序。

⑷ 二者都可以实现嵌套,如中断嵌套和子程序嵌套。

中断的执行与调用子程序差别:

⑴ 中断请求信号可以由外部设备发出,是随机的,比如故障产生的中断请求;子程序调用却是由软件编排好的。⑵ 中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。

⑶ 中断响应是受控的,其响应时间会受一些因素影响;子程序响应时间是固定的。

6.4.5 中断响应时间

正常中断响应时间至少为3~8个机器周期,如果有同级或高级中断服务,将延长中断响应时间。

6.4.2 外部中断请求采样(针对外部中断请求信号进行的)

而内部中断请求都发生在芯片内部,可以直接置位TCON或SCON中的中断请求标志。

在每个机器周期的S5P2期间,各中断标志采样相应的中断源,并置入相应标志。

6.4.3 中断查询

若查询到某中断标志为1,则按优先级的高低进行处理,即响应中断。

80C51的中断请求都汇集在TCON和SCON中。而CPU则在下一机器周期的S6期间按优先级的顺序查询各中断标志。

先查询高级中断,再查询低级中断。 同级中断按内部中断优先级序列查询。 如果查询到有中断标志位为“1” ,则表明有中断请求发生,接着从相邻的下一个机器周期的S1状态开始进行中断响应。

51单片机中断优先级

中断源 默认中断级别 序 号
INT0—外部中断0 最高 0
T0 —定时器/计数器0中断 第2 1
INT1—外部中断1 第3 2
T1 ----定时器/计数器1中断 第4 3
TX/RX—串行口中断 第5 4
T2 —定时器/计数器2中断 最低 5

TCON定时器控制寄存器

Timing Controllor

定时器控制寄存器,作用是控制定时器的启、停,标志定时器溢出和中断情况。

img

TF1TF1 :TF1=1表示T1有中断产生。(Timer Flag,定时器标志位)
TR1TR1 :TR1=1表示T1开始运行。软件启动位(单片机中T0引脚,需要高低电平的驱动)
TF0TF0 :TF0=1表示T0有中断产生。(溢出位)
TR0TR0 :TR0=1表示T0开始运行。软件启动位(单片机中T1引脚,需要高低电平的驱动)
IE1IE1 :IE1=1表示INT1有中断产生,当INT1引脚出现有效的请求信号,此位自动置1(外部中断请求标志位)
IT1IT1 :IT1=1表示INT1为下降沿触发,IT1=0表示INT1为低电平触发。(外部中断触发方式控制位 )
IE0IE0 :IE0=1表示INT0有中断产生。 当INT0引脚出现有效的请求信号,此位自动置1(外部中断请求标志位)
IT0IT0 :IT0=1表示INT0为下降沿(负跳变)触发,IT0=0表示INT0为低电平触发。(外部中断触发方式控制位 )
TMOD定时器、计数器模式控制寄存器

(TIMER/COUNTER MODE CONTROL REGISTER)

定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。

img

D0~D3 D4~D7定时/计数器的设置 。
GATE为门控位,GATE=0时,只要在编写程序时,使TCON中的TRO或TR1为1,就可以启动定时器/计数器工作。 GATE=1时,不仅要在编写程序时,使TCON中的TRO或TR1为1,且需要外部引脚也为高电平,才能 工作。
C/TC/T :定时/计数模式切换,C/T=0时为定时模式,C/T=1时为计数模式。
M1,M0:用来选择定时计/计数器的工作方式,一般使用都是采用16位的计时计数器。M1,M0:用来选择定时计/计数器的工作方式,一般使用都是采用16位的计时计数器。

img

IE 中断允许寄存器 (A8H) img

EA :整体中断允许位;EA=1允许中断。

ET2 :T2中断允许位;ET2=1允许中断(S52才有)。

ES :串行中断允许位;ES=1允许中断。

ET1 :T1中断允许位;ET1=1允许中断。

EX1 :INT1中断允许位;EX1=1允许中断。

ET0 :T0中断允许位;ET0=1允许中断。

EX0 :INT0中断允许位;EX0=1允许中断。

SCON串口工作方式寄存器

Serial Control Register

用于控制串行通信的方式选择、接收和发送,指示串口的状态。SCON既可以字节寻址,也可以位寻址,其字节地址为98H,地址位为98H~9FH。

相应的功能位定义如下:

RI:接收中断标志位,数据接收结束时,标志位会自动置1,需要通过程序将其置0

TI:发送中断标志位,数据发送结束时,标志位会自动置1,需要通过程序将其置0

RB8:存放发送数据的第9位

TB8:存放接收数据的第9位

REN:串行接收允许位,用于控制数据接收的允许和禁止,为1时允许接收,为0时禁止接收

SM2:多机控制位

SM1,SM0:串行工作方式

PCON功率控制寄存器

Power Control Register

功率控制寄存器。包含SMOD,SMOD0,LVDF,POF,GF1,GF0,PD,IDL等控制位。

在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍,0波特率不加倍

CPU

CPU结构

8051内部CPU是一个字长为二进制8位的中央处理单元,也就是说它对数据的处理是按字节为单位进行的。与微型计算机CPU类似,8051内部CPU也是由算术逻辑部件(ALU)、控制器(定时控制部件等)和专用寄存器组三部分电路构成。

1.算术逻辑部件

8051的算术逻辑部件ALU是一个性能极强的运算器,既可以进行加、减、乘、除四则运算,还可以进行与、或、非、异或等逻辑运算,还具有数据传送、移位、判断和程序转移等功能。

8051算术逻辑部件ALU由一个加法器、两个8位暂存器(TMP1和TMP2)和一个性能卓越的布尔处理器组成。虽然TMP1和TMP2对用户并不开放,但可用来为加法器和布尔处理器暂存两个8位二进制操作数。

2.定时器控制部件

定时器控制部件起着控制器的作用,由**定时控制逻辑、指令寄存器和振荡器(OSC)**等电路组成。

指令寄存器IR用于存放从程序存储器EPROM/ROM中取出的指令(即操作)码,定时控制逻辑用于对指令寄存器中的操作码进行译码,并在OSC的配合下产生执行该指令的时序脉冲,以完成相应指令的执行。

3.专用寄存器组

专用寄存器组主要用来指示当前要执行指令的内存地址,存放操作数和指示指令执行后的状态。它是任何一台计算机都不可缺少的组成部件。专用寄存器组主要包括程序计数器PC、累加器A、程序状态字PSW、堆栈指示器SP、数据指针DPTR和通用寄存器B等。

(1)程序计数器PC

程序计数器PC是一个二进制16位的程序地址寄存器,专门用来存放下一条将要执行指令的内存地址,能自动加1。

8051程序计数器PC由16个触发器构成,故他的编码范围为0000H~FFFFH,共64K。也就是说,8051对程序存储器的寻址范围为64KB。

(2)累加器A

累加器A又记做ACC,是一个具有特殊功能用途的二进制8位寄存器,专门用来存放操作数或运算结果。在CPU执行某种运算前,两个操作数中的一个通常应放在累加器A中,运算完后累加器A中便可以得到运算结果。

(3)通用寄存器B

通用寄存器B是专门为乘法和除法设置的寄存器,也是一个二进制8位寄存器,由8个触发器组成。该寄存器在乘法或除法前,用来存放乘数或除数,在乘法或除法后用于存放乘积的高8位或除数的余数。

(4)程序状态字PSW

PSW是一个8位标志寄存器,用来存放指令执行后的有关状态。PSW中的各位状态通常是在指令执行过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。

img

PSW.7为最高位,PSW.0为最低位。

① 进位标志位Cy:用于表示加减运算过程中最高位A7(累加器最高位)有无进位或借位。在加法运算时,若累加器A中最高位A7有进位,则Cy=1;否则,Cy=0。在减法运算时,若A7有了借位,则Cy=1;否则Cy=0。此外,CPU在进行移位操作时也会影响这个标志位。

②辅助进位标志位AC:用于表示加减运算时低4位(A3)有无向高4位(即A4)进位或借位。若AC=0,表示加减过程中A3没有向A4进位或借位;若AC=1,表示加减过程中A3向A4有了进位或借位。

③用户标志位F0:F0标志位的状态通常不是机器在执行指令过程中自动形成的,而是由用户根据程序执行需要传送指令确定。一经设定便由用户程序自动检测,以决定用户程序流向。

④寄存器选择位RS1和RS0:8051共有8个工作寄存器,分别命名为R0R7,工作寄存器R0R7常常被用户用来进行程序设计,但它在RAM中的实际物理地址是可以根据需要选定的。RS1和RS0就是为了这个目的提供给用户使用,用户通过RS1和RS0的状态可以方便的决定R0~R7的实际物理地址。

⑤溢出标志位OV:可以指示运算过程中是否发生了溢出,在机器指令过程中自动形成。若在机器在执行运算指令过程中,累加器A中运算结果超过了8位能表示的范围,即-128~+127,则OV标志自动置1;否则OV=0。

⑥奇偶校验位P:PSW.1为无定义位,用户也不可使用。PSW.0为奇偶标志位P,用于指令运算结果中1的个数的奇偶性,若P=1,则累加器A中1的个数为奇数;若P=0,则累加器A中1的个数为偶数。

(5)堆栈指针SP

堆栈指针是一个8位寄存器,能自动加1或减1,专门用来存放堆栈的栈顶地址。堆栈是一种能按“先进后出”或“后进先出”规律存数据的RAM区域。这个区域可大可小,常称为堆栈区。8051片内RAM共有128B,地址范围为00H~FFH,故这个区域中任何一个子域都可以用作堆栈区,即作为堆栈来使用。

(6)数据指针DPTR

数据指针DPTR是一个16位寄存器,由两个8位寄存器DPH和DPL拼成。DPH为DPTR的高8位,DPL为DPTR的低8位。DPTR可以用来存放片内ROM的地址,也可以用来存放片外RAM和片外ROM地址,主要用于访问片外RAM。

输出

1.倒数9秒后闪烁三秒

A.倒数九秒且没有显示零的循环

在flag改变后进入紧接着的if语句,

设置break

B.倒数后一直为0不变

sec2没有设置好?,把break放在了cnt=0的前面,导致cnt一直不置零!

C.到3之后频繁闪烁,显示3不变

cnt未清零

若单片机的显示数组下标没有初始化,显示全段的数码管

D.显示完321后又是全段显示,在0显示完之后没有bereak;

img

2.定义一个按键,控制数码管显示“HELLO!”和“12345”

H:bcefg 0x89

E:adefg 0x86

L:fed 0xC7

O:abcdef0xC0

!: 0x79

unsigned char code LedChar[] = { //数码管显示字符转换表
 0xF9, 0xA4, 0xB0, 0x99, 0x92};
unsigned char LedBuff[6] = { //数码管显示缓冲区,初值 0xFF 确保启动时都不亮
 0x89, 0x86, 0xC7, 0xC7, 0xC0, 0x79
};
3.利用中断做数码管动态显示

解决了消隐问题

解决了数码管抖动

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《单片机原理及接口技术(C51编程)第3版》是一本关于单片机原理和接口技术的教材,本书包括了对C51编程的详细介绍。 单片机原理指的是了解和掌握单片机的工作原理和结构。单片机是一种集成电路,包含了处理器、存储器和各种输入输出接口等部件。通过学习单片机原理,可以了解到单片机内部结构和工作模式,从而为后续的编程和应用提供基础。 接口技术是指单片机与外部设备之间的通信和连接方式。本书对于串口、并口、定时器/计数器、中断、ADC/DAC等接口技术进行了详细介绍。通过学习这些接口技术,读者可以了解各种常用外设的工作原理,并学会如何在单片机中进行配置和控制。 本书第3版对C51编程进行了全面更新和扩充。C51是一种常用的单片机编程语言,具有丰富的函数库和强大的功能。通过学习C51编程,读者可以掌握单片机的程序设计和调试技巧,能够实现各种功能和应用。 本书内容系统、详细、实用,适合初学者学习和参考。通过阅读本书,读者可以了解到单片机原理和接口技术的基本知识,掌握C51编程的方法和技巧。同时,本书也提供了大量的例程和实例,方便读者进行实践和应用。 总之,《单片机原理及接口技术(C51编程)第3版》是一本很好的教材,可以帮助读者全面了解单片机的原理和接口技术,掌握C51编程的基本方法和技巧。对于学习和应用单片机的人来说,是一本非常有价值的参考书。 ### 回答2: 《单片机原理及接口技术(C51编程)第3版PDF》是一本关于单片机原理和接口技术的教材,提供了丰富的知识和实践指导。单片机是一种集成电路,具备了计算机的核心功能,包括运算、存储和控制等。它广泛应用于各种电子设备中,如家用电器、工业控制、通信设备等。 这本教材主要介绍了C51单片机的编程原理和接口技术。C51是一种常见的单片机型号,它基于哈弗处理器架构,具有灵活的外设接口和丰富的编程资源。教材中详细介绍了C51的内部结构和工作原理,包括CPU、RAM、ROM、IO口等模块的功能和特点。 对于接口技术部分,教材提供了丰富的例子和实践操作。通过学习这些案例,读者可以了解如何将外部设备与C51单片机进行连接和通信。例如,教材介绍了LED灯、LCD屏幕、按键、数码管等常用外设的接口原理和编程方法。 此外,教材还对常见的应用场景进行了案例分析,如温度控制、电机驱动、无线通信等。通过这些案例,读者可以了解单片机在各种实际应用中的优势和实现方法。 总的来说,这本教材是学习C51单片机原理和接口技术的重要参考资料。它既提供了理论知识的讲解,也提供了实践操作的指导,对于初学者和专业人士都具有很高的实用价值。 ### 回答3: 《单片机原理及接口技术(c51编程)第3版pdf》是一本介绍单片机原理和接口技术的教材,采用 C51 编程语言进行讲解。 单片机原理是指单片机的工作原理和内部结构。单片机是一种集成电路,包含中央处理器、存储器和各种接口电路。它具有控制和执行指令、数据处理和通信等功能,被广泛应用于各种电子设备中。这本教材详细介绍了单片机的硬件结构、指令系统、存储器管理等方面的知识,帮助读者全面理解和掌握单片机原理。 接口技术是指单片机与外部设备之间的连接和通信方式。单片机通常需要与各种传感器、执行器、存储器等外部设备进行数据交换和控制。这本教材介绍了单片机与各类接口电路的连接方法和通信协议,包括串口、并口、SPI、I2C等常见接口。同时,教材还涵盖了使用 C51 编程语言进行接口编程的方法和实例,帮助读者学会如何在单片机上实现各种接口功能。 第三版的教材相较于前两版进行了内容的更新和补充。它对最新的单片机技术进行了介绍,加入了更多实际应用的案例和示例,使读者可以更好地了解和应用单片机原理和接口技术。 总之,《单片机原理及接口技术(c51编程)第3版pdf》是一本全面介绍单片机原理和接口技术的教材,具有较高的实用性和教学价值。读者通过学习本书,能够掌握单片机的基本原理和接口编程技巧,为后续的单片机应用和开发奠定坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张学灿@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值