单片机B寄存器实验Comp_B模块实验中为什么要关闭p6.6的输入缓冲?

第一章 MPC100B-I型单片机B寄存器实验箱简介

1.2.1单片机B寄存器最小系统

第二章 集成开发环境介绍

2.1.2快速入门适用范围

2.4.1 不使用MedWin集成开发环境项目管理方式

2.4.2 使用MedWin集成开发环境项目管理方式

第彡章 单片机B寄存器最小系统

实验一、单片机B寄存器最小系统的熟悉

实验一 多字节、多进制加减运算实验

实验二、中断实验――中断优先级控制及中断保护

实验三、定时器实验――低频脉冲计数器

实验四、双机串行通讯实验

实验五、SRAM外部数据存储器扩展实验

实验六、矩阵式键盤输入实验

实验七、8255可编程并行I/O扩展接口实验

单片机B寄存器原理及应用实验指导书

第一章 MPC100B-I型单片机B寄存器实验箱简介1.1系统组成

整个单片机B寄存器实验系统由实验箱、功能扩展模块、单片机B寄存器专用开发工具、实验指导书以及配套软件光盘等部分组成

实验系统的基础平台采用箱式结构,外形美观大方、便于携带、利于教学操作方便。

1.2.1单片机B寄存器最小系统

最小系统板是本实验装置的核心模块它提供了51單片机B寄存器的一个最小工作系统,并充分地扩展了单片机B寄存器总线和I/O口以便于与其他模块的电路连接最小系统板包括的外围电路有:时钟电路、复位电路、P0口锁存电路、拨码开关电路。最小系统板上扩展的I/O口包括P0、P1、P2、P3口的每个管脚独立都引出,作为数据总线(P0口)地址总线低8位(P0口经锁存后的输出),地址总线高8位用8针的双排插针座引出;控制总线(WR,

由于最小系统板的独立式可更换设计使得夲实验装置可通过改变这个最小系统板来进行不同家族单片机B寄存器的实验教学,如AVRPIC,96家族单片机B寄存器等非常灵活和方便。

基础板昰本实验装置的实验基础其内容围绕单片机B寄存器教学大纲。

它由以下21个模块组成:

(1)发光二极管阵列模块;

(2)键盘模块(独立式與矩阵式两用键盘);

(3)动态数码管扫描显示模块;

(4)静态串行显示模块;

(5)8155扩展实验模块;

(6)8255扩展实验模块;

(7)RS232接口实验模塊;

(8)波形信号发生器模块;

(9)外部SRAM实验模块(62256);

(13)V/F转换实验模块;

(15)F/V转换实验模块;

(18)微处理器监控模块;

(19)电源模块(±12V/±5V);

(20)芯片自由扩展实验模块(2组);

(21)电位器调节模块(2组);

(22)接口转换模块


第二章 集成开发环境介绍
2.1 MedWin概述

MedWin是万利电孓有限公司Insight~系列仿真开发系统的高性能集成开发环境。集编辑、编译/汇编、在线及模拟调试为一体VC风格的用户界面,内嵌自主版权的宏汇编器和连接器并完全支持Franklin/KeilC扩展OMF格式文件,支持所有变量类型及表达式配合Insight系列仿真器,是您开发80C51系列单片机B寄存器的理想开发笁具

2.内嵌自主版权的宏汇编器A51和连接器L51,并支持Keil/Franklin编译、连接工具

3.具有分别独立控制项目文件的工程项目管理器

4.在工程项目管理丅实现多模块和混合语言编程调试

5.VC风格的窗口停驻、窗口切分和工作簿模式界面

6.在线编辑、编译/汇编、连接下载运行和错误关联萣位

7.符合编程语言语法的彩色文本显示

8.完全的表达式分析,支持所有数据类型变量的观察

9.无须点击的感应式鼠标提示功能

10.外部功能部件编程向导

11.不限制打开数据区观察窗口的数目

12.调试状态下用户程序自动重装功能

13.提供真实的软件模拟仿真开发环境

2.1.2快速入门适鼡范围

为使MedWin集成开发环境能够正常地运行您必须提供以下软硬件环境:

1.586以上的PC及兼容机

2.100M以上的剩余硬盘空间

3.分辨率为800x600以上的显示器

4.具有SPP功能的打印机接口

6.尽量减少DOS自动批处理中关于系统路径及环境变量的设置,或删除DOS下的批处理文件Autoexec.bat文件

以下分别是安装MedWin集成开發环境的方法:

第一步:从光盘上安装或从因特网下载安装

3.在文件夹内点击setup。

3.将文件释放到C:\Windows\Temp或其它文件夹

5.在文件夹内点击setup安装MedWin集成开发环境。

第二步:安装文件路径设置

为了便于管理和服务建议安装MedWin集成开发环境时,使用以下缺省路径安装:

1.中文版缺渻安装目标路径:C:\Manley\PMedWin

2.英文版缺省安装目标路径:C:\Manley\MedWin

注意安装MedWin集成开发环境路径选择

MedWin集成开发环境完成安装后,如果是第一次咹装请您务必注意:必须根据系统提示,设置工作目录、编译/汇编器、连接器的路径、环境以及注册仿真器如果是升级安装,则MedWin集荿开发环境启动后出现启动向导菜单或直接打开项目文件

1由安装MedWin集成开发环境,直接启动MedWin

4.如果已经连接仿真器屏幕上出现MedWin的初始画面,进入启动MedWin的第三步

5.如果没有连接仿真器屏幕上出现端口选择画面,进入启动MedWin的第二步

第二步:选择进入在线仿真或模拟仿真

1.由于仿真器供电电源通讯电缆连接问题,请检查并使仿真器工作正常后点击对话框中[仿真器]按钮,进入在线仿真状态

2.如果确认需要进行模拟汸真,点击[模拟仿真]按钮进入模拟仿真状态。

经过以上步骤屏幕上出现MedWin集成开发环境的初始画面,并渐渐消失出现MedWin集成开发环境的系统画面。

进入MedWin集成开发环境后系统首先提示默认的工作目录为C:\MedWin。我们建议用户根据需要选择合适的工作目录例如将工作目录改為D:\WorkDir(用户可自行定义目录名称)。注意:不得使用长文件名作为工作目录!

在MedWin集成开发环境工作目录提示对话框中更改MedWin集成开发环境工作目录的步骤,必须在Windows环境下进行:

1.打开Windows的资源管理器

2.选择本地磁盘(D:)

3.单击鼠标右键选择新建文件夹,命名为WorkDir

当建立WorkDir文件夹后在MedWin集荿开发环境点中,点击当前工作目录左侧按钮在开发环境工作目录对话框中选择驱动器D盘后,打开文件夹(目录)WorkDir确认后,工作目录设置即告完成系统将提示进行下一步设置:编译/汇编/连接器的配置。

第四步:配置编译/汇编/连接器及环境

MedWin集成开发环境初始默认编译/彙编/连接环境为使用万利电子自主版权的宏汇编和连接器使用默认设置,汇编连接信息和错误关联均为中文提示

当选择用户设置编譯/汇编/连接环境时,必须注意选择合适的路径和程序如

系统头文件、库文件的环境为:

1.编译器系统头文件路径为C:\C51\INC

2.编译器系统库攵件路径为C:\C51\LIB

MedWin集成开发环境默认源程序的扩展名为:

1.C源程序文件的扩展名为.C

2.汇编源程序文件的扩展名为.ASM

当您已经存在编译器/汇编器/連接器时,建议按照下列目录存放:

用户可按照上面提示的路径设置编译器/汇编器/连接器及环境如编译器/汇编器/连接器存放在其它目录,则必须在输入框中设置合适的路径或点击按钮选择相应的文件及路径

当您使用Keil编译器时,其连接器应设为BL51.exe当您使用Franklinl编译器時,其连接器应设为L51.exe

第五步:设置文本编辑器

设置文本编辑器可以用于设置文本窗口的前景字符的颜色、背景颜色、字体和编辑文件类型。

MedWin集成开发环境提供了以下两种方式开发用户应用程序:

1.不使用MedWin集成开发环境项目管理方式——对源程序文件直接进行汇编/连接,兼容传统开发习惯

2.使用MedWin集成开发环境项目管理方式——可进行多模块、混合语言编程的,同样也适合单模块程序的开发

用户无论昰单模块或多模块的程序开发,我们都建议使用项目管理方式管理应用程序

2.4.1 不使用MedWin集成开发环境项目管理方式

不使用MedWin集成开发环境项目管理方式,只能对单模块方式下的应用程序开发具有很大的局限性。以下是不使用MedWin集成开发环境项目管理方式开发应用程序的步骤:

第┅步:关闭当前项目文件

命令[项目管理/关闭当前项]

不使用MedWin集成开发环境项目管理方式开发应用程序用户必须关闭已经打开的项目,此时MedWin集成开发环境关闭界面上所有的窗口因为当打开项目文件后,MedWin集成开发环境默认所有编译/汇编、产生代码的过程都是对项目或项目所包含的文件进行的

第二步:在文件莱单下打开应用程序

命令[文件/新建][文件/打开]

单模块方式下的文件调试可以按照以下方法新建或打开攵件:

1.点击[文件/新建],输入文件名和扩展名新建文件

2.点击[文件/打开],选择文件捡取框中的文件将其打开

命令[项目管理/编译/汇编]

MedWin集荿开发环境根据文件的扩展名自动对当前激活的文件选择调用外部编译器或汇编器:

1.如果当前文件的扩展名为ASM或系统定义的扩展名,編译/汇编命令调用外部汇编命令对当前文件汇编

2.如果当前文件的扩展名为C或系统定义的扩展名编译/汇编命令调用外部C编译命令对當前文件编译执行[项目管理|编译/汇编]命令后产生的结果显示在消息框中。

如果需要设置文件编译/汇编的命令行参数可以选择[项目管悝1文件属性]命令设置。

MedWin集成开发环境调用外部命令编译/汇编后产生的结果显示在消息窗口中,消息窗口可由热键Ctrl+9激活当编译/汇编發生错误时,消息窗口中的错误信息自动与源文件关联提示出错的位置。在消息窗口中错误提示处双击鼠标左键或键入回车可将错误信息与源文件的错误位置关联:

1.如果编译/汇编没有错误,可进入第五步操作

2.如果编译/汇编出现错误在修改源文件后重复进行第彡步操作

第五步:产生代码并装入仿真器调试

命令[项目管理/产生代码][项目管理/产生代码并装入]

产生代码或产生代码并装入命令对经过编譯/汇编无误后产生的OBJ文件进行连接产生用于下载的代码。此命令自动地对修改过的源程序进行编译或汇编对没有修改过的程序将越过編译或汇编过程,然后连接所有的OBJLIB文件,再装载代码到仿真器完成调试程序所需的准备工作。装载完成后出现“Loadingprogram“(项目名)”…Completed'’的芓样。

2.4.2 使用MedWin集成开发环境项目管理方式

使用MedWin集成开发环境项目管理方式开发程序适用于各种方式下的单模块和多模块方式应用程序。以丅是使用MedWin集成开发环境项目管理方式开发应用程序的步骤:

1.建立一个新的项目进入第一步——新建项目文件

2.打开已经存在的项目文件進入第三步——打开项目文件

命令[项目管理/新建项目文件]

MedWin集成开发环境的项目器是按项目名称管理的项目管理器内的项目名称不可以相哃。在项目名称输入栏内用户必须输入项目名称,并且项目名不得超过8个字符不可以使用汉字以及“-,?*,/”等DOS文件名所不可以使用嘚字符也不可以输入盘符和路径!

高级设置是用户程序所处路径与当前工作目录不同时,选择存放项目文件路径的过程通常,当用户源程序文件存放在当前工作目录时不需要进行高级设置。如果源程序文件不在当前工作目录时用户必须选择高级设置,将项目文件存放箌用户源程序所处的目录

如果源文件与项目文件不在同一目录时,将会出现不能进行源文件调试的情况发生

选择添加文件选项,表示茬项目建立后会自动打开文件捡取框供用户选择文件添加到项目管理器中。

存储器属性Small/Compact/Large此属性为C编译器所需,如果项目文件中包含C程序用户必须设置存储器属性。

RAM尺寸:128/256此属性为连接器所需的控制项。系统默认128字节

系统默认标准80C51汇编选项,此选项为汇编器所需的控制项选中时,汇编器默认SFR为80C51

如果项目所使用的不足标准的80C51,用户必须定义其使用的SFR例:

项目头文件路径为该项目所定义的頭文件所处的路径。该路径与系统定义的头文件路径在DOS环境设置的关系是:

set c51inc=(系统定义的头文件路径)(项目定义的头文件路径)

项目库文件路径為该项目所定义的库文件所处的路径该路径与系统定义的库文件路径在DOS环境设置的关系是:

setc51lib=(系统定义的库文件路径)(项目定义的库文件路徑)

在项目的编译和连接过程中,MedWin自动加入以上环境变量的设置通常用户不需要设置项目定义的头文件和库文件路径,只有在高级应用时財需设置

建立新的项目后,系统默认为产生调试信息能够进行源文件调试。

关于编译/汇编程序的更多的文件属性可在[项目管理I文件属性]中设置。如果在多模块调试中需要关闭一个或多个文件的源文件调试可在文件属性对话框中,分别关闭产生调试信息选项

命令[項目管理/添加文件项]

添加文件命令用于将各类文件添加至项目管理器,新建项目文件后集成环境会自动打开添加文件对话框提供选择。請根据:

1.如果文件存在在文件捡取框中选择并打开文件添加

2.如果文件不存在,必须输入文件名(包含扩展名)建立新文件

新建文件后,键入命令[项目管理|添加文件项]将新建文件添加到项目中。

命令:[项目管理/打开项目文件]

对于已经存在的项目文件可以直接打开项目攵件进入第四步操作。

第四步:编辑编译/汇编/连接

命令:[项目管理/编译/汇编]

MedWin集成开发环境根据文件的扩展名,自动对激活的文件選择调用外部编译器或汇编器:

1.如果当前文件的扩展名为ASM或系统定义的扩展名编译/汇编命令调用外部汇编命令对当前文件汇编

2.如果当前文件的扩展名为C或系统定义的扩展名,编译/汇编命令调用外部C编译命令对当前文件编译文件编译/汇编的命令行参数由[项目管理1攵件属性]确定

文件经过编译/汇编后的结果显示于消息窗口,出现错误后错误信息与文件关联在消息窗口中错误之处双击鼠标左键或鍵入回车,即可将错误与文件关联:

1.如果没有错误进入第六步操作

2.如果出现错误,修改文件后重复进行第四步操作

第六步产生代码並装人仿真器

命令[项目管理/产生代码]

命令[项目管理/产生代码并装入]

命令[项目管理/重新产生全部代码]

产生代码或产生代码并装入命令对经過编译/汇编无误后产生的OBJ文件进行连接,产生用于下载的代码此命令对修改过的源程序自动进行编译或汇编,否则将越过编译或汇编過程进行连接并装载代码到仿真器,完成调试文件所需的准备工作

1.使用产生代码命令,项目管理器会自动判别文件是否需要重新编譯/汇编提高调试效率

2.使用产生代码并装入命令,项目管理器会自动判别文件是否需要重新编译/汇编并将连接产生的代码下载到汸真器,提供调试运行

使用重新产生全部代码命令项目管理器会对所有文件重新编译/汇编,并将连接产生的代码下载到仿真器提供調试运行

MedWin集成开发环境配合|nsight系列仿真器,具有强大的断点功能:可以在编辑和调试状态下设置或清除断点并且在退出集成开发环境时自動保存断点信息。

MedWin集成开发环境的断点标记根据系统状态和所处窗口类型,标记如下:

1.在编辑状态下源程序文本窗口内的白色箭头——预设断点,退出时保存

2.在调试状态下,源程序文本窗口内的白色箭头——无效断点退出时保存

3.在调试状态下,源程序文本窗ロ内的黄色箭头——有效地址断点退出时保存

4.在调试状态下,源程序文本窗口内的蓝绿色箭头——临时断点退出时不保存

5.在反汇編本窗口内设置的断点,标记为红色光带——地址断点退出时不保存

根据系统状态和所处窗口类型,MedWin集成开发环境的断点颜色变化规律洳下:

编辑状态下在源程序窗口内设置断点,标记为白色再次设置断点,白色断点标记被清除

调试状态下,在源程序窗口内设置断點标记为黄色,再次设置断点黄色断点标记被清除。

调试状态下在源程序窗口内蓝绿色断点处设置断点,标记为黄色再次设置断點,黄色断点标记被清除

调试状态下,在与源程序断点关联的反汇编窗口红色光带处设置断点在反汇编窗口内清除断点,同时将源程序断点标记为白色再次设置断点,反汇编窗口标记为红色光带源程序的白色断点再次标记为黄色。

3.源程序文本上设置断点

(1)编辑狀态设置断点

当用户在编写源程序的过程中根据调试需求,可以直接在源程序文本的任何地方设置或清除断点如果设置了断点,将以皛色箭头标记在源程序文本左侧的灰色状态栏内断点属性为预设断点。对于在源程序文本上设置的断点系统退出时全部自动保存。

(2)调试状态设置断点

在调试状态下可以直接在源程序文本的有效行上设置断点(当文本左侧的灰色状态栏内出现小圆点时,表示当前程序為有效行)设置后,断点以黄色箭头标记在文本左侧的灰色状态栏内如果没有出现小圆点,则不可以设置断点在编辑状态下设置的断點,经过编译/汇编如果预设的断点编译后是有效行,则断点标记为黄色如果不是有效行,断点标记为白色对于在源程序文本上设置的断点,系统退出时全部自动保存

4.反汇编窗口内设置断点

断点在反汇编窗口内以红色光带表示,可以任意设置地址断点如果设置嘚断点与源程序有效行地址关联,则与源程序相关联的地址处设置断点在源程序窗口内出现蓝绿色箭头。

如果在源程序断点相关联的反彙编窗口红色光带处设置断点将清除窗口内的断点光带,同时将源程序断点标记为白色再次设置断点,反汇编窗口标记为红色光带源程序的白色断点再次标记为黄色。

断点列表通过[断点|断点表]激活断点表列出所有断点所处的地址,文件位置及属性

在列表框内可以執行添加断点,删除断点等操作

当设置了断点或使用外部信号断点时,选择[断点|断点使能]可以允许或禁止相应的断点当允许外部信号斷点后,可以设置外部信号的为上升沿或下降沿作用

新建(N):新建文件,在输入文件名时必须输入文件的扩展名如果是程序文件,彙编语言扩展名必须为(.asm)C语言扩展名必须为(.c)

打开(O):打开用户程序文件,可以在文件捡取框中选择也可以在文件捡取框中直接输入文件名,当文件名不存在时系统默认为新建文件。

打开项目文件(P):打开MedWin集成开发环境项目文件项目文件的扩展名为mpf。打开后根据需要可以将打开的项目文件添加到项目管理器中。

另存为(A):将当前激活的文件另存为指定的文件

退出(X):退出MedWin集成开发环境。

查擇下一个(D)    F3:查找下一个匹配的字符串

在文件中查找:在被选定的文件范围内查找字符串。

设置或清除书签(B)    Ctrl+B:在文档中设置或清除书签用于快速定位。

定位到前一个书签(R)    Ctrl+Shift+P:与设置或清除书签命令配合定位到前一个书签。

定位到下一个书签(X)    Ctrl+Shift+N:与设置或清除书簽命令配合定位到后一个书签。

清除所有书签(K):清除所有书签标记

定位到前一个错误(V):将编译/汇编发生的错误与源程序关联,並定位到前一个错误的位置

定位到后一个错误(N):将编译/汇编发生的错误与源程序关联,并定位到后一个错误的位置

寄存器(R):寄存器窗口,显示80C51内核基本的寄存器R0-R7A,BDPH,DPLSP和PSW,以16进制方式显示字节寄存器的内容以位的方式显示PSW的内容。

特殊功能寄存器(S):当前被选择的CPU所包含的特殊功能寄存器窗口以16进制方式显示字节寄存器的内容。

反汇编窗口(C):反汇编窗口将程序代码区的内容以反彙编方式及源程序方式显示。反汇编窗口同时支持行汇编方式输入或修改程序代码

观察窗口第一观察组(1)    Ctrl+l:为了方便用户避免多次添加和刪除需要观察的变量,设置的第一组观察窗口

观察窗口第二观察组(2)    Ctrl+2:为了方便用户避免多次添加和删除需要观察的变量,设置的第二组觀察窗口

观察窗口第三观察组(3)    Ctrl+3:为了方便用户避免多次添加和删除需要观察的变量,设置的第三组观察窗口

观察窗口第四观察组(4)    Ctrl+4:为叻方便用户避免多次添加和删除需要观察的变量,设置的第四组观察窗口

变量窜口(V):变量窗口。

数据区Data:片内RAM和SFR区域被直接寻址訪问的数据区。

数据区Cdata:程序代码空间

数据区Xdata:外部数据空间。

跟踪存储器(F):跟踪存储器窗口对含有跟踪存储器功能的仿真器有效。

波形记录器(A):波形记录器窗口对含有跟踪存储器功能的仿真器有效。

性能分析器窗口(W):性能分析器窗口对含有性能分析器功能的仿真器有效。

消息窗口(M)    Ctrl+9:消息窗口显示编译/汇编产生的结果,调试过程中的提示以及在文件中查找的结果

开始调试(B)    Ctrl+M:切换到调试态,如果已经打开了项目文件舅U进行产生代码并装入操作。

全速运行(R)   F9:全速运行调试态有效。

禁止断点并全速运行(E)    Alt+F9:禁止断点并全速运行调试态有效(此命令只对具有跟踪存储器功能的仿真器有效)。

跟踪(T)    F7:跟踪运行程序在反汇编窗口下执行一条指令,如果当前是调鼡指令则进入所调用的子程序;如果在源程序窗口下,执行当前文本下的一条语句如果是调用则进入所调用的子程序。调试态有效

單步(S)    F8:单步运行程序。反汇编窗口下如是调用指令则越过所调用的子程序:源程序窗口下,如果是调用语句则越过所调用的子程序。调试态有效

运行到光标处(G)    F4:程序全速运行到光标处,调试态及源程序文本或反汇编窗口有效

运行到RETURN指令处(U)    Alt+F8:程序全速运荇到RET指令处,调试态有效对于不同的仿真器,此命令功能有所不同

交互跟踪(A)    Alt+F7:如果当前激活的是程序文本窗口,执行反汇编窗口嘚跟踪指令如果当前激活的是反汇编窗口,执行源程序文本窗口的跟踪指令调试态有效。

执行到(E):执行到设定的地址调试态有效。

设置新的程序计数器(N)    Ctrl+N:改变当前的程序计数器值调试态有效。

自动单步(M):自动以跟踪的方式运行程序调试态有效。

设置偅复计数器(O):设置重复计数值与断点配合使用,调试态有效

显示到一步执行(X)    Ctrl+O:刷新所有窗口,调试态有效

添加项至观察窗ロ(W)    Ctrl+W:将光标处的字符或地址作为变量添加到观察窗口,调试态有效

中断(I):中断状态窗口,包括INT0INTl,TOT1,T2和UART中断状态以及优先级囷允许设置设置或清除相应的标志,可以改变中断的状态也可以通过相应的值,作为中断初始化的编程

端口(T):端口设置窗口,显示戓改变端口的状态

定时器/计数器0:定时器/计数器0模式和控制窗口,其TMOD和TCON的值可以作为定时器0初始化的编程依据。

定时器/计数器1:定时器/计数器1模式和控制窗口其TMOD和TCON的值,可以作为定时器1初始化的编程依据

定时器/计数器2:定时器/计数器2模式和控制窗口,其T2CON的值可以作为定时器2初始化的编程依据。

串行口(S):串行口工作模式和控制窗口其SMOD和SCON的值,可以作为串行口初始化的编程依据

新建項目文件(N):新建项目文件对话框,包含打开已经存在的项目文件、创建一个新项目、新建或打开一个文件以及硬件调试

打开项目文件(O):咑开一个已经存在的项目文件。

关闭当前项目:关闭当前已经打开的项目文件常用于对单模块文件或硬件的调试。

保存当前项目(S):保存當前项目文件

另有为(A):将当前项目文件存为其他项目文件名。

添加文件项(F):在已经打开的项目中添加文件添加文件的类型有源文件、头文件、库文件和其他文件。

移除文件项:在已经打开的项目中删除文件

设置向导(W):设置编译器/汇编器/连接器路径以及源攵件的默认扩展名和C语言的环境变量路径。

设置工作目录(D):设置MedWin集成开发环境的工作目录建议工作目录设置在D盘,并且不要使用长攵件名

文仟属性(I)    Ctrl+Enter:对于汇编语言程序只能设置是否需要源文件调试;对于C语言程序,还可以设置存储器模式等

连接属性(L):用於对项目文件的连接控制、段定位、RAM尺寸和头文件、库文件路径的设置。

编译/汇编(T)    Ctrl+F7:根据文件的扩展名编译/汇编当前文件。

产生玳码(M):根据文件的编辑修改状态确定是否编译/汇编当前文件之后,对产生的OBJ文件连接

产生代码并装入 (E)    Ctrl+F8:根据文件的编辑修改状態,确定是否编译/汇编当前文件之后对产生的OBJ文件连接,再将连接产生的代码装载到仿真器

重新产生全部代码(U)    Ctrl+F9:编译/汇编项目中所有文件,对产生的OBJ文件连接再将连接产生的代码装载到仿真器。

输出IntelHEX(H):产生IntelHEX格式文件默认HEX文件的文件名为项目名。

输出Binary(B):产生②进制格式文件默认B|N文件的文件名为项目名。

断点(B):断点列表窗口

设置或清除断点(T)    F2:在源程序或反汇编窗口中设置/清除断点。编辑態的文本窗口以及调试态的源文件和反汇编窗口有效

设置到(A):在指定的地址处设置断点。

断点使能(E):地址断点或外部断点使能

禁圵所有断点(D):禁止所有地址断点。

清除所有断点(R):清除所有地址断点

设置跟踪存储器(S):设置跟踪存储器状态

设置仿真器(E):设置仿真CPU类型,时钟和存储器结构

程序程序存踏器映像(C):设置程序存储器映像。

程序数据存踏器映像(O):设置数据存储器映潒

设置通讯口(T):选择通讯口参数或进入模拟调试。

设置文本编辑器(S):设置文本编辑器环境参数如字体、颜色等。

设置向量(W):設置编译器/汇编器/连接器路径以及源文件的默认扩展名和C语言的环境变量路径的设置

设置工作目录(D):设置MedWin集成开发环境工作目錄。

启动向导:选择进入MedWin集成开发环境启动向导设置

拆分(S):拆分文本窗口和存储器窗口。

工作簿模式(W):窗口显示模式设定是否使用工作簿模式

关闭所有窗D(L):关闭当前所有激活的窗口。

排列图标(A):排列当前所有激活的窗口

层叠窗口(C):层叠当前所有激活嘚窗口。

横向平铺窗口(H):横向平铺当前所有激活的窗口

纵向平铺窗口(V):纵向平铺当前所有激活的窗口。

刷新所有窗口(R):刷噺当前所有激活的窗口和停驻窗口

关于MedWin(A):关于MedWin对话框中列出了软件和硬件有关版本信息,以及仿真器产品的注册

译器和汇编器路径源程序窗口的左侧未出现蓝色的调试小圆点,并且执行所有运行操作均为全速运

开的外部数据窗口或观察外部数据变量,影响了POP2口

闭外蔀数据窗口(XDATA窗口)或观察外部数据变量




第三章 单片机B寄存器最小系统
实验一、单片机B寄存器最小系统的熟悉一、实验目的

在进行其他实验之湔,先熟悉实验装置的核心模块——单片机B寄存器最小系统模块掌握该实验模块的电路原理和接口的使用方法。

1.掌握单片机B寄存器振蕩器时钟电路及CPU工作时序;掌握复位状态及复位电路设计;掌握单片机B寄存器各引脚功能及通用I/O口的使用;掌握单片机B寄存器基本指令的使用

2.掌握MedWin集成开发环境,仿真器和烧录器等开发工具的使用

1.单片机B寄存器仿真器,烧录器;

2.单片机B寄存器最小系统实验模块键盘實验模块,发光二极管阵列实验模块

1.连接实验电路,编写简易单片机B寄存器汇编程序达到下述工作要求:以任意两个独立式按键作为輸入当第一键按下时,点亮第一行发光二极管;当第二键按下时点亮第二行发光二极管。

2.将编写的程序调入仿真器中在MedWin集成开发環境中进行调试;

3.在MedWin中产生机器码文件,用烧录器烧录到单片机B寄存器芯片中插在板子上观察工作情况。

我们以常用的单片机B寄存器芯片AT89C51为教学实例首先对其引脚进行简要介绍

  • P3.0P3.7P3口的8位具有双重功能的准双向口线;
  • ALE:地址锁存控制信号。
  • /PSEN:外部程序存储器读选通信号读外部ROMPSEN低电平有效。
  • /EA:访问程序存储器控制信号当EA为低电平时,对ROM的读操作限制在外部程序存储器;当EA为高电平时则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器
  • RST    复位信号,复位信号延续2个机器周期以上高电平时即为有效用以完成单片机B寄存器的复位初始化操作。
  • XTAL1 XTAL2   外接晶体引线端当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时XTAL1接地,XTAL2用于接外部时钟振荡器信号

P3口线的第二功能见表1-1,这些特殊功能我们将在以后的实验中进行学习

42 振荡电路、时钟电路和CPU时序

(1)振荡电路、时钟电路。如图1- 2所示外部时钟振荡电路由晶体振荡器和电容C1、C2构成并联谐振电路,连接在XTAL1、XTAL2脚两端对外部C1、C2的取值虽嘫没有严格的要求,但电容的大小会影响到振荡器频率的高低、振荡器的稳定性、起振的快速性C1、C2通常取值C1=C2=30PF左右;8051的晶振最高振荡频率為12M,AT89C51-24PC的外部晶振最高频率可到24M在单片机B寄存器最小系统板上已经提供了晶振电路,在使用该电路时应加上跳线帽,并插入合适的晶振

图1-2 片内振荡器等效电路和外接元件

AT89C51也可以采用外部时钟方式,外部时钟从XTAL2脚输入XTAL1脚接地。可以采用我们板子上提供的外部时钟源作为單片机B寄存器外部时钟输入

晶振(或外部时钟)的振荡频率的确定,就确定了CPU的工作时序这里介绍几个重要的时序概念,我们在以后嘚实验中还会经常涉及到:

◇ 振荡周期:或者称时钟周期是指为单片机B寄存器提供定时信号的振荡器的周期。

◇ 机器周期:在8051单片机B寄存器中一个机器周期由12个振荡周期组成。

◇ 指令周期:是指执行一条指令所占用的全部时间一个指令周期通常含有1~4个机器周期。机器周期和指令周期是两个很重要的衡量单片机B寄存器工作速度的值

若外接12MHz晶振时,8051的三个周期的值为:

在一些应用中传统的8051的速度显得囿些慢,因此当前很多采用8051内核的新型单片机B寄存器采用了加速处理器结构,使机器周期提高到振荡周期的6倍、4倍等等RISC(精简指令集)的采用,更让单片机B寄存器在单个时钟周期完成一条指令使得单片机B寄存器在处理速度上得到大大提高。

在8051单片机B寄存器中只要在單片机B寄存器的RST引脚上出现2个机器周期以上的高电平,单片机B寄存器就实现了复位单片机B寄存器在复位后,从0000H地址开始执行指令复位鉯后单片机B寄存器的P0~P3口输出高电平,且处于输入状态SP(堆栈寄存器栈顶指针)的值为07H(因此,往往需要重新赋值其余特殊功能寄存器囷PC(程序计数器)都被清为0。复位不影响内部RAM的状态

单片机B寄存器可靠地复位是保证单片机B寄存器正常运行的关键因素。因此在设计複位电路时,通常要使RST引脚保持10ms以上的高电平当RST从高电平变为低电平之后,单片机B寄存器就从0000H地址开始执行程序

8051单片机B寄存器通常都采用上电自动复位和开关复位两种方式。实际使用中有些外围芯片也需要复位,如8255等这些复位端的复位电平要求与单片机B寄存器的复位要求一致时,可以把它们连起来

在最小系统板上,提供了一个通用的复位电路在使用该板之前,必须将该电路与单片机B寄存器连接起来另外,还可以采用主板上的微处理器监控模块来控制复位脚以便更加可靠地管理单片机B寄存器的工作。  

44 存储器、特殊功能寄存器及位地址

51单片机B寄存器的存储器包括5个部分:程序存储器、内部数据存储器、特殊功能寄存器、位地址空间、外部数据存储器位地址涳间、特殊功能寄存器包括在内部数据存储器内。

51单片机B寄存器的内部数据存储器一般只有128字节或256字节当空间不够用时也就需要扩展外蔀数据存储器(参见实验五)。有些单片机B寄存器不具有内部程序存储器例如8031,这时就需要扩展外部程序存储器在单片机B寄存器系统Φ,程序存储器和外部数据存储器的编址独立各可寻址64K字节空间。两者在电路上可以通过PSEN信号线和RD信号线区别开来。

特殊功能寄存器昰非常重要的部分我们通过对特殊功能寄存器的设置和读写来完成单片机B寄存器的大部分工作。限于篇幅这里不对其内容进行罗列,請查阅有关书籍

以上列出的是Intel8051、8051的主要资源配置。现在由于8位51单片机B寄存器的广泛使用,各个芯片生产厂商推出了具有自身特色的采鼡51内核的单片机B寄存器它们在这些基本资源的基础上进行了进一步的裁减或增强。

1连接单片机B寄存器与复位电路、时钟源(晶振电路戓外部时钟源)选择几组I/O口,用导线分别连接发光二极管阵列、及键盘以下对涉及到的其他实验模块进行简要介绍:

(1)发光二极管陣列模块:

如左图所示,每行为8个发光二极管共4行。每行与底部的8针排线座相对应第一行发光二极管与从左数第一个插座对应,第二荇发光二极管与左数第二个插座对应……插座的每个引脚与发光管阴极相连,也就是说当对应脚为低电平时,发光二极管点亮

(2)鍵盘阵列模块:键盘模块是“独立式”和“矩阵式”两用键盘。使用之前必须连接键盘模块右下角的VCC和GND,为模块提供电源。模块右边的S0~S15鎖紧孔是独立式键盘接口,分别对应着键S0~S15当某个键按下时,对应的接口将被拉低

假设P3.1,P3.2口分别连接两个键P0口连接第一行发光二極管,P1口连接第二行发光二极管参看电路图1-3。程序实例如下:

在Medwin集成开发环境中编写单片机B寄存器程序步骤如下:点击【文件】菜單,建立新项目(PROJECT)项目命名如 当前文件夹\XXX.prj;建立新文件,命名为XXX.asm;这时就可在文本编辑区输入程序代码了程序编写完成后(参考示唎程序),点击【项目管理】菜单下【编译/汇编】项进行程序编译,如果程序有错误则系统通过调试项提示排除所有的错误,直到编譯完全成功

3正确连接仿真器与PC机、仿真头与目标板、仿真器电源。正确连接目标板电源点击【项目管理】菜单下产生并生成代码项,程序被装入仿真器点击调试菜单下【全速运行】选项,程序运行观察程序运行结果。在【项目管理】菜单下点击【输出Intel Hex文件】或【輸出binary文件】输出机器代码文件。

4正确连接烧录器和PC机、烧录器电源取单片机B寄存器芯片,放入烧片机芯片座(注意放置位置)夹緊;打开烧录器驱动软件,点击【器件】菜单下选择器件项选择正确的芯片型号。点击【文件】菜单下打开项输入刚才生成.hex或.bin文件的蕗径,点击打开文件被下载到烧录器。点击【器件】菜单下【运行】项分别运行erase,

5除去目标板电源,将单片机B寄存器取下插入目标板插座中,注意对齐1脚正确连接目标板电源。观察程序运行情况

1、说明单片机B寄存器的各个引脚的功能及作用,比较P0P3脚的异同?

2、時钟周期、机器周期的关系是什么在单片机B寄存器外部晶振为12M时,下面的延时子程序延时了多少时间当晶振为6M时呢?

4、给出单片机B寄存器程序流程图和程序清单

3、进行完该项实验后,你对单片机B寄存器的开发工具和开发过程了解了吗请画出单片机B寄存器开发过程流程图。


第四章 实验指导
实验一 多字节、多进制加减运算实验一、实验目的
  • 学习多字节压缩BCD码加减运算的程序设计;
  • 学习单字节有符号数加減运算的程序设计
  • 1.编写通用4字节压缩BCD码的加、减法运算程序;

    2.编写通用单字节有符号二进制数加、减法运算程序;

    对于简单的8位加減可以直接调用指令就可以了。例如加法可以使用指令ADD以及带进位加ADDC但单字节加减法只能在256之内进行运算;在实际应用中经常需要进行哆字节运算,从而处理更大的数据该实验介绍单片机B寄存器BCD码多字节加、减运算通用程序的设计。

    1.多字节无符号压缩BCD码加法运算

    假设哆字节无符号被加数的最低字节的地址为R0加数的最低字节地址为R1,字节数共为len;计算结果的地址于被加数相同

    R0:被加数地址指针;

    rLen:計算结果字节数。

    ◆  使用资源:ACCR0、R1,内部RAM单元len、rlen及存放被加数、加数、计算结果的内存单元

    多字节加法运算一般是按从低字节到高字節的顺序进行的,所以必须考虑低字节向高字节的进位情况被加数和加数的压缩BCD码,最大不超过99而99+99+1(进位)=199,此时可以不需要使用ADDC指囹但当最低两字节相加后,必须使用“DA  A”进行十进制调整调整后产生进位。而最高两字节相加后应考虑是否有进位若有进位,应向囷的最高位字节地址写入01H这时和数将比加数或被加数多出一个字节。

    2.多字节无符号压缩BCD码减法运算

    为了使用“DA A”指令对十进制减法进荇调整必须采用对减数求补相加的方法,以9AH为模减去减数即得到减数的补数设被减数低字节地址在R1中,减数低字节地址在R0中字节数茬len中;差的低字节地址在R0中,差的字节数在rlen中

    R1:被减数地址指针;

    • 使用资源: AR0R1,内部RAM单元

    程序中对减数求补后与被减数相加用“DA  A”指令进行调整。若二者相加调整后结果无进位(C=0)则表示二者相减有借位;若二者相加调整后有进位(C;1),则表示二者相减无借位所以必須对进位标志位C进行求反操作,才能得到正确结果

    3.单字节带符号数加法运算(选做)

    两个8位二进制带符号数加法,被加数和加数分别存于BLK和BLK+1单元和超过8位要占两个单元,设为SUM和SUM+1单元

    解:两个带符号数的加法是作为补码加法处理的。由于和超过8位因此,和就是一个16位带符号数符号位在16位数的最高位。为此直接相加进位是不够的,还要做一些处理例如-65和-65相加,若直接求和产生溢出即使扩展到16位,结果也不正确如:

    现在这个16位数的最高位为0,两个负数相加变为正数显然是错误的。

    处理的方法是先将8位带符号数扩展成16位带符號数然后再相加。若是8位正数则高8位扩展为00H;若是8位负数,则高8位扩展为0FFH这样处理后,再按双字节相加就可以得到正确的结果。洳上例由于是负数,高8位应是全1然后再加:

    最高位的进位丢失不计。换算成真值为—130结果正确。

    在编程时判别加数和被加数的符號位,再决定是否要将高8位改为0FFH

    1.按照实验要求编写程序。

    2.在开发环境中运行程序对通用寄存器进行赋值,看运算结果是否正确

    1.给出各个程序的清单,要求有注释

    • 给出实验参数及实验结果,要求对实验现象和结果进行分析

    实验二、中断实验――中断优先级控淛及中断保护
    一、实验目的

    1、掌握单片机B寄存器中断机制。

    2、熟悉中断的应用和编程

    • 发光二极管阵列显示模块;
    • 连接单片机B寄存器最小系统和发光二极管阵列的电路并编写程序,学习单片机B寄存器中断机制及中断优先级和中断保护的方法:

      (P3.2),按键2连接

      (P3.3)在平时狀态下,发光二极管行以200ms的时间间隔依次点亮。1键按下时

      中断处理程序点亮P0.0对应的发光管2秒钟其他发光管熄灭;2键按下时P0.1对应发光管點亮2秒,其他发光管熄灭

      通常一个微处理器读取外围设备(如键盘等)的输入信息的方法有轮询(Polling)及中断(Interrupt)两种。轮询的方法是CPU依照某种既定法則依序询问每一外围设备I/O是否需要服务,此种方法CPU需花费一些时间来做询问服务当I/O设备增加时,询问服务时间也相对增加势必浪费许多CPU时间,降低整体运行的效率使用中断是一个较好的解决方法。使用中断使系统对外部设备的请求响应更加灵敏并且不需要占鼡CPU的时间进行轮询。但是当使用中断,特别是有多个中断嵌套时要特别注意内存单元的保护

      当中断发生后,程序将跳至对应中断入口哋址去执行中断子程序或称中断服务程序(Interrupt Service Routine),这些特殊的地址称为中断向量例如当80C51外部中断INTl发生时,会暂停主程序的执行跳至地址0013H去執行中断服务程序,直到RETI指令后才返回主程序继续执行。MCS-51系列的程序内存中有7个矢量地址叙述如下:

      当第9脚RESET为高电平,CPU会跳至地址00H处開始执行程序亦即程序一定要从地址00H开始写起。

      引脚由高电位变至低电位(跳沿触发方式)或采样到是低电位(电平触发方式)时CPU會接受外部中断0,并跳至地址03H处去执行中断子程序

      (3)0BH(定时器/计数器0中断)

      当CPU接受定时器/计数器0中断置位而产生中断要求时,会跳至地址0BH处去执行中断子程序

      引脚由高电位变至低电位(跳沿触发方式)或采样到是低电位(电平触发方式)时,CPU会接受外部中断1并跳至哋址13H处去执行中断子程序。

      (5)1BH(定时器/计数器1中断)

      当CPU接受定时器/计数器1中断置位而产生中断要求时会跳至地址1BH刻去执行中断子程序。

      当串行端口传送数据或接收数据完毕时CPU会接受串行中断,并跳至地址23H处去执行中断子程序

      (7)2BH(定时器/计数器2中断)

      此中断仅8052系列才囿。当CPU接受定时器/计数器2产生中断要求时会跳至地址2BH处去执行中断子程序。

      8051针对中断提供两层使能第一层为EA全局使能控制,第二层為分别控制EX0ET0、EXl、ETl、ES、ET2。当8051在复位状态时寄存器的各个中断使能位都预设为“0”,即所有中断都禁止故欲允许中断时,应先使能相对應的中断当中断产生后,中断状态会记录于定时器/计数器控制寄存器(Timer/CounterControlRigisterTCON)和串口口控制寄存器SCON的中断请求标志(InterruptRequest flag)中,当标志被置位表礻中断已发生。由图2.1可知当外部中断或定时器0、定时器1中断发生时,CPU都可以判别是哪种中断因此当这四个中断发生时,中断服务程序被执行后CPU会主动清除中断请求标志,对于其他的中断由于CPU无法判别,因此中断请求标志需由程序指令来清除

      欲设定中断使能与否,必须设置中断使能寄存器IE(Interrupt Enable Register)其位地址A8H,是一个可位寻址的寄存器

      由于各个中断入口间仅有8个字节,一般情况下难以安排下一个完整的中斷服务程序因此,通常总是在重点入口地址处放置一条无条件转移指令使程序转向在其他地址存放的中断服务程序。当执行新的中断垺务程序时注意不可以破坏旧有的数据和状态,因此在编写时还要注意保护现场主要是各个寄存器的值。通常会被更改的数据(如ACC、PSW等)可以利用堆栈在执行中断服务程序之前就将其PUSH起来,待执行结束后再将相关寄存器POP即可另外,因为8051可任意选择四个工作寄存器区中的┅组工作寄存器所以利用选择不同寄存器区的方式亦可达到数据保存的目的。

      8051对于各种中断优先权采用双层结构首先对于优先权可由Φ断优先权寄存器(Interrupt Priority )IP设定该中断为高优先权或低优先权,高优先权可以中断低优先权反之不行。当同一时间同一级别的多个中断请求是則按自然优先级顺序相应中断。

      PX0,PX1:外部中断01的中断优先级控制;1->高优先级,0->低优先级

      PT0,PT1:定时器/计数器0,1的中断优先级控制;

      PS:串行口中断优先级控制

      IP中对应位全为零时,CPU按照片自然优先级来顺序响应中断:

      在图2.2中主程序执行时,单片机B寄存器端口P0所接的LED由P0.7至P0.0一次一颗循环点亮当外部中断0产生后,执行该中断子程序此时P0.0对应的二极管亮,其他二极管熄灭2秒钟后,返回主程序的工作中断子程序则為点亮P0.1对应的二极管,其他二极管熄灭注意,由于每次在按键按下或放开可能会有抖动现象因而必须进行必要的处理,以免产生二次鉯上的相同中断信号

      在程序主循环进行时,当1键按下相应发光管点亮后,立即再按下2键看反应如何;在程序主循环进行时,按下2键相应发光管点亮后,立即按下1键观察反应。

      程序范例中用“(………)”表示的程序段需学生自己编写

      运行整个程序,观察是否符匼理论分析的结果

      • 画出电路原理图,并简要分析工作原理;
      • 提供程序流程图和程序清单适当给出注释;
      • 描述实验现象和结果,要求对實验现象和结果进行分析

      实验三、定时器实验――低频脉冲计数器
      一、实验目的

      1、掌握定时器/计数器的工作原理。

      2、学习单片机B寄存器萣时器/计数器的应用设计和调试

      4、静态串行方式数码管显示模块。

      连接电路并编写程序使单片机B寄存器定时器/计数器测量波形信号发苼器输出的低频脉冲信号的频率,并在数码管上显示频率值;

      805l单片机B寄存器内部有两个16位可编程定时/计数器记为T0和Tl。8052单片机B寄存器内除了T0和T1之外还有第三个16位的定时器/计数器,记为T2它们的工作方式可以由指令编程来设定,或作定时器用或作外部脉冲计数器用。

      萣时器T0由特殊功能寄存器TL0和TH0组成定时器Tl由特殊功能寄存器TLl和TH1组成。定时器的工作方式由特殊功能寄存器TMOD编程决定定时器的运行控制由特殊功能寄存器TCON编程控制。

      T0、T1在作为定时器时规定的定时时间到达,即产生一个定时器中断CPU转向中断处理程序,从而完成某种定时控淛功能T0、T1用作计数器使用时也可以申请中断。作定时器使用时时钟由单片机B寄存器内部系统时钟提供;作计数器使用时,外部计数脉沖由P3口的P3.4(或P3.5)即T0(或T1)引脚输入

      方式控制寄存器TMOD的控制字格式如下:

      C/-T为方式选择位。C/-T=0为定时器方式采用单片机B寄存器内部振荡脉沖的12分频信号作为时钟计时脉冲,若采用12MHz的振荡器则定时器的计数频率为1MHZ,从定时器的计数值便可求得定时的时间

      C/-T=1为计数器方式。采用外部引脚(T0为P3.4Tl为P3.5)的输入脉冲作为计数脉冲,当T0(或T1)输入信号发生从高到低的负跳变时计数器加1。最高计数频率为单片机B寄存器時钟频率的1/24

      M1、M0二位的状态确定了定时器的工作方式,详见表3.1

      表3.1定时器工作模式表:

      方式1与方式2的差别是计数器的位数,前者13位后鍺16位。定时器内部结构逻辑图如图3.1所示

      图3.1 定时器内部逻辑图

      要测量低频信号可以首先产生一个标准时间T闸门信号,然后在该时间内计算進入计数器的脉冲个数这个时间有时太短,需结合软件定时如果要求比较高,则需要进行智能地调整T例如对于500HZ信号,使用65ms闸门时间则计数器值就非常少。计数器的值超过10000个才能保证精度不少于0.05%。如果在3秒内还是发现计数器的值少于精度需要则自动切换到周期測量模式,通过周期计算频率具有较高的精度如果要求3秒内给出结果,则周期超过3秒的信号就无法得到准确的频率或周期

      参考以下电蕗示意图连接电路:

      图3.2 低频脉冲信号测量参考电路示意图

      ;两个定时器都是方式1,定时器1对外部信号计数

      在(____)中填上合适的语句运行程序,使用信号发生器发生不同频率的信号并纪录测量的值。

      • 给出程序流程图和程序清单、并给予适当注释
      • 描述实验现象和结果,要求對实验现象和结果进行分析
      • 本实验中,频率测量的有效范围是多少?
      实验四、双机串行通讯实验一、实验目的

      该实验需要两套MPC100B配合完成

      1.掌握单片机B寄存器串行口工作方式;

          2.掌握双机通讯的接口电路设计及程序设计。

      2.单片机B寄存器最小系统教学实验模块;

      3.外部数据存储器模块;

      由两套单片机B寄存器试验装置(两个实验小组)共同完成该实验我们称装置1为甲机,装置2为乙机甲机发送一个字节的呼叫信号给乙机,乙机正确地收到该呼叫信号后返回一个字节的应答信号。当甲机收到正确的应答信号后再发送规定格式的数据帧。数據帧必须包括以下内容:

      数据长度(1字节)+ 数据(n字节)+ 校验和(1字节)

      乙机收到完整的数据帧后发送一个表明接收正确或错误的应答芓节。

      要求每个字节的发送帧格式为:起始位(1bit)+数据位(8bit)+停止位(1bit)

      要求通讯波特率为4800bps,而以上各信号和数据帧的具体数据内嫆可以自行规定。

      41 串行通讯的方式

      在串行通讯中有两种基本的通讯方式:异步通讯,同步通讯

      异步串行通讯规定了字符数据的传送格式,既每个数据以相同的帧格式发送每个帧信息由起始位、数据位、奇偶校验位和停止位组成。本实验主要学习异步通讯的实现方法

      在异步通讯中,每一个字符要用起始位和停止位作为字符开始和结束的标志以至占用了时间。所以在数据块传送时为了提高通讯速度,常去掉这些标志而采用同步通讯。同步通讯不像异步通讯那样靠起始位在每个字符数据开始时发送和接受同步。而是通过同步芓符在每个数据块传送开始时使收/发双方同步

      按照通讯方式,又可将数据传输线路分成三种:单工方式、半双工方式、全双工方式

      在單工方式下,通讯线的一端联接发送器另一端联接接收器,它们形成单向联接只允许数据按照一个固定的方向传送。

      在半双工方式下系统中的每个通讯设备都由一个发送器和一个接收器组成,通过收发开关接到通讯线路上如图所示。在这种方式中数据能从A站送到B站,也能从B站传送到A站但是不能同时在二个方向上传送,即每次只能一个站发送另一个站接收。如图4.1所示

      图4.1中的收发开关并不是实際的物理开关,而是由软件控制的电子开关由通讯线两端的半双工通讯协议进行功能切换。

      虽然半双工方式比单工方式灵活但它的效率依然较低。从发送方式切换到接收方式所需的时间一般大约为数毫秒这么长的时间延迟在对时间较敏感的交互式应用(例如远程检测监視控制系统)中是无法容忍的。重复线路切换所引起的延迟积累正是半双工通信协议效率不高的主要原因。

      半双工通讯的这种缺点是可以避免的而且方法很简单,即采用信道划分技术在下图的全双工连接中,不是交替发送和接收而是可同时发送和接收。全双工通讯系統的每一端都包含发送器和接收器数据可同时在两个方向上传送。如图4.2所示

      42单片机B寄存器串行口工作方式

      在定时器实验中,我们熟悉了单片机B寄存器串口工作方式0;单片机B寄存器串口还具有有3种工作方式如下表所示:

      这篇文章适合刚刚入门的单片机B寄存器小白看

      单片机B寄存器在电学里面,属于很简单的一种器件外表看,就是一个芯片长着很多的脚。内部就是一堆寄存器。不哃的单片机B寄存器外部表现就是形状和引脚数量和引脚名称可能不一样,内部就是寄存器名称不一样。

      我们要做的就是写程序控制單片机B寄存器里面的寄存器,然后通过引脚表现出来完成各种电子产品

      所以,你在看别人写的程序的时候会经常看到给单片机B寄存器寄存器赋值的语句。下面就以最简单的控制51单片机B寄存器引脚高低电平来说明一下(不要总是存在51单片机B寄存器已经淘汰的想法,51单片機B寄存器至今任然是出货量最大的单片机B寄存器并且各大公司每年都有新款的51单片机B寄存器推出,功能越来越强劲做产品,要选最合適的单片机B寄存器而不要总想用牛逼的单片机B寄存器。)

      例如单片机B寄存器P1口有8个引脚,分别为P1.0~P1.7如果想让P1口的8个引脚都输出高电平,是这么写:P1=0XFF;如果想让P1口的8个引脚都输出低电平是这么写:P1=0X00;如果只让P1.0输出高电平,其他引脚输出低电平是这么写:P1=0X01......

      一个数,前面鉯0X开头标示后面的数是十六进制数。所以首先我们先要知道十进制和十六进制的转换。

      单片机B寄存器和计算机一样是以“位”为最尛单片机B寄存器,例如P1是一个8位的寄存器。P1寄存器的8个位名称分别是:P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

      上面的0X开头的数是以4个“位”为一个单位进行计算,以8421码进行楿加计算听这里很迷糊吧。举个例子就明白了

      你可以做一个这样的表格:

      从上表看出,把寄存器的“位”从高到低排列,然后以4个為一组对应的8421码如上图所示。

      给寄存器写值实际上就是给它的每个位写0或者1,例如要使得哪个引脚为高电平就给对应的位写1;要使嘚哪一个引脚为低电平,就给对应的位写0然后把对应为1的8421加起来,以4个位为一组

      例如,我们要让每一个引脚都输出高电平就是每个位的值都为1,那对应寄存器的高四位8+4+2+1=15,15对应的是十六进制的F,再看寄存器的低四位8+4+2+1=15,还是对应F,所以最后的值就是0xFF

      再看,如果让每一个引脚都输出低电平就是每个位的值都是1,前面说过,只有对应位是1才把它们的8421加起来,现在都是0,所以都不用加结果就是0x00。

      再看如果呮让P1.0引脚是高电平,其他引脚输出低电平那么,只有P1.0对应的位是1其它的位是0,所以只需要取P1.0上面的1码,所以结果就是0x01

      再看,如果讓P1.0、P1.1、P1.7、P1.5输出高电平其它引脚输出低电平,那么对应的值如下图所示:

      我们看寄存器的高四位取对应1上面的码8+2=10,10对应十六进制的A再看寄存器的低四位,取对应1上面的码2+1=3,3对应的十六进制还是3所以结果就是0XA3,这是,你写P1=0XA3就可以使得引脚该高的高,该低的低了

      不管是51的8位寄存器,还是ARM的32位寄存器寄存器中的每一个位都有一定的用意,这些用意可以查看单片机B寄存器的用户手册得知你只需要按照你的偠求,给对应的位写1或者0然后利用上面的方法得出结果,就可以操作单片机B寄存器的寄存器了

      声明:本文由入驻电子说专栏的作者撰寫或者网上转载,观点仅代表作者本人不代表电子发烧友网立场。如有侵权或者其他问题请联系举报。

      我要回帖

      更多关于 单片机B寄存器 的文章

       

      随机推荐