51单片机串口通信相关寄存器及设置指引

51单片机串口通信相关寄存器及设置指引
51单片机串口通信相关寄存器及设置指引

51单片机串口通信相关寄存器及设置指引

关键字

SBUF:串口数据缓存寄存器

SCON:串口通信状态控制寄存器

Fosc:晶振的震荡频率

PSW:程序状态字寄存器

1、SBUF数据缓存寄存器

SBUF可直接寻址专用寄存器,是个8位寄存器,不可进行位操作。字节地址99H。

物理上它是两个寄存器,一个发送寄存器,一个接收寄存器。

写数据到SBUF中时(SBUF = 0x52;),单片机自己会判断是写到发送寄存器。

读取SBUF中数据时(rReg = SBUF;),单片机自己会判断是读取接收寄存器。

接收寄存器是双缓冲的,以避免在接收下一帧数据之前,单片机还来不及响应接收中断,没有把上一帧的数据读取走,而产生两次帧数据重叠问题。

发送寄存器,没有缓冲,发送时单片机直接主动发出数据,不会产生重叠问题。(扩展知识:为了保持最大的传输速率,一般不需要发送寄存器建立双缓冲功能。双缓冲功能有别于发送数据队列缓存区。)

2、SCON串口通讯状态控制寄存器

SCON可直接寻址专用寄存器,是个8位寄存器,可以进行位操作。

SCON用于控制串行通信的模式选择、接收和发送,标识串口的状态。

SCON即可以字节寻址也可以位寻址,字节地址98H,地址位为98H~9FH。

系统复位时,SCON的所有位都被清除。

SCON串口通讯状态控制寄存器的格式及各位的功能定义如下:

●SM0、SM1

SM0和SM1是串口模式选择位。SM0和SM1编码对应串口4种模式,如下表:

●SM2

SM2在模式2和模式3中是多机通信的使能位。

在模式0中,SM2必须为0。

在模式1中,若SM2=1且没有接收到有效的停止位,则接收中断标志位RI不会被激活。在模式2和模式3中若SM2=1且接收到的第9位数据(RB8)为0,则接收中断标志RB8不会被激活,若接收到的第9位数据(RB8)为1,则RI置位。此功能可用于多处理机通信。

●REN

REN为允许串行接收位,由软件置位或清除。置位时允许串行接收,清除时禁止串行接收。(置位:写入1;清除:写入0;)

●TB8

TB8是模式2和模式3要发送的第9位数据。常见通信协议中该位是奇偶位,可以按需要由软件置位或清除。在多处理机通信中,该位用于表示是地址帧还是数据帧。

●RB8

RB8是模式2和模式3中接收到的第9位数据(例如是奇偶位或者地址/数据标识位——地址帧、数据帧),在模式1中若SM2=0,则RB8是已接收的停止位。

在模式0中RB8不使用。

●TI

TI 为发送中断标志位,由硬件置位,软件清除。模式0中在发送第8位末尾由硬件置位;在其他模式时,在发送停止位开始时由硬件置位。TI=1时,申请中断。CPU响应中断后,发送下一帧数据。在任何模式中都必须由软件清除TI。

●RI

RI为接收中断标志位,由硬件置位,软件清除。

模式0中在接收第8位末尾由硬件置位;在其他模式时,在接收停止位的中间由硬件置位。RI=1时,申请中断,要求CPU取走数据。但在模式1中,SM2=1且未接收到有效的停止位时,不会对RI置位。在任何模式中都必须由软件清除RI。

系统复位时,SCON的所有位都被清除。

3.PCON 控制寄存器

PCON控制寄存器是可直接寻址专用寄存器,是个8位寄存器,不可以进行位操作。

PCON的地址为87H只能按字节寻址。

PCON控制寄存器的格式及各位的功能定义如下:

仅SMOD与串口的控制有关,其他位与掉电模式有关。

●GF0、GF1

GF0、GF1通用的标志位,用于一般的用途,对于通用8051系列单片机为通用的标志位。

●PD

PD掉电标志位,对于通用8051系列单片机,PD为1进入掉电状态。

●IDL

IDL休眠模式位,IDLE模式位,对于通用8051系列单片机,IDL为1进入空闲工作模式,在PD和IDL同时为1时,PD优先。

●SMOD

SMOD串行通信波特率系数控制位,串口工作在模式1和模式2时,若使用T1(定时器1)作为波特率发生器其SMOD=1则波特率加倍(见下面详述)。

(1)工作模式0

SM0 = 0,且SM1 = 0时,串口工作在模式0,同步移位寄存器模式。

其数据传输的波特率固定为Fosc/12,数据由RXD引脚输入或输出,同步时钟由TXD引脚输出。接收/发送的是8位数据,传输是低位在前,帧格式如下:

(2)工作模式1

SM0 = 0,且SM1 = 1时,串口工作在模式1,数据传输的波特率由定时/计数器T1、T2的溢出速率决定,可通过程序设定。当T2CON寄存器中的RCLK和TCLK置位时,用T2作为发送和接收波特率发生器,而RCLK = TCLK = 0时,用T1作为波特率发生器,两者可以交叉使用,即发送和接收采用不同的波特率。数据由TXD引脚发送,由RXD引脚接收。

发送或接收一帧的数据为10位,即1位起始位(0)、8位数据位(低位在先)和1位停止位(1)。真格式如下:

类似于工作模式0,当执行任一条“SBUF = xxH;”指令时,就启动串行数据的发送。

在执行写入SBUF的指令时,也将“1”写入发送移位寄存器的第9位,并通知发送控制器有发送请求。实际上,发送过程始于内部的16分频计数器下次满度翻转(全“1”变全“0”)后的那几个机器周期的开始。所以,每位的发送过程与16分频计数器同步,而不是与“写SBUF”同步。

此模式的工作过程包括发送和接收两部分。

当执行任一条写“SBUF = xxH;”指令时,就启动串行数据的发送。在执行写入SBUF 的指令时,也将“1”写入发送移位寄存器的第9位,并使发送控制器开始发送。在这期间,内部的定时保证写入SBUF与激活发送之间有一个完整的机器周期。当发送脉冲有效后,移位寄存器的内容由RXD引脚串行移位输出,移位脉冲由TXD引脚输出。

在发送有效的每个机器周期,发送移位寄存器右移一位,就在其左边补“0 ”。当数据

的最高位移到移位寄存器的输出时,原写入第9位的“1”正好移到最高位的左边一位,由此向左的所有位都为“0”,这标志着发送控制器要进行最后依次移位,并撤消发送有效,同时使发送中断标志TI置位。

当REN = 1且接收中断标志RI位清除时,即启动一个接收过程。在下一个机器周期,接收控制器将“11111110”写入接收移位寄存器,并在下一周期内激发接收有效,同时由TXD引脚输出移位脉冲。在移位脉冲的控制下,接收移位寄存器的内容每一个机器周期左移一位,同时由RXD引脚接收一位输入信号。

每当接收移位寄存器左移一位,原写入的“11111110”也左移一位。当最右边的“0”移到最左边时,标志着接收控制器要进行最后一次移位。在最后移位即将结束时,接收移位寄存器的内容送入到接收数据缓冲寄存器SBUF,然后在启动接收的第10个机器周期时,清除接收信号,将RI置位。

如果在第一个时钟周期中接收到的不是起始位(“0”),就复位接收电路,继续检测RXD引脚上1到0的跳变。如果接收到的是起始位,就将其移入接收移位寄存器,然后接收该帧的其他位。接收到的位从右边移入,原来写入的1从左边移出,当起始位移到最左边时,接收控制器将控制进行最后一次移位,把接收到的第9为数据送到接收数据缓冲器SBUF和RB8,同时置位RI。

在进行最后一次移位时,能将数据送入到接收数据缓冲器SBUF和RB8而且置位RI的条件如下:

● RI = 0,即上一真数据接收完成时,发出的中断请求已经被响应,SBUF中的上一帧数据已经被取走。

● SM2 = 0或接收到的停止位为1。

这两个条件有一个不满足接收到的数据就有可能丢失,并且无法修复;如两者都满足则数据装入SBUF,停止位装入RB8且置位RI。

开始发送后的一个位周期,发送信号有效,开始将起始位送TXD引脚。一位时间后,数据信号有效。发送移位寄存器将数据由低位到高位顺序输出至TXD引脚。一位时间后第一个移位脉冲出现,将最低数据位从右边移出,同时从左边补上“0”。当数据的最高位移到移位寄存器的输出端时,先前写入第9位的“1”正好移到最高位的左边一位,而它的左区全部为“0”。在第10个位周期(16分频计数器回0时),发送控制器要进行最后一次清除发送信号,同时使发送中断标志TI置位。

当REN = 1且接收中断标志RI位清除后,若在RXD引脚上检测到一个由“1”到“0”

的跳变,立即启动一次接收的过程。同时复位16分频计数器,使输入位的边沿与时钟对齐,并将1FFH(9个“1”)写入接收移位寄存器。接收控制器继续以波特率的16倍的速率继续对RXD引脚进行检测,对每一位时间的第7、8、9个计数状态的采样值用多数表决法,当2次或2次以上的采样值相同时,采样值被接受。

(3)工作模式2、工作模式3

当SM0 = 1且SM1 = 0时,串口选择工作模式2,当SM0 = 1且SM1 = 1时,串口选择工作模式3。数据由TXD引脚发送由RXD引脚接收。

发送和接收的一帧信息为11位,即1位起始位(0),9位数位(低位在前,第9位数据位是可编程位)1位停止位(1)。发送时,可编程位(TB8)可赋0或1,接收时可编程位进入SCON中的RB8。帧的格式如下:

(4)波特率计算

串口通讯工作模式0波特率计算公式:

模式0波特率 = fosc / 12

串口通讯工作模式1波特率计算公式:

工作模式1:波特率可变8位异步通信,SMOD为PCON寄存器的最高位值(0或1)

模式1波特率 = (2^SMOD / 32) * 定时器T1的溢出率(注:当SMOD=1时,要比SMOD=0时的波特率加倍,所以也称SMOD位为波特率倍增位)串口通讯工作模式2波特率计算公式:

模式2波特率 = ( 2^SMOD / 64) * fosc

串口通讯工作模式3波特率计算公式:

模式3波特率 = (2^SMOD / 32) * 定时器T1的溢出率术语解释:

溢出速率 = 1 / 溢出时间

溢出时间(相当于定时时间)= (2^8 – TH1初值)* Tcy

机器周期Tcy = 12时钟周期 = 12*(1/fosc)

溢出速率 = 1 / 溢出时间 = 1 / [(256 - TH1初值)* (12 / fosc)] = fosc / [12 *(256-TH1初值)]

计数速率 = 1 / 计数时间 = 1 / (12 / fosc) = fosc / 12

故也可写成:溢出速率=计数速率 / (256-TH1初值) = fosc / [12 *(256-TH1初值)]

(5)经验

一般来说,定时器模式2用来确定波特率是比较理想的,它不需要中断服务程序设置初值,且算出的波特率比较准确。在用户使用的波特率不是很低的情况下,建议使用定时器T1的模式2来确定波特率。定时器模式1或模式3定时,常用T1作为波特率发生器。

而对于定时器模式0和模式1的最大特点是计数溢出后,计数器为全0。因而在循环定时或循环计数应用时就存在反复装入计数初值的问题。这不仅影响定时精度,而且也给程序设计带来麻烦。模式2就是针对此问题而设置的。定时器/计数器的模式2位自动恢复初值的(初值自动装入)8位定时器/计数器,TLX作为常数缓冲器,当TLX计数器溢出时,在置1溢出标志位TFX的同时,还自动的将THX中的初值送入至TLX,使TLX从处置开始重新计数。这种模式可以省去用户软件中重装处置的程序,简化定时器初值的计算方法,可以相当精确的确定定时时间。

而定时器模式3是为了增加1个附加的8位定时器/计数器而提供的,从而使MCS-51具有3个定时器/计数器。模式3只适用于定时器/计数器T0,定时器/计数器T1不能工作在模式3。T1处于模式3时相当于TR0=0,停止计数(此时T1可以用来做串口波特率发生器。)

延伸阅读

1. 机器周期、时钟周期

机器周期又叫时钟周期,也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,发出一个脉冲的时间就是时钟周期,也就是1/12微秒。通常也叫做系统时钟周期。是计算机中最基本的、最小的时间单位。

在通用的8051系列单片机单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。8051系列单片机单片机的一个机器周期同6个S周期(状态周期)组成。

2. PSW 程序状态字寄存器

PSW程序状态字寄存器的格式及各位的功能定义如下:

CY(Carry):CY表示加法运算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则为0。

AC(Auxiliary Carry):与CY基本相同,不同的是AC表示的是低4位向高4位的进、借位。F0:该位是用户自己管理的标志位,用户可以根据自己的需要来设定。

3. RS0、RS1工作寄存器选择

RS0、RS1这两位用于选择当前工作寄存器区。

通用8051系列单片机有8个8位寄存器R0~R7,它们在RAM中的地址可以根据用户需要来确定。

RS0、RS1:R0~R7的地址 0 0: 00H~07H 0 1: 08H~0FH 1 0: 10H~17H 1 1: 18H~1FH 4. OV溢出标识

该位表示运算是否发生了溢出。若运算结果超过了8位有符号数所能表示的范围,即-128 ~ +127,则 OV = 1。

5. 6.PSW.1位保留位,未用

6. P:P是奇偶标志位。若累加器A中1的个数为奇数,则P = 1;若累加器A中1的个数为偶数,则P = 0。

7. 单片机中断使能/激活条件

一个中断源的中断请求被响应,需要满足什么哪些必要条件?

●全局中断允许开关接通,即IE寄存器中的中断总允许位EA=1

●该中断源发出中断请求,即该中断源对应的中断请求标志位1

●该中断源的中断允许位为1,即该中断被允许

●无同级或更高级中断正在被服务

51系列单片机寄存器详解

AUXR:辅助寄存器 字节地址=8EH,不可位寻址 - - - WDIDLE DISRTO - - DISALE WDIDLE:WTD在空闲模式下的禁止/允许位 当WDIDLE=0时,WDT在空闲模式下继续计数 当WDIDLE=1时,WDT在空闲模式下暂停计数 DISRTO:禁止/允许WDT溢出时的复位输出 当DISRTO=0时,WDT定时器溢出时,在RST引脚输出一个高电平脉冲 当DISRT0=1时,RST引脚为输入脚 DISALE :ALE禁止/允许位 当DISALE=0时,ALE有效,发出恒定频率脉冲 当DISALE=1时,ALE仅在CPU执行MOVC和MOVX类指令时有效,不访问外寄存器时,ALE不输出脉冲信号 AUXR1:辅助寄存器1字节地址A2,不可位寻 - - - -- - - DPS DPS:数据指针寄存器选择位 当DPS=0时,选择数据指针寄存器DPRT0 DPRT1时,选择数据指针寄存器DPS 当= PSW:程序状态字 CY——进位标记 AC——半进位标记 F0——用户设定标记 RS1、RS0——4个工作寄存器区的选择位。 VO——溢出标记 P——奇偶校验标记 PCON:电源控制器及波特率选择寄存器 字节地址=87H,不可位寻址 SMOD - - POF GF1 GF0 PD IDL SMOD——波特率倍增位 GF1、GF0——用户通用标记 PD——掉电方式控制位,PD=1时进入掉电模式 IDL——空闲方式控制位,IDL=1时进入空闲方式 在AT89S51中PCON.4是电源断电标记位POF,上电是为1 IE:中断允许控制寄存器

EA:中断允许总控制位 当EA=0时,中断总禁止。 当EA=1时,中断总允许后中断的禁止与允许由各中断源的中断允许控制位进行设置。 EX0( EX1):外部中断允许控制位 当EX0( EX1)=0 禁止外中断 当EX0( EX1)=1 允许外中断 ET0(EX1):定时/计数中断允许控制位 当ET0(ET1)=0 禁止定时(或计数)中断 当ET0(ET1)=1 允许定时(或计数)中断 ET2:定时器2中断允许控制位,在AT89S52、AT89C52中 ES:串行中断允许控制位 当ES=0 禁止串行中断 当ES=1 允许串行中断 IP:中断优先级控制寄存器 PX0——外部中断0优先级设定位 PT0——定时中断0优先级设定位 PX1——外部中断1优先级设定位 PT1——定时中断1优先级设定位 PS——串口中断优先级设定位 优先级设定位2PT2——定时器SCON:串行口控制寄存器 SM0、SM1:串行口工作方式选择位 SM2:多机通信控制位 REN:允许/禁止串行口接收的控制位 TB8:在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清零,也可以作为奇偶校验位,在方式1中是停止位。

51单片机特殊功能寄存器详细说明

/*-------------------------------------------------------------------------- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; 程序状态字 sfr ACC = 0xE0; 累加器 sfr B = 0xF0; B寄存器 sfr SP = 0x81; 堆栈指针 sfr DPL = 0x82; 数据指针低八位 sfr DPH = 0x83; 数据指针高八位 sfr PCON = 0x87; 波特率选择寄存器 sfr TCON = 0x88; 定时器/计数器控制寄存器

sfr TMOD = 0x89; 定时器方式选择寄存器 sfr TL0 = 0x8A; 定时器0低八位 sfr TL1 = 0x8B; 定时器1低八位 sfr TH0 = 0x8C; 定时器0高八位 sfr TH1 = 0x8D; 定时器1高八位 sfr IE = 0xA8; 中断允许寄存器 sfr IP = 0xB8; 中断优先级寄存器 sfr SCON = 0x98; 串行控制寄存器 sfr SBUF = 0x99; 串行数据缓冲器 /* BIT Register */ /* PSW */ 程序状态字 sbit CY = 0xD7; 有无进位或者借位 sbit AC = 0xD6; Auxiliary Carry有无低四位向高四位的进位或借位 sbit F0 = 0xD5; 用户管理的标志位,可根据自己的需求设定 sbit RS1 = 0xD4; 这两位用于选择当前工作寄存器区。8051有8个8位寄存器R0~R7,它 们在RAM中的地址可以根据用户需要来确定。 sbit RS0 = 0xD3; RS1 RS0:R0~R7的地址0 0:00H~07H 0 1:08H~0FH 1 0:10H~17H 1 1:18H~1FH

51单片机与PC机通信资料

《专业综合实习报告》 专业:电子信息工程 年级:2013级 指导教师: 学生:

目录 一:实验项目名称 二:前言 三:项目内容及要求 四:串口通信原理 五:设计思路 5.1虚拟串口的设置 5.2下位机电路和程序设计 5.3串口通信仿真 六:电路原理框图 七:相关硬件及配套软件 7.1 AT89C51器件简介 7.2 COMPIN简介 7.3 MAX232器件简介 7.4友善串口调试助手 7.5 虚拟串口软件Virtual Serial Port Driver 6.9八:程序设计 九:proteus仿真调试 十:总结 十一:参考文献 一:实验项目名称:

基于51单片机的单片机与PC机通信 二:前言 在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。 目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。 为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。 用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。 串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式

51单片机

51单片机入门学习笔记 有一段时间不碰单片机了,现在重新整理。一是回忆知识,重新拾起来。二是给想入门单片机的朋友一点参考。一部分资料源于网络。 一、51单片机简介 目前学习板上常用的是STC89C52单片机。封装是DIP40。

主要参数 1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意选择,指令代码完全兼容传统8051。 2. 工作电压:5.5V~ 3.3V(5V单片机)/3.8V~2.0V(3V 单片机) 3.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作频率可达48MHz 4. 用户应用程序空间为8K字节 5. 片上集成512 字节RAM 6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉,P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻。 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片 8. 具有EEPROM 功能 9. 共3 个16 位定时器/计数器。即定时器T0、T1、T2 10.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒 11. 通用异步串行口(UART),还可用定时器软件实现多个UART 12. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) 二、I/O介绍 P0内部不带上拉电阻,其余三组带内部上拉电阻。P0是双向8位三态I/O口。由于内部没有上拉电阻。所以默认是高阻态(指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定。电路分析时高阻态可做开路理解),所以使用时外部必须接上拉电阻。 三、寄存器 存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器): MCS-51单片机的特殊功能寄存器 符号地址功能介绍

51单片机特殊功能寄存器功能一览表

51单片机特殊功能寄存器功能一览表 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。 8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY =0 例:78H+97H(01111000+10010111) AC:辅助进、借位(高半字节与低半字节间的进、借位)。

汇编语言实现串口通信(PC和单片机间)教学文案

8.用C语言或汇编语言实现串口通信(PC和单片机间) 上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS-232或者RS-485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示 1 硬件电路的设计 MCS-51单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MODEM方式,简单三连线结构。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51 机之间能可靠地进行串行通信,需要用电平转换芯片,可以采用MAXIM公司生产的专用芯片MAX232进行转换。电路如图1所示。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

总体设计按照整体设计思路方案绘制原理图如下所示: 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信, 1上位PC机与下位单片机异步串行通信的通信协议

51单片机寄存器汇总表

51单片机寄存器功能一览表 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O 口,中断系统,以及一个部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU 的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。

51单片机寄存器地址查询

适合初学好东西一起分享 中断使能寄存器IE 中断总开关EA=1;启动有中断EA=0;关闭所有中断 保留 TF2中断开关ET2=1;启动ET2=0;关 闭(8052) 串行口中断开关ES=1启动串口ES=0 关闭串口 TF1中断开关ET1=1;启动ET1=0;关闭 INT1中断开关EX1=1; 启动EX1=0;关闭 TF0中断开关ET0=1;启动ET0=0;关闭 INT0中断开关EX0=1; 启动EX0=0;关闭 中断优先级寄存器IP EA — ET2 ES ET1 EX1 ET0 EX0 IE 寄存器 IP.7 IP .6 IP .5 IP .4 IP .3 IP .2 IP .1 IP .0 IP 寄存器 — — PT2 PS PT1 PX1 PT0 PX0 保留 保留 TF2中断先级 PT2=1;TF2为高优先级(8052) 串行口中断优先级PS1=1;为高优先级 TF1中断先级PT1=1;TF1为高优先级 INT1中断优先级PX1=1;为最高优先 级 TF0中断先级PT0=1;TF1为高优先级 INT0中断优先级PX0=1;为最高优先 级 定时器/计数器控制寄存器TCON Timer1中断标志CPU 设置 Timer1启 动开关TR1=1;启动Timer1 TR1=0;关闭Timer1 Timer0中断标志CPU 设置 Timer0启动开关TR0=1;启动Timer1 TR0=0;关闭Timer0 INT1中断标志CPU 设置 INT1信号种类IT1=1;负边沿触发IT1=0;低电平触发 INT0中断标志CPU 设置 INT0信号种类IT0=1;负边沿触发IT0=0;低电平触发 定时器/计数器功能 外部中断功能 定时器/计数器方式寄存器TMOD

单片机寄存器汇总表图文稿

单片机寄存器汇总表 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

51单片机寄存器功能一览表 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离

不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。 8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0 AC:辅助进、借位(高半字节与低半字节间的进、借位)。 例:57H+3AH(01010111+00111010)

51单片机usart通信程序(有CRC校验)

#include #include #include #define uchar unsigned char #define uint unsigned int //uchar const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar p[]={0x01,0x03,0x25,0x23,0x00,0x01}; /* CRC 高位字节值表*/ uchar const crchi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0/**/, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; /* CRC低位字节值表*/ uchar const crclo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06/**/, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

【最新编排】基于51单片机的DHT11串口通讯

//****************************************************************// // DHT 使用范例 //单片机 AT89S5 或 STC89C5 RC // 功能 串口发送温湿度数据波特率 9600 //硬件连接 P .0口为通讯口连接DHT ,DHT 地电源和地连接单片机地 电源和地 单片机串口加MAX 3 连接电脑 // 公司 济南联诚创发科技有限公司 //****************************************************************// #include #include // typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */ typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */ typedef unsigned int U 6; /* defined for unsigned 6-bits integer variable 无符号 6位整型变量 */ typedef signed int S 6; /* defined for signed 6-bits integer variable 有符号 6位整型变量 */ typedef unsigned long U3 ; /* defined for unsigned 3 -bits integer variable 无符号3 位整型变量 */ typedef signed long S3 ; /* defined for signed 3 -bits integer variable 有符号3 位整型变量 */ typedef float F3 ; /* single precision floating point variable (3 bits) 单精度浮点数 3 位长度 */ typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数 64位长度 */ // #define uchar unsigned char #define uint unsigned int #define Data_0_time 4 //----------------------------------------------// //----------------IO口定义区--------------------// //----------------------------------------------// sbit P _0 = P ^0 ; sbit P _ = P ^ ; sbit P _ = P ^ ; sbit P _3 = P ^3 ;

51单片机IO口应用详解

51单片机IO口应用详解 MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照单片机引脚图: 这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。 P0口有三个功能: 1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口) 2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口) 3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。 P1口只做I/O口使用:其内部有上拉电阻。 P2口有两个功能: 1、扩展外部存储器时,当作地址总线使用 2、做一般I/O口使用,其内部有上拉电阻; P3口有两个功能: 除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。 有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的, 即:编程脉冲:30脚(ALE/PROG) 编程电压(25V):31脚(EA/Vpp) 在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。 ALE 地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; }

C51单片机21个特殊功能寄存器

21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83 个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途CY:进位标志。,如果做加法的话,两数位运算器只能表示到0-255中的运算器是一种8位的运算器,我们知道,88051,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有相加可能会超过2550 CY==1;无进、借位,进、借位,CY )78H+97H(01111000+10010111例: 。(高半字节与低半字节间的进、借位)AC:辅助进、借位)(01010111+0011101057H+3AH例::用户标志位F0 由用户(编程人员)决定什么时候用,什么时候不用。 :工作寄存器组选择位、RS0RS1现场保两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51中的RS1、RS0通过修改PSW不需的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中,护和现场恢复的速度。对于提高CPU 要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用。 0V:溢出标志位0。什么是溢出我们后面的章节会讲到。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV= :奇偶校验位P。运算结果有,否则为0P=1ALU它用来表示运算结果中二进制数位“1”的个

80C51寄存器详解

中断使能寄存器 通过设置中断使能寄存器IE 的EA位使能所有中断每个中断源都有单独的使能位可通过软件设置IE 中相应的使能位在任何时候使能或禁能中断中断使能寄存器IE 的各位如下所示 中断使能寄存器IE可位寻址 位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H 位符号EA/ET2ES ET1EX1ET0EX0 EA 使能标志位置位则所有中断使能复位则禁止所有中断保留 ET2 定时器2 中断使能 ES 串行通信中断使能 ET1 定时器1 中断使能 EX1 外部中断1 使能 ET0 定时器0 中断使能 EX0 外部中断0使能 8051 支持两个中断优先级有标准的中断机制,低优先级的中断只能被高优先级的中断所中断,而高优先级的中断不能被中断。 中断优先级寄存器 每个中断源都可通过设置中断优先级寄存器IP来单独设置中断优先级如果每个中断源的相应位被置位则该中断源的优先级为高,如果相应的位被复位, 则该中断源的优先级为低, 如果你觉得两个中断源不够用,别急以后我会教你如何增加中断优先级表A-5 示出了IP 寄存器的各位此寄存器可位寻址 IP寄存器可位寻址 位地址0BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8H

位符号//PT2 PS PT1PX1PT0PX0 PT2 定时器2中断优先级 PS 串行通信中断优先级 PT1 定时器1中断优先级 PX1 外部中断1 优先级 PT0 定时器0中断优先级 PX0 外部中断0 优先级 电源控制PCON 8051的CHMOS 版本可通过软件设置两种节电方式空闲模式和低功耗模式设置电源控制寄存器PCON 的相应位来进入节电方式置位IDLE 进入空闲模式空闲模式将停止程序执行RAM 中的数据仍然保持晶振继续工作但与CPU 断开定时器和串行口续工作, 发生中断将退出中断模式执行完中断程序后将从程序停止的地方继续指令的执行通过置位PDWN 位来进入低功耗模式低功耗模式中晶振将停止工作因此定时器和 串行口都将停止工作至少有两伏的电压加在芯片上因此RAM 中的数据仍将保存退 出低功耗模式只有两种方式上电或复位 SMOD 位可控制串行通信的波特率将使由定时器1 的溢出率或晶振频率产生的波特率 翻倍置位SMOD 可使工作于方式1 2 3 定时器产生的波特率翻倍当使用定时器2 产生波特率时SMOD将不影响波特率 电源控制寄存器PCON不可位寻址 编号中断源中断向量 SMOD 串行口通信波特率控制位置位使波特率翻倍

单片机寄存器名称

【转】【51单片机特殊功能寄存器功能一览表】 Posted on 2011-03-26 15:07 香格里拉\(^o^)/阅读(688) 评论(0)编辑收藏 【转】【51单片机寄存器功能一览表】 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SF R存储空间中,地址空间为80H-FFH,在这片SF R空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有R OM,用来存放程序,有R AM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能 寄存器(SF R)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。 8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0 例:78H+97H(01111000+10010111) AC:辅助进、借位(高半字节与低半字节间的进、借位)。

51单片机寄存器功能查看(带目录)

【51单片机寄存器功能一览表】 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器): MCS-51单片机的特殊功能寄存器

PSW-----程序状态字

它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。 例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。 4、DPTR(DPH、DPL)--------数据指针 可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。 5、P0、P1、P2、P3--------输入输出口(I/O)寄存器 这个我们已经知道,是四个并行输入/输出口(I/O)的寄存器。它里面的内容对应着管脚的输出。6、IE-----中断充许寄存器 7、IP-----中断优先级控制寄存器

单片机程序存储空间和数据存储空间详解..

单片机程序程序存储空间(ROM)和数据 存储空间(RAM)详解 问题:STC89C52RC单片机:8K字节程序存储空间,512字节数据存储空间,内带2K字节EEPROM存储空间;它们分别存的是什么? 8K的程序存储空间是存储代码,也就是你写的程序生成的HEX文件的,相当于电脑系统的C盘。 512字节相当于内存,存储空间存储变量,像u8 x,y,z,u32 a之类的临时变量掉电后数据丢失。 2K eeprom相当于电脑系统的硬盘,数据写入后掉电不丢失。主要是单片机在运行的过程中写入数据或者读取数据。像设置的闹铃值,设置好了就不用每次都去设置了,保存在单片机里面,即使掉电了,设置的数据也不会丢失,只需单片机上电再读取就好了。 单片机原理及系统结构 在此先详细分析51单片的存储器结构和寻址方法,再分析片外存储器的扩展,最后给出设计原理并分析系统结构。 图一:存储空间分布

51单片机存储器结构分析 8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。 这种程序存储和数据存储分开的结构形式被称为哈佛结构。MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。 MCS-51单片机存储器的配置特点 ①内部集成了4K的程序存储器ROM; ②内部具有256B的数据存储器RAM(用户空间+SFR空间); ③可以外接64K的程序存储器ROM和数据存储器RAM。 从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。 从逻辑结构上看(既编程的角度),可以分为三个不同的空间: (1)片内、片外统一编址的64KB的程序存储器地址空间:0000H~FFFFH(用16位地址);,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为外部ROM 地址空间; (2)256B的内部数据存储器地址空间(用8位地址),00H~FFH,分为两大部分,其中00H~7FH(共128B单元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域; (3)64KB的外部数据存储器地址空间(用16位地址):0000H~FFFFH,包括扩展I/O地址空间。 上述4个存储空间地址是重叠的,如图1所示。8051的指令系统设计了不同的数据传送指令以区别这4个不同的逻辑空间:CPU访问片内、片外ROM指令用MOVC,访问片外RAM指令用MOVX,访问片内RAM指令用MOV。 程序存储器用于存放编好的程序和表格常数。程序通过16位程序计数器寻址,寻址能力为64KB。这使得指令能在64KB的地址空间内任意跳转,但不能使程序从程序存储器空间转移到数据存储器空间。

相关文档
最新文档