omf51和ubrof格式的文件分别wifi是什么么软件生成的?

在电子工程世界为您找到如下关于“编程技巧”的新闻
功能强大的时钟中断&  在单片机&程序设计中,设置一个好的时钟中断,将能使一个CPU发挥两个CPU的功效,大大方便和简化程序的编制,提高系统的效率与可操作性。我们可以把一些例行的及需要定时执行的程序放在时钟中断中,还可以利用时钟中断协助主程序完成定时、延时等操作。&  下面以6MHz时钟的AT89C51系统为例,说明时钟中断的应用。&  ...
挪威Nordic Semiconductor今天宣布牵手小米的生态链公司之一——国内机器人玩具开发商小米生态链公司北京爱其科技有限公司,在其新型米兔积木机器人选择Nordic荣获多个奖项的nRF51822 低功耗蓝牙(以前称为蓝牙智能)系统级芯片。该机器人是一种智能电子玩具,通过积木搭建的方式把零件组合到一起,便可成为各种不同形状的机器人。用户可以利用零件搭建独一无二的机器人,...
Customization Files定制文件
C51编译器包括几个你可以修改的源文件,用于适应特定的硬件平台。这些文件包括:起始运行的代码(STARTUP.A51),初始化静态变量的代码(INIT.A51),处理低速I/O的代码(GETKEY.C and PUTCHAR.C)。存储器分配时库的源代码也包含文件CALLOC.C, FREE.C, INIT_MEM.C, MAL...
Segment Naming Conventions程序段命名约定
Cx51编译器生成的目标(程序代码,程序数据和常量数据)都以程序段的形式存放,段是代码和数据的单元。一个段可能是可重定位的,也可能地址是绝对的。每一个可重定位的段都有一个类型和一个名字。
段名包括:module_name。module_name是声明这个段的源文件的名字(不包含驱动器名,路径和扩展名)。为了...
&C程序与汇编的接口
Cx51程序可以方便地与8051汇编程序接口。A51汇编器是一个以OMF-51格式发射对象模块的8051宏汇编器。通过观察一些编程规则,你可以在C程序中调用汇编程序,反之亦然。在汇编模块中声明的公有变量在C程序中也可以使用。
在C程序中调用汇编程序有几个方面的原因。一是可以使用已有的汇编程序,二是在希望运行速度快的地方使用,三是在希望直接用汇...
Register Usage寄存器应用
汇编程序可以在改变当前寄存器组中所有寄存器和ACC,B,DPTR以及PSW中的内容。当在汇编程序中调用C函数时,要注意这些寄存器都有可能被C函数改变。
Overlaying Segments段覆盖
如果程序在连接和定位过程中执行了覆盖过程,那么每个汇编子程序都有一个独一无二的程序段是非常重要的。这对于在段覆盖过程中,根据各个不同的段...
Data Storage Formats数据存储格式
这一部说明可用的数据类型的存储格式。Cx51提供了几种数据存储格式如下:
Data Type &&&&&&& Bits & Bytes Value Range
bit &&&&&&...
Accessing Absolute Memory Locations
绝对存储器访问
C编程语言并不支持明确地提定一个静态或全部变量的存储位置。有三种方法可以明确地参考存储器位置:
(1)绝对存储器访问宏
(2)连接器位置控制
(3)关键字_at_
Absolute Memory Access Macros
可以使用作为Cx51库一部分的绝对存储器访问宏。使用以...
的是实践,在实践中增长经验。在校学生的话,实践机会的确会比较少,但是有机会的话,可以毕业实习选择相关的课题,这样就可以接触到实际的项目。而且如果单片机微机原理是一门主课的话,相信学校会安排比较多的实践上机机会。有能力的话,可以找一些相关兼职工作做做,会更有帮助。而且单片机开发应用需要软硬件结合,所以不能只满足于编程技巧如何完
美,平时也要注意硬件知识的积累,多上上电子论...
本文用S7-200 编写的几个实例都是在网上发表或在回答网友的求助编写的,程序短小,针对性强,有程序解析,特别适合初学者学习参考。
网友求助&西门子PLC用一个按钮控制电机启停,不容许用中继,可用计数器定时器&&
答复:只用PLC一条指令,就可实现电机启停。见下图:&
该梯形图编程技巧是:在SR...
编程技巧资料下载
提高编程技巧的十大方法(经典中的经典)...
1.C语言和汇编语言在开发单片机时各有哪些优缺点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。对于目前普遍使用的RISC架构...
对于一个较大的应用系统来说, FPGA 芯片的资源是有限的,FPGA 芯片的价格随门数增加而增加。通过对程序的优化,提高芯片资源的利用率,可以降低器件功耗,提高电路性能,并为以后升级留下空间。下面是一些常用的优化原则与方法。感兴趣的小伙伴们可以看看。...
C语言编程技巧C语言编程技巧C语言编程技巧...
单片机应用编程技巧100问...
讲述单片机的应用编程技巧...
bianchengsh...
C语言编程技巧程序集(很实用易懂)....
Visual C++编程技巧.txt Visual C++编程技巧.txt...
EM78系列单片机实战编程技巧...
编程技巧相关帖子
:http://blog.sina.com.cn/s/blog_686eeyv.html
C语言编程技巧总结 不錯, {:1_103:}
有道理,顶一个!
谢谢分享。。。
谢谢楼主分享
[quote][size=2][url=forum.php?mod...
编程技巧视频
LabVIEW 技巧编程(初级)培训LabVIEW 编程技巧(进阶)培训LabVIEW 网络讲坛2009特别篇之更高效的编程环境LabVIEW 网络讲坛2009特别篇之新增VI和函数LabVIEW 网络讲坛2009特别篇之多核并行运算新技术如何使用LabVIEW制作一个iphone(一)如何使用La...
你可能感兴趣的标签
热门资源推荐1688.com,阿里巴巴打造的全球最大的采购批发平台
1688/淘宝会员(仅限会员名)请在此登录
cbulogin.et2Server is OK当前位置: >>
微机原理与接口技术
《微机原理及接口技术》实 验 指 导 书杨霞 周林英 编长安大学电子与控制工程学院 2009 年 9 月i 实验仪器简介STAR ES598PCI 实验仪提供了几乎所有最实用、新颖的接口实验,提供详尽的 C、汇编例 子程序及其使用说明,不但可以满足各大专院校进行单片机课程的开放式实验教学,也可以 让参加电子竞赛的学生熟悉各种类型的接口芯片, 做各种实时控制实验, 轻松面对电子竞赛; 也可以让刚参加工作的电子工程师迅速成为高手。 STAR ES598PC 提供实验仪与微机同步演示功能,方便老师教学和演示。它提供了一个库 文件,如果学生上机时间有限,只需编写最主要的程序,其它调用库文件即可;它布局合理、 清晰明了,模块化设计,可以无限升级,让您的选择永不落伍;兼容性强,可以轻松升级, 减少设备投资;使用方便,易于维护。实验仪功能特点◇ 集编辑器、项目管理、启动编译、连接、错误定位、下载、调试于一体,多种实验仪、 仿真器、多类型 CPU 仿真全部集成在一个环境下,操作方法完全一样。 ◇ 完全 VC++风格。 支持 C、 PL/M、 宏汇编: 同时支持 Keil 公司 C51、 Franklin 公司 C51、 IAR/Archimedes 公司的 C51、Intel C96、Tasking 的 C196、Borland 公司的 TASM、Turbo C。 ◇ 支持 ASM(汇编) 、C、PLM 语言,多种语言多模块混合调试,文件长度无限制。 ◇ 支持 BIN、HEX、OMF、AUBROF 等文件格式。可以直接转载 ABS、OMF 文件。 ◇ 支持所有数据类型观察和修改。自动收集变量于变量窗(自动、局部、模块、全局) 。 ◇ 无须点击的感应式鼠标提示功能。 ◇ 功能强大的项目管理功能, 含有调试该项目有关的仿真器、 所有相关文件、 编译软件、 编译连接控制项等所有的硬软件信息,下次打开该项目,无须设置,即可调试 ◇ 支持 USB、并口、串口通信。 ◇ 提供模拟调试器。 ◇ 符合编程语言语法的彩色文本显示,所有窗口的字体、大小、颜色可以随意设置。 提供几十个实验的汇编、C 版本的源文件。提供一个库文件,如果学生上机时间有限, 只需编写最主要的程序,其它调用库文件即可。 实验仪可提供以下软件实验:十进制数加法,十进制数减法,四字节二进制数转十进制2 数,数据传送,冒泡排序,二分查找法,散转等。星研集成环境软件的安装和使用1 软件安装1.1 安装星研集成环境软件一. 新用户安装步骤 使用光盘安装: 1.将仿真器、实验仪所配 CD 插入 CD-ROM 驱动器。 2. “我的电脑” “资源管理器” 在 或 中选择 CD-ROM 驱动器\ WIN32\星研, 然后运行 SETUP.EXE 文件即可进入安装界面。 3. 中文界面,用户只需按程序提示一步一步进行安装即可。 使用 Internet 下载文件的用户 1.运行下载文件(XingYan.exe) ,软件自动执行安装程序。 2.安装程序为中文显示,用户只需按程序提示一步一步进行安装即可。 二. 已安装过低版本星研集成环境软件的用户的安装步骤: 1.首先将原来的低版本软件进行卸载,具体步骤请参考“软件卸载”部分的内容。 2.以后按新用户的安装步骤进行安装。 在安装过程中, 如果用户没有指定安装目录, 安装完成后会在 C:盘建立一个 C:\XINGYAN 目录(文件夹),结构如下: XingYan 可执行文件、DLL 文件、寄存器文件 EXAMPLES 例子程1.2软件卸载1.进入控制面板,运行“添加/删除程序” 。 2.进入“添加/删除程序”窗口,在“安装/卸载”页面上的列表中选择“星研集成环境软件” , 按“删除”按钮,之后按自动卸载程序的说明一步一步地操作即可。1.3USB 驱动程序1、USB 驱动程序的安装 通过 USB(通用串口总线)接口将微机与仿真器、实验仪相连,打开仿真器、实验仪电 源。仿真器、实验仪与微机的第一次连接引起驱动程序的安装会变得很简单,您只需等待安 装过程的结束或按驱动程序的安装向导执行完即可。驱动程序的安装会出现如下界面:3 实际的界面可能有些差别,请等待该过程的结束。驱动程序的安装过程中,请勿执行其 它应用程序。 2、 如何解决连接不上的情况 如果仿真器、 实验仪与微机连接不上是由于未按正确步骤造成的, 可根据以下步骤解决: Window98/Window Me:重新安装星研集成环境软件,关闭仿真器电源,稍等几秒钟,再 打开电源,等待操作系统安装新的驱动程序结束后,运行星研软件即可。 Windows2000/WinXP:在仿真器电源打开的情况下,使用控制面板中的“设备管理器” , 可以看到一个未安装好的 USB 设备:上图中的“通用串行总线控制器”下有一个打问号的 USB 设备,选中后按鼠标右键,选 择菜单中的“卸载”项。重新安装星研集成环境软件,关闭仿真器、实验仪电源,稍等几秒 钟,再打开电源,等待操作系统安装新的驱动程序结束后,运行星研软件即可。 注意:必须先安装星研集成环境软件;在 WinXP 中,驱动程序的安装会有选项,按缺省的值 选择即可。1.4软件启动运行 Windows,进入桌面窗口。 鼠标单击“开始”按钮,在“程序”栏中打开“星研集成环境软件”菜单栏,在其中选 择“星研(SUPER、STAR 系列仿真器),开始启动星研集成环境软件。 ” 注意:当您使用低配置机器时,从星研集成环境软件退出后必须等待足够的时间,让系统完 全退出(硬盘停止工作)后,方可再次启动星研集成环境软件。1.5编译器星研集成环境软件支持的编译器 MCS51 MCS96、MCS196 80X864 Keil A51、C51 Franklin A51、C51 Intel ASM51、PL/M51 Archimedes A8051、C-51Intel ASM96、PLM96、C96 Tasking ASM196、C196TC、TASM编译器请用户自备。 设置工作环境 您的编译器正确安装后,请设置星研集成环境软件的编译器工作环境。 打开[主菜单 ? 项目 ? 设置工作环境]:例如:您使用的编译器是 TASM、TC,安装在 C:\xingyan\TASM,C:\xingyan\TC, TASM 宏汇编路径: C:\xingyan\TASM; Turbo C 路径: C:\xingyan\TC;5 2 如何使用星研集成环境软件星研集成软件为用户提供了许多实用和方便的观察、调试及分析的功能,下边几节,通 过实例介绍如何使用星研集成环境软件。使用户体验该软件功能的强大和方便。2.1数据传送程序(ASM)星研集成环境软件推荐您使用项目为单位来管理您的程序。如果您做一个简单的实验, 或只希望看一个中间结果,您可以不建立项目文件,系统需要的各种设置,来源于“缺省项 目” 。本节不使用项目文件。 本例旨在通过建立一个具体的程序来介绍星研集成软件的使用方法以及它的强大的调试 功能。使用户很快上手,体验到此软件功能的强大和方便。 本实例是将数据段中 3000H~30FFH 单元的内容传送给实验仪 B4 区的 61C256 的 2000H~ 20FFH 中; 区的 61C256 在 I/O 设备区, B4 使用 IOR 、 再将它传送回数据段的 6000H~ IOW 读写; 60FFH 中,程序是用汇编语言来编写。下面介绍相应的操作步骤: 首先运行星研集成软件。启动画面如图:1、设置缺省项目 执行 [主菜单 ? 辅助 ? 缺省项目],出现一个对话框:6 选择“STAR ES8688 仿真模块” 。 点击进入下一步: “选择语言”您可以根据自己的需要以及程序的类型作相应的选择, 本实例选择 Borland 公司的 Turbo C(3.0) 、TASM(5.0) (请确定在选择语言之前已经安装好相应的编译软件)。然后再点击 进入下一步: “编译、连接控制项”7 实验仪提供 64K memory 空间,memory model 请选择 tiny,缩写为如果需要源 程序级别调试,必须使用-v Cy 控制项,为了支持多文件 编译、 连接, 必须使用-c 控制 项。 一般不必改变 Turbo C 的 编译控制项。如果需要源程序级别调 试,必须使用/zi /l 控制项。 一般不必改变 Tasm 的编 译控制项。如果需要源程序级别调 试, 必须使用/m /l /v 控制项。 一般不必改变 TLINK 的 连接控制项。然后再点击进入下一步: “存贮器出借方式”8 仿真模块 EMU598 提供 64K 仿真 RAM,作程序段(CS) 、数据段(DS) 、附加段(ES) 、 堆栈段(SS)使用。 2、建立源文件 下面我们建立源文件,执行 [主菜单 ? 文件 ? 新建], (或者点击图标 )打开窗口如 下:首先选择存放源文件的目录,输入文件名,注意:一定要输入文件名后缀。对源文件编 译、连接、生成代码文件时,系统会根据不同的扩展名启动相应的编译软件。比如:*.asm 文件,使用 TASM 来对它编译。本实例文件名为 move.asm。窗口如下:9 按“确定”即可。然后出现文件编辑窗口:输入源程序,本实例的源程序如下: .MODEL TINY .STACK 100 .CODE START: MOV AX,@DATA MOV DS,AX MOV ES,AX NOP MOV CX,100H MOV SI,3000H MOV DX,2000H START1: MOV AL,[SI] OUT DX,AL INC SI INC DX LOOP START1 MOV DI,6000H MOV DX,2000H MOV CX,100H START2: IN DX,AL;memory mode :堆栈 ;开始程序段10 MOV INC INC LOOP SJMP Move ENDP END[DI],AL DI DX START2 $START输入源程序,如下图:这样一个源文件就建立好了。 3.编译、连接文件 首先选择一个源文件,然后就可以编译、连接文件了。对文件编译,如果没有错误,再 与库文件连接,生成代码文件(DOB、EXE 文件) 。编译、连接文件的方法有如下二种: (1) 使用[ 主菜单 ? 项目 ? 编译、连接 ]或[主菜单 ? 项目 ? 重新编译、连接 ]”(2)点击 。 图标 或 来“编译、连接”或“重新编译连接” 。 “编译连接”与“重新编译、连接”区别: “重新编译、连接”不管源文件是否修改、编 译软件是否变化、编译控制项有无修改,对源文件编译,如果没有错误,再与库文件连接, 生成代码文件(DOB、EXE 文件) 。编译、连接过程中产生的信息显示在信息窗的“建立”视 中。编译没有错误的信息如下:11 若有错误则出现如下信息框:有错误或警告信息,用鼠标左键双击错误、警告信息或将光标移到错误或警告信息上,回车, 系统会自动打开对应的出错文件,并定位于出错行上。如图:这时用户可以作相应的修改,直到编译、连接文件通过。 4.调试 在进入调试状态以前,请正确设置通信口:执行[ 主菜单 ? 辅助 ? 通信 ],对话框如 下:12 仿真器、实验仪配套的通信线可以与微机 USB 口相连,即为 USB 通信线,请选择 USB。 对于最下面一行的校验,通常您不必选中它,可以提高传送 DOB、HEX、BIN 文件时的 速度。 在进入调试状态以前,您还必须确定仿真器、实验仪与微机的正确连接,如果使用仿真 器,仿真头正确地连接在仿真器上,电源接通,开关打开。 在软件中选择对应的仿真器、实验仪型号,具体设置如下:执行[ 主菜单 ? 辅助 ? 仿 真器、实验仪 ],对话框如下:根据你所使用的机型作相应选择。 如果编译、连接正确后,可以开始调试程序。进入调试状态方法有: a) 执行[ 主菜单 ? 运行 ? 进入调试状态] b) 点击工具条的 c) 执行[ 主菜单 ? 运行 ? 装载 DOB、HEX、BIN 文件] 进入后的窗口如下:13 在整个图片中我们可以看到相对应的窗口信息。在“工作区窗”的“CommonRegister”中 我们可以了解通用寄存器的信息。中间的窗口为源程序窗口,用户可在此设置断点,设置光 标的运行处,编辑程序等。寄存器窗我们可以看到一些常用的寄存器的数值。存贮窗 1 和存 贮窗 2 显示相应的程序段(CS) 、数据段(DS) 、IO 设备区的数据,还有变量窗,自动收集变 量显示其中。反汇编窗显示对程序反汇编的信息代码、机器码、对应的源文件。在信息窗的 “装载”视中,显示装载的代码文件,装载的字节数,装载完毕后,显示启始地址,结束地 址。这种船坞化的窗口比通常的窗口显示的内容更多,移动非常方便。用鼠标左键点住窗口 左边或上方的标题条,移动鼠标,将窗口移到您认为合适的位置;将鼠标移到窗口的边上, 鼠标的图标变成可变化窗口时的形状,用鼠标左键点住,移动鼠标,变化一个或一组窗口的 大小。在调试过程中,可以根据您的需要,在[主菜单 ? 查看]中打开:寄存器窗、存贮器窗 1、2、3、观察窗、变量窗、反汇编窗。您也可以通过[主菜单 ? 辅助 ? 设置 ? 格式],设 置每一种窗口使用的字体、大小、颜色。移动窗口到您喜欢的位置、大小。首先在“种类”中选择一个窗口, 然后选择 “字体” 、 “大小” 在 , “颜 色”中选择某一类,在“前景” 、 “背景”中选择您喜欢的颜色。14 对于高级语言,在您的程序前有一段库文件提供的初始化代码, (当前可执行标志) 不会出现在您的文件行上,如果您使用 C 语言,可将光标移到 main 函数上,按 F4 功能键, 让 CPU 全速运行到 main 行上后停下;如果您使用 PL/M 语言,按 F7 功能键,让 CPU“单 步进入” ,运行到您的任何一个可执行行后停下。 您可以使用以下命令调试您的程序: 设置或清除断点(功能键为 F2) 在当前光标行上设置或清除一个断点 单步进入(功能键 F7) 单步执行当前行或当前指令,可进入函数或子程序。 连续单步进入(功能键 Ctrl + F7) 连续执行“单步进入” ,用鼠标点击 或按任意键后,停止运行。 单步(功能键 F8) 单步执行当前行或当前指令,将函数或子程序作为一条指令来执行。如果当前行中 含有函数、子程序或发生中断,CPU 将执行完整个函数、子程序或中断,停止于当前行 或当前指令的下一有代码的行上。 连续单步(功能键 Ctrl + F8) 连续执行“单步” ,用鼠标点击 或按任意键后,停止运行。 运行到光标行(功能键 F4) 从当前地址开始全速运行用户程序, 碰到光标行、 断点或用鼠标点击 , 停止运行。 全速断点(功能键 F9) 从当前地址开始全速运行用户程序,碰到断点或用鼠标点击 ,停止运行。 全速运行(功能键 Ctrl + F10) 从当前地址开始全速运行用户程序,此时,按用户系统的复位键,CPU 从头开始执 行用户程序,用鼠标点击 ,停止运行。全速运行时,屏蔽了所有断点,即不会响应任何 断点。 停止运行 终止微机与仿真器之间通信(功能键 ESC) 。 5.调试的方法及技巧 一般来说,用户的程序或多或少的会有一些逻辑错误,而仿真器、实验仪和星研集成软 件则可帮助用户快速定位,这样可很快查出相应的错误。 在调试状态的窗口中我们可以看到很多的窗口,用户只要熟练地应用这些窗口来观察、 分析数据就会很快的调试好程序,达到事半功倍的效果。 进入调试界面后,由于我们本次操作需要观察三个数据块:数据段 3000H~30FFH,数据 段 6000H~60FFH,I/O 区 2000H~20FFH,可以打开二到三个存贮器窗口,具体操作是:[主 菜单? 查看]15 然后根据你的需要打开不同的窗口。调整后的调试界面为:由于本次操作主要是观察存贮器窗口,所以我们拉大了这两个存贮器窗口的大小。每个窗口 设置了 4 个分页项: ,我们可以在不同的分页项设置不同的观察 数据空间以及地址范围。在 中可以选择 CS:Memory,DS:Memory,I/O,根据需 要可以做不同的选择。在 中可以直接输入地址,然后按回车,就可以直接 转到我们输入的地址的窗口上面观察数据。由于我们在此程序中的写入数据的 RAM 空间分 别为 DS:3000H~30FFH、DS:6000H~60FFH、I/O 区 2000H~20FFH,故我们建立的分页项 如下:16 存贮 0 分页项:存贮 1 分页项:存贮 2 分页项:我们这样设置界面的目的就是当用户要观察不同地址段的数据时,只要切换一下分页项 就行了。由于本次程序需要同时观察 DS:3000~30FFH、I/O:2000~20FFH 和 I/O:2000H~ 20FFH、DS:6000H~60FFH,所以打开二个存贮器窗。如图:17 软件中总共存在 3 个存贮器窗。可以同时观察三个不同的地址。 存贮器窗口支持数据的直接修改功能。 本软件的所有窗口中的数据都支持直接修改功能。 用户可以根据自己的需要在窗口中直接修改数据。比如:执行程序前,将 DS:3000H~300FH 中的数据改为 11、22、33、44、55、66、77、88、99、AA、BB、CC、DD、EE、FF、00, 在相对应的地址中直接输入数据即可。如图:一般刚刚写好的程序,在进入调试状态后,执行“单步”或者“单步进入” ,我们推荐您 能记住这些操作的相对应的功能键,这样您就在调试程序的过程中很方便。 在刚才的调试程序中我们多次执行 “单步 (F8) 命令, ” 在工作区窗口的 CommonRegister 视中查看通用的寄存器:我们可以观察到在本程序中所使用的一些寄存器的变 化,比如 AX、CX、DX、SI 的数值的变化,每一次循环, CX 减一,DX、SI 加一,AX 寄存器的低字节 AL 暂存从 DS:[SI]取出的数值:11、22、33、44、55、66??。18 我们可以看到存贮器窗口中的相对应的 RAM 的数据的变化。比如其中右边为相应数据的 ASCII 码。切换分页项我们可以观察到其它地址的数据。 把光标移动到 MOV DI,6000H 行上,点击图标 (功能键 F4) ,全速运行到光标行, 检查 IO:2000H~20FFH 内容,是否与 DS:3000H~30FFH 相同,如果完全一样,说明以上程 序没有任何问题。 切换分页项,存贮器窗显示 DS:6000H 开始的单元内容,将光标移到 JMP $行的左 边,鼠标变为 ,点击鼠标,在该行上设置了一个断点,也可以用鼠标点击该行,将光标移 到鼠标处,点击图标 (功能键为 F2) ,设置断点,重复操作,清除断点。点击图标 (功能键 F9) ,CPU 全速断点运行到光标处停下,检查 DS:6000H~60FFH 内容,与 I/O:2000H~20FFH 内容是否一样,相同表示程序没问题;如果不相同,将光标移 到 MOV DI,6000H 行上(具体操作是:用鼠标点击该行,然后再点击图标 ) ,使用单步进 入命令 F7 或连续单步进入命令 Ctrl + F7,检查结果,判断程序出错原因。 星研集成软件为用户提供了许多实用和方便的观察、调试、分析的功能,其他的一些功 能我们会在后续的实例中作更详细的介绍。用户也可以依此类推,发掘出更多更好的为自己 调试程序方便的功能。19 目录实验一 实验二 实验三 实验四 实验五 实验六 实验七 实验八 附录一 附录二清零程序 .................................................... 21 拆字程序 ................................................... 23 数据区移动 .................................................. 25 多分支程序设计 .............................................. 27 多字节减法运算 .............................................. 30 显示程序 .................................................... 33 8251 串口实验 ............................................... 36 步进电机控制 ................................................ 42 汇编语言的存储模型 ......................................... 52 8279 键值显示程序 .......................................... 5320 实验一 清零程序一、实验目的 掌握 8088 汇编语言程序设计和调试方法。 二、实验设备 STAR 系列实验仪一套、PC 机一台。 三、实验内容 把 RAM 区内 4000H-40FFH 单元的内容清零 。 四、程序框图五、源程序清单.MODEL TINY .STACK 100 .DATA .CODE ORG 0100H START: MOV BX,4000H MOV AX,0000H MOV CX,80H L1: MOV [BX],AX INC BX INC BX LOOP L1 JMP $ END START六、实验步骤 手动修改 RAM 区内 4000H-40FFH 的内容,连续或单步方式运行程序,检查 4000-40FFH 内容 执行程序前后的变化。21 七、思考 1、把 4000H-40FFH 中的内容改成 FF,如何修改程序。 2、把 4000H-40FFH 中的内容改成 00~FF,如何修改程序。22 实验二 拆字程序一、实验目的 掌握汇编语言设计和调试方法。 二、实验设备 STAR 系列实验仪一套、PC 机一台。 三、实验内容 把 4000H 单元的内容拆开,高位送 4001H 低位,低位送 4002H 低位,4001H、 4002H 的高位清零,一般本程序用于把数据送显示缓冲区时用。 四、程序框图五、源程序.MODEL TINY .STACK .DATA .CODE START: MOV BX,4000H MOV AL,[BX] MOV AH,AL MOV CL,4 SHR AH,CL INC BX MOV [BX],AH AND AL,0FH INC BX MOV [BX],AL JMP $六、实验步骤 手动修改 4000H 的内容,用连续或单步方式运行程序,检查 H 中 内容变化情况。 七、思考 1.如何用断点方式调试本程序。23 2.把 4000H、4001H 单元低位的内容合成一字送 4002H 单元。24 实验三 数据区移动一、实验目的 掌握 RAM 中的数据操作。 二、实验设备 STAR 系列实验仪一套、PC 机一台。 三、实验内容 把 4100H 源 RAM 区首址内的 16 字节数据传送到 4200H 目标 RAM 区。 四、设计思想 程序要求把内存中某一数据区(称为源数据块)传送到另一存储区(称为目的 数据块)。源数据块和目的数据块在存储器中可能有三种情况,如下图:对于两个数据块分离的情况,如图(a),数据的传送从数据块的首址开始,或者从 数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部 分会因“搬移”而遭破坏。 可以得出以下结论:当源数据首址>目的块首址时,从数据块首址开始传送 数据。 当源数据块首址<目的块首址时,从数据块末地址开始传送数据。 五、程序框图25 六、源程序清单.MODEL TINY .STACK .DATA .CODE ORG 0100H START0: MOV CX,0010H MOV SI,4100H MOV DI,4200H CMP SI,DI JA A42 ADD SI,CX ADD DI,CX A41: DEC SI DEC DI MOV AL,[SI] MOV [DI],AL LOOP A41 JMP $ A42: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP A42 JMP $ END START0七、实验步骤 调试运行 3060 程序, 检查 FH 中内容是否和 FH 中内容完全 一致。 八、思考 1.把 4200H 源 RAM 区首址内的 16 字节数据传送到 4100H 目标 RAM 区。 2.把 4100H 源 RAM 区首址内的 16 字节数据传送到 410AH 目标 RAM 区。26 实验四 多分支程序设计一、实验目的 掌握汇编语言的编程,熟悉程序散转的设计方法。 二、实验设备 STAR 系列实验仪一套、PC 机一台。 三、实验内容 编写程序,根据接收到的键值,作不同的处理。 四、设计思想 多分支结构相当于一个多路开关,在程序设计中通常是根据某寄存器或某单 元的内容进行程序转移。在设计多分支转移程序时,如果分支太多,则平均转移 速度太慢,本实验采用转移地址表实现多分支转移,可以提高平均转移速度。 五、程序框图开始 键盘扫描 直到有一个按 键输入(值存于AL中) AL&8? N 0--&AL AH=0, AX--& BX BX * 2 --& BX 散转表地址--&DI JMP CS:[DI][BX] Y0号键: 1号键: 2号键: 3号键: 4号键: 5号键: 6号键: 7号键:显示8个1 显示8个2 显示8个3 显示8个4 显示8个5 显示8个6 显示8个7 显示8个8散转程序流程框图六、实验步骤 1、连线说明:E5 区 :CLK E5 区 :CS E5 区 :A0 E5 区 :A、B、C、D ―― ―― ―― ―― B2 区:2M A3 区:CS5 A3 区:A0 G5 区:A、B、C、D2、在 G5 区的键盘上输入 1 位数 3、使用各种手段调试程序 3、结果显示在 G5 区的数码管上27 七、源程序清单 ;调用 GetKeyB 返回键值,根据键值执行相应的程序.MODEL EXTRN .STACK .DATA BUFFER START: DB .CODE MOV MOV MOV NOP START1: CALL CMP JB XOR START2: XOR MOV SHL LEA JMP Table_1: Key0: Key1: Key2: Key3: Key4: Key5: Key6: Key7: Key: DW MOV JMP MOV JMP MOV JMP MOV JMP MOV AL,5 JMP MOV JMP MOV JMP MOV JMP MOV LEA REP LEA CALL MOV Key AL,6 Key AL,7 Key AL,8 Key CX,8 DI,BUFFER STOSB SI,BUFFER Display8 CX,6000028TINY 100 8 DUP(?) AX,@DATA DS,AX ES,AX GetKeyB AL,8 START2 AL,AL AH,AH BX,AX BX,1 DI,Table_1 CS:[DI][BX] Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7 AL,1 Key AL,2 Key AL,3 Key AL,4 K大于7,作0处理 ;键值存放在AL中Display8:NEAR, GetKeyB:NEAR LOOP JMP END$ START1 START;延时29 实验五 多字节减法运算一、实验目的 掌握 BCD 码、补码,熟悉多文件、多模块汇编语言程序设计的方法。 二、实验设备 STAR 系列实验仪一套、PC 机一台。 三、实验内容 从键盘上输入 4 位被减数、减数,实现双字节 BCD 码(四位数)的减法,结果显示在 数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改 PC 指针、全速 运行等各种调试手段;熟悉查看特殊功能寄存器、CS 段、DS 段存贮器的各种方法。 四、程序框图开始 设定&先清LED 再接收键 输入&标志 通过键盘获得双字节十 进制被减数(压缩BCD码) 设定&接收到第一个键 后才清除LED&标志 通过键盘获得双字节十 进制减数(压缩BCD码) 被减数&=减数 ? N 被减数与减数 10H--& 符号位 交换,11H--& 符号位(负数) Y 压缩 缩被减数与减数低位字节 不带进位相减 十进制调整 被减数与减数高位字节 带进位相减 十进制调整 码转换为非压 码高位0消隐,若结果为负, 前面加上&-& 显示结果双字节十进制减法程序框图五、实验步骤 1、连线说明:E5 区 :CLK E5 区 :CS E5 区 :A0 E5 区 :A、B、C、D ―― ―― ―― ―― B2 区:2M A3 区:CS5 A3 区:A0 G5 区:A、B、C、D2、在 G5 区的键盘上输入 4 位被减数、减数 3、结果显示在 G5 区的数码管上 六、源程序清单30 .MODEL EXTRN EXTRN F1:BYTE .STACK .DATA BUFFER minuend subtrahend START: DB DW DW .CODE MOV MOV MOV NOP MOV START1: LEA MOV CALL MOV LEA MOV CALL MOV MOV MOV CMP JNB XCHG MOV START2: SUB DAS XCHG SBB DAS XCHG CLD LEA CALL MOV CALL MOV STOSB STOSB STOSB STOSBTINYDisplay8:NEAR, GetBCDKey:NEAR 100 8 DUP(?) 1 DUP(?) 1 DUP(?) AX,@DATA DS,AX ES,AX F1,0 DI,minuend CX,4 GetBCDKey F1,1 DI,subtrahend CX,4 GetBCDKey AX,minuend BX,subtrahend DL,10H AX,BX START2 AX,BX DL,11H AL,BL AL,AH AL,BH AL,AH DI,BUFFER B1toB2 AL,AH B1toB2 AL,10H ;高位 ;最高三位消隐 ;存放显示结果 ;低位 ;高位 ;负数 ;低位 ;按键次数 ;得到双字节十进制数(减数) ;按键次数 ;得到双字节十进制数(被减数) ;接收到第一个键,才清除显示 ;先清除显示,再接收键输入 ;被减数 ;减数31 LEA MOV CALL LEA CALL JMP B1toB2 PROC PUSH AND STOSB POP AND ROR STOSB RET B1toB2 BlackDisplay BlackDisplay1: ENDP PROC MOV CMP JNZ MOV MOV DEC LOOP Exit: CLD MOV RET BlackDisplay ENDP ENDSI,BUFFER+3 CX,3 BlackDisplay SI,BUFFER Display8 START1 NEAR AX AL,0FH AX AL,0F0H AL,4 ;将高位0消隐;将一个字节压缩BCD码转换成二个字节非压缩BCD码NEAR AL,[SI] AL,0 Exit AL,10H [SI],AL SI BlackDisplay1 [SI+1],DL;将高位0消隐START七、思考 从键盘上输入 4 位被加数、加数,实现双字节 BCD 码(四位数)的加法,结果显示在数 码管上。32 实验六 显示程序一、实验目的 1、熟悉 8255 的功能,理解 LED 显示原理及控制方法; 2、学会使用 LED 点阵液晶显示字体和图形; 3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报 告。 二、实验设备STAR 系列实验仪一套、PC 机一台。三、实验内容 1、编写程序,用 8255 的 PA、PB 口控制 LED 的位选和段选, (1)编写程序,控制 8 位数码管跑马灯形式显示 0; (2)编写程序,控制 8 位数码管静态显示指定字符 1-8; (3)编写程序,控制 8 位数码管动态循环显示 8 位字符; 2、按图连接线路,运行程序,观察实验结果。 四、实验原理图接8255 PB 接8255 PA五、实验步骤 1、主机连线说明:B4 区:CS(8255) B4 区:A0、A1 B4 区:JP56、JP53 ―― ―― ―― A3 区:CS1 A3 区:A0、A1 G5 区:JP 41、 JP 422、运行程序,验证显示结果。 六:源程序 (1) 控制 8 位数码管依次显示 0;.MODEL TINY .STACK 100 .DATA IO8255_Con EQU IO8255_A EQU IO8255_B EQU0F003H 0F000H 0F001H;CS3 ;A ;B33 LED_TAB: DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07H DB 07FH,6FH,77H,7CH,39H,05EH,79H,71H .CODE START: MOV AX,@DATA MOV DS,AX MOV ES,AX MOV DX,IO8255_Con MOV AL,80H ;方式 0,A,B,C 均为输出 OUT DX,AL MOV AL,0FEH ;8255 PC 输出 MOV CX,8 GOON: MOV DX,IO8255_A ;位选 OUT DX,AL ROL AL,1 MOV AH,AL MOV DX,IO8255_B MOV AL,03FH OUT DX,AL MOV AL,AH ;0FFH-&8255 PA CALL Delay JMP GOON Delay PROC NEAR PUSH CX MOV CX,20000 Delay1: LOOP Delay1 POP CX RET ENDP END START (2) 编写程序,控制 8 位数码管依次显示任意指定字符(0-F) ; .MODEL TINY .STACK 100 .MODEL TINY .STACK 100 .DATA IO8255_Con EQU 0F003H ;CS3 IO8255_A EQU 0F000H ;A IO8255_B EQU 0F001H ;B F1 DB 0 LED_TAB: DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07H DB 07FH,6FH,77H,7CH,39H,05EH,79H,71H .CODE34 START: MOV AX,@DATA MOV DS,AX MOV ES,AX ; MOV F1,0 MOV DX,IO8255_Con MOV AL,80H ;方式 0,A,B,C 均为输出 OUT DX,AL MOV AL,0FEH ;8255 PC 输出 MOV CX,8 GOON: MOV DX,IO8255_B ;段选 MOV BX, LED_TAB ;装入表头 PUSH AX MOV AL,F1 XLAT ;AL 放字形码 OUT DX,AL POP AX MOV AL,AH MOV DX,IO8255_A ;位选 OUT DX,AL ROL AL,1 MOV AH,AL INC F1 ;0FFH-&8255 PA CALL Delay JMP GOON Delay PROC NEAR PUSH CX MOV CX,800 Delay1: LOOP Delay1 POP CX RET ENDP END START (3) 编写程序,控制 8 位数码管同时显示 0、1、??F: .MODEL TINY .STACK 100 .MODEL TINY .STACK 100 .DATA IO8255_Con EQU 0F003H ;CS3 IO8255_A EQU 0F000H ;A IO8255_B EQU 0F001H ;B35 LED_TAB: DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07H DB 07FH,6FH,77H,7CH,39H,05EH,79H,71H F1 DB 0 .CODE START: MOV AX,@DATA MOV DS,AX MOV ES,AX MOV DX,IO8255_Con MOV AL,80H ;方式 0,A,B,C 均为输出 OUT DX,AL MOV AX,0FEFEH ;8255 PC 输出 MOV CX,1600 LEA BX,LED_TAB GOON: MOV AL,F1 XLAT MOV DX,IO8255_B ;段选 OUT DX,AL MOV AL,AH MOV DX,IO8255_A ;位选 OUT DX,AL ROL AL,1 MOV AH,AL CALL DL500ms LOOP GOON ;8 段数码管显示当前值 MOV CX,1600 ;8 段数码管显示完成,则显示下个字符 MOV AL,AH ; ; CALL DL3S INC F1 CMP F1,10H ;是否显示完了 JZ EXIT JMP GOONDL500msPROC NEAR PUSH CX MOV CX,400 DL500ms1: LOOP DL500ms1 POP CX RET DL500ms ENDP EXIT: END START七、思考 (4)编写程序,控制 8 位数码管显示当前日期以及时间;36 实验七 8251 串口实验一、实验目的与要求 了解 8251 的内部结构、工作原理;了解 8251 与 8088 的接口逻辑;掌握对 8251 的初 始化编程方法,学会使用 8251 实现设备之间的串行通信。 复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。 二、实验设备 STAR 系列实验仪一套、PC 机一台 三、实验内容 1、编制程序:实现 8251A 与 PC 机的串行通讯,使用 8253 作分频器提供 8251 的收发 时钟。 2、连接线路,从微机接收一批数据,接收完毕,再将它们回送给微机。 四、程序框图开始 初始化 8253(定时器 0,方式 3,BCD 码计数,CLK0/26) 初始化 8251 接收 10 个字节数据子程序 将接收到的 10 个字节数据通过 8251 发送给微机初始化 8251:开始 复位 8251 波特率系数为 16,8 个数据位,一个停止位,偶校验 允许接收和发送数据 清错误标志返回37 接收 10 个字节数据子程序:开始 读入状态发送了 10 个字节数据子程序:开始 读入状态N有数据N有数据Y读数据-&缓冲区Y发送N接收了 10 个字节数据N发送了 10 个字节数据Y返回Y返回五、实验原理图U38 D2 D3 RXD(E7) RXD D4 D5 D6 D7 WRC/DTxC (8253)OUT0 CS (0F000H)CS1 A0 RxRDYRD1 2 3 4 5 6 7 8 9 10 11 12 13 14D2 D3 RxD GND D4 D5 D6 D7 TxC WR CS C/D RD RxRDY 8251D1 D0 VCC RxC DTR RTS DSR RESET CLK TxD TxEMPTY CTS SYNDET TxRDY28 D1 27 D0 26 VCC 25 OUT0(8253) 24 RxC 23 22 21 RST CLK 20 4M(B2) 19 TXD(E7) 18 TXD 17 16 15 TxRDY六、实验步骤 1、连线说明:C5 区:CS(8253) 、A0、A1 C5 区:CLK0 C5 区:GATE0 C5 区:OUT0 C5 区:CS(8251) 、C/D C5 区:CLK C5 区:RXD、TXD ―― ―― ―― ―― ―― ―― ―― A3 区:CS5、A0、A1 B2 区:2M C1 区的 VCC C5 区:RxC、TxC A3 区:CS1、A0 B2 区:4M E7 区:RXD、TXD2、运行程序 3、运行“串口助手(ComPort.EXE)”,设置串口(波特率 4800,8 个数据位,一个停止 位,偶校验),打开串口,选择“HEX 发送”“HEX 显示” 、 ,向 8251 发送 10 个字节数据(输 入数据之间用空格分隔),是否能接收到 10 个字节数据,接收到的数据是否与发送数据 一致。 4、改变传输数据的数目,重复实验,观察结果。 七、演示程序38 .MODEL TINY ;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bps CTL_ADDR EQU 0FF01H ;控制字或状态字 DATA_ADDR EQU 0FF00H ;读写数据 W_8253_T0 EQU 0BF00H ;计数器0地址 W_8253_C EQU 0BF03H ;控制字 .STACK 100 .DATA Receive_Buffer DB 10 DUP(0) ;接受缓冲器 Send_Buffer EQU Receive_B发送缓冲器 .CODE START: MOV AX,@DATA MOV DS,AX MOV ES,AX NOP CALL INIT_8253 CALL INIT_8251 START1: MOV CX,10 CALL Receive_Group MOV CX,10 CALL Send_Group JMP START1 INIT_8253 PROC NEAR MOV DX,W_8253_C MOV AL,37H ;定时器0,方式3 OUT DX,AL MOV DX,W_8253_T0 MOV AL,26H ;BCD码26()=16*4800 OUT DX,AL MOV AL,0 OUT DX,AL RET INIT_8253 ENDP INIT_8251 PROC NEAR CALL RESET_8251 MOV DX,CTL_ADDR MOV AL,7EH ;波特率系数为16,8个数据位 OUT DX,AL ;一个停止位,偶校验 CALL DLTIME ;延时 MOV AL,15H ;允许接收和发送发送数据, 清错误标志 OUT DX,AL CALL DLTIME RET INIT_8251 ENDP39 Reset_8251PROC MOV MOV OUT CALL OUT CALL OUT CALL MOV OUT CALL RET Reset_8251 ENDP ;接受一组数据,CX--接受数目 Receive_Group PROC LEA Receive_Group1: CALL STOSB LOOP RET Receive_Group ENDP ;接受一个字节 Receive_Byte PROC MOV Receive_Byte1: IN TEST JZ MOV IN RET Receive_Byte ENDP ;发送一组数据,CX--发送数目 Send_Group PROC LEA Send_Group1: LODSB CALL LOOP RET Send_Group ENDP ;发送一个字节 Sendbyte PROC PUSH MOVNEAR DX,CTL_ADDR AL,0 DX,AL DLTIME DX,AL DLTIME DX,AL DLTIME AL,40H DX,AL DLTIME;向控制口写入&0& ;延时,等待写操作完成 ;向控制口写入&0& ;延时 ;向控制口写入&0& ;延时 ;向控制口写入复位字40HNEAR DI,Receive_Buffer Receive_Byte Receive_Group1NEAR DX,CTL_ADDR AL,DX AL,2 Receive_Byte1 DX,DATA_ADDR AL,DX;读入状态 ;有数据吗? ;有NEAR SI,Send_Buffer SendByte Send_Group1NEAR AX DX,CTL_ADDR;读入状态40 Sendbyte1:S延时 DLTIMEIN TEST JZ POP MOV OUT RET ENDP PROC MOV LOOP RET ENDP ENDAL,DX AL,1 Sendbyte1 AX DX,DATA_ADDR DX,AL;允许数据发送吗? ;发送NEAR CX,10 $DLTIMESTART八、实验扩展及思考 请读者思考,如何修改程序实现 8251 的自发自收功能?41 实验八 步进电机控制一、实验目的与要求 1、了解步进电机的基本原理,掌握步进电机的转动编程方法 2、了解影响电机转速的因素有那些 二、实验设备 STAR 系列实验仪一套、PC 机一台。 三、实验内容 编写程序:使用 G5 区的键盘控制步进电机的正反转、调节转速,连续转动或转动指 定步数;将相应的数据显示在 G5 区的数码管上。 四、控制原理 步进电机的驱动原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转, 驱动电路由脉冲来控制,所以调节脉冲的频率便可改变步进电机的转速,微控制器最适 合控制步进电机。另外,由于电机的转动惯量的存在,其转动速度还受驱动功率的影响, 当脉冲的频率大于某一值(本实验为 f.&100hz)时,电机便不再转动。 实验电机共有四个相位(A,B,C,D) ,按转动步骤可分单 4 拍(A-&B-&C-&D-&A),双 4 拍(AB-&BC-&CD-&DA-&AB)和单双 8 拍(A-&AB-&B-&BC-&C-&CD-&D-&DA-&A). 五、程序框图42 开始 0-&需要刷新显示标志 1-&步进电机未转动过标志 1-&转动方向标志(1:表示顺时针方向) 33H-&下次送给步进电机值 5-&步进电机转速初始化 8255(PC 口输出) 初始化 8253(计数器 T0 设置在模式 2 状态,BCD 码计数,CLK0/210) 初始化 8259(允许 8253 中断) 初始化 8253 中断向量初始化显示缓冲区: (数码管第 8 位:0,顺时针方向;5、7 位消隐;6 位:转速; 1、2、3、4 位:0,表示连续转动,其他值表示需要转动的步数) 调用显示子程序有键按下N需要刷新显示标志=1Y0-&需要刷新显示标志 调用步数调整子程序 关中断(终止步进电机转动)键值&9N Y Y Y Y数码管的 1、2、3 位-&2、3、4 位 键值送给数码管的第一位 调用改变转向子程序Y键值=0AHN键值=0BH调用增速子程序N键值=0CH调用减速子程序N键值=0DH调用启动步进电机子程序N43 改变方向子程序:开始启动步进电机子程序:开始 0-&步进电机未转动过标志Y转动方向标志=0YN0-&转动方向标志 1-&送给数码管的第 7 位 取转速对应的延时值(转速延时) 步进电机未转动过标志 转速延时& 50 91H-&下次送给步进电机值 下次送给步进电机值循环右移二次 取转动步数NY初始转速延时=50 初始转速延时=转速延时 初始转速延时 1=初始转速延时 开中断Y1-&转动方向标志 0-&送给数码管的第 7 位N步进电机未转动过标志返回Y33H-&下次送给步进电机值下次送给步进电机值循环左移二次返回增速子程序:开始减速子程序:开始Y转速=11N转速+1 转速送给数码管第 5 位转速=0YN转速-1 转速送给数码管第 5 位返回返回44 定时中断程序:开始N Y初始转速延时 -1=0 时Y 初始转速延时 1=转速延时N初始转速延时 1 - 1 初始转速延时=初始转速延时 11-1下次送给步进电机值-&8255 的 PC 口(控制步进电机转动一步) 转动方向标志=0 时Y 下次送给步进电机值循环右移一次2 3N下次送给步进电机值循环左移一次Y 1-1转动步数=0 时N1-11-&需要刷新显示标志转动步数减一N 1-1转动步数=0 时Y 关中断N清中断标志返回六、实验原理图DS3 R7 U6 8 D (8255)PC3 (8255)PC0 A B (8255)PC1 (8255)PC2 C ULN 3 4 5 6 7 GND I1 I2 I3 I4 I5 I6 I7 470 VCC O1 O2 O3 O4 O5 O6 O7 9 16 15 14 13 12 11 10 Motor Step VCC JP3 1 2M七、实验步骤 1、主机连线说明:45 E1 区:A、B、C、D E5 区:CLK E5 区:CS、A0 E5 区:A、B、C、D B3 区:CS、A0 B3 区:INT、INTA C5 区:CS(8253)、A0、A1 C5 区:GATE0 C5 区:CLK0 C5 区:OUT0 B4 区:CS(8255)、A0、A1―― ―― ―― ―― ―― ―― ―― ―― ―― ―― ――B4 区:PC0、PC1、PC2、PC3 B2 区:2M A3 区:CS5、A0 G5 区:A、B、C、D A3 区:CS1、A0 ES8688:INTR、INTA A3 区:CS2、A0、A1 C1 区:VCC B2 区:1M B3 区:IR0 A3 区:CS3、A0、A12、调试程序,查看运行结果是否正确 八、演示程序EXTRN IO8259_0 IO8259_1 Con_3 IO8255_Con IO8255_PC .MODEL TINY Display8:NEAR, SCAN_KEY:NEAR EQU 0F000H EQU 0F001H EQU 0E003H EQU 0E000H EQU 0D003H ;CS3 EQU 0D002H .STACK 100 .DATA DB 0 ;下一次送给步进电机的值 DB 8 DUP(0) ;显示缓冲区,8个字节 DB 8 DUP(0) ;显示缓冲区,8个字节 DB 0 ;选择哪一级速度 DB 0 ;转动一步后,延时常数 DB 0;若选择速度过快,延时由长到短,最终使用对应延时常数 DB 0 ;StartStepDelay DB 0 ;有没有转动过步进电机 DB 0 ; =1 顺时针方向 =0 逆时针方向转动 DB 0 ;已转动一步,需要显示新步数 DW 0 ;需要转动的步数 DB 250,125,83,62,50,42,36,32,28,25,22,21 MOV MOV MOV NOP MOV MOV MOV MOV AX,@DATA DS,AX ES,AX bFirst,1 bClockwise,1 StepControl,33H SpeedNo,546StepControl buffer buffer1 SpeedNo StepDelay StartStepDelay StartStepDelay1 bFirst bClockwise bNeedDisplay StepCount StepDelayTab: .CODE START:;有没有转动过步进电机 ;顺时针方向 ;下一次送给步进电机的值 ;第五级速度 STAR2:STAR3:STAR5:STAR1:CALL CALL CALL CALL MOV MOV MOV MOV MOV MOV MOV MOV MOV LEA LEA MOV REP LEA CALL CALL JB CMP JZ MOV CALL JMP CLI CMP JNB MOV MOV MOV MOV MOV MOV MOV JMP CMP JNB LEA SUB SHL XOR MOVInit8255 Init8253 Init8259 WriIntver buffer,0 buffer+1,0 buffer+2,0 buffer+3,0 buffer+4,10H AL,SpeedNo buffer+5,AL buffer+6,10H buffer+7,0 SI,buffer DI,buffer1 CX,8 MOVSB SI,buffer1 Display8 Scan_Key STAR5 bNeedDisplay,0 STAR3 bNeedDisplay,0 Step_SUB_1 STAR2 AL,10 STAR1 AH,buffer+2 buffer+3,AH AH,buffer+1 buffer+2,AH AH,buffer buffer+1,AH buffer,AL STAR2 AL,14 STAR3 SI,DriverTab AL,10 AL,1 AH,AH BX,AX;显示缓冲器初始化;终止步进电机转动47 DriverTab:Direction:AntiClockwise:AntiClockwise1:Clockwise:Clockwise1:Direction1: Speed_up:Speed_up1:Speed_up2: Speed_Down:Speed_Down1: Exec:JMP DW DW DW DW CMP JZ MOV MOV CMP JZ MOV JMP MOV ROR MOV JMP MOV MOV CMP JZ MOV JMP MOV ROL MOV JMP MOV CMP JZ INC MOV MOV JMP MOV CMP JZ DEC MOV MOV JMP MOV CALL LEACS:[SI+BX] Direction Speed_up Speed_Down Exec bClockwise,0 Clockwise bClockwise,0 buffer+7,1 bFirst,0 AntiClockwise1 StepControl,91H Direction1 AL,StepControl AL,2 StepControl,AL Direction1 bClockwise,1 buffer+7,0 bFirst,0 Clockwise1 StepControl,33H Direction1 AL,StepControl AL,2 StepControl,AL STAR2 AL,SpeedNo AL,11 Speed_up2 AL SpeedNo,AL buffer+5,AL STAR2 AL,SpeedNo AL,0 Speed_Down1 AL SpeedNo,AL buffer+5,AL STAR2 bFirst,0 TakeStepCount BX,StepDelayTab;转动方向 ;提高转速 ;降低转速;步进电机根据方向、转速、步数开始转动48 Exec1:TIMER0:TIMER0_2:TIMER0_3: TIMER0_4:TIMER0_1:MOV XLAT MOV CMP JNB MOV MOV MOV STI JMP PUSH PUSH DEC JNZ MOV CMP JZ DEC MOV MOV MOV MOV OUT CMP JNZ ROR JMP ROL MOV CMP JZ MOV DEC JNZ add popf cli pushf sub nop MOV MOV OUT POPAL,SpeedNo StepDelay,AL AL,50 Exec1 AL,50 StartStepDelay,AL StartStepDelay1,AL STAR2 AX DX StartStepDelay TIMER0_1 AL,StartStepDelay1 AL,StepDelay TIMER0_2 AL StartStepDelay1,AL StartStepDelay,AL AL,StepControl DX,IO8255_PC DX,AL bClockwise,0 TIMER0_3 AL,1 TIMER0_4 AL,1 StepControl,AL StepCount,0 TIMER0_1 bNeedDisplay,1 StepCount TIMER0_1 sp,8 ;小写部分不允许使用单步、 单步进入命令sp,8 DX,IO8259_0 AL,20H DX,AL DX49 Step_SUB_1Step_SUB_1_1:Step_SUB_1_2: Step_SUB_1 TakeStepCountTakeStepCount Init8255Init8255 Init8253POP IRET PROC MOV LEA DEC CMP JNZ MOV INC LOOP RET ENDP PROC MOV MOV MUL ADD MUL ADD ADC MUL ADD ADC MOV RET ENDP PROC MOV MOV OUT DEC MOV OUT RET ENDP PROC MOV MOV OUT MOV MOV OUT MOVAX NEAR CX,4 BX,buffer BYTE PTR [BX] BYTE PTR [BX],0FFH Step_SUB_1_2 BYTE PTR [BX],9 BX Step_SUB_1_1NEAR AL,buffer+3 BX,10 BL AL,buffer+2 BL AL,buffer+1 AH,0 BX AL,buffer AH,0 StepCount,AX;转动步数送入StepCountNEAR DX,IO8255_Con AL,80H DX,AL DX AL,0FFH DX,AL;8255 PC输出;0FFH-&8255 PCNEAR DX,Con_8253 AL,35H DX,AL DX,T0_8253 AL,10H DX,AL AL,02H;计数器T0设置在模式2状态,BCD码计数50 Init8253 Init8259Init8259 WriIntverWriIntverOUT RET ENDP PROC MOV MOV OUT MOV MOV OUT MOV OUT MOV OUT RET ENDP PROC PUSH MOV MOV MOV LEA STOSW MOV STOSW POP RET ENDP ENDDX,AL;CLK0/210NEAR DX,IO8259_0 AL,13H DX,AL DX,IO8259_1 AL,08H DX,AL AL,09H DX,AL AL,0FEH DX,ALNEAR ES AX,0 ES,AX DI,20H AX,TIMER0 AX,CS ESSTART九、实验扩展及思考 1、怎样改变电机的转速? 2、通过实验找出电机转速的上限,如何能进一步提高最大转速? 3、怎样能使电机反转?51 附录一模型 TINY(微)汇编语言的存储模型说明所有数据及代码装入同一个代码段内,此模型的程序 按.COM 文件格式编写,要求程序从地址 0100H 处开始 这种模型包含两个段:一个 64KB 的数据段和一个 64KB 的 代码段 这种模型包含一个 64KB 的数据段和任意多个代码段,以供 大程序使用 包含一个代码段和任意多个数据段 LARGE 模型允许多个代码段和数据段 允许数据段大于 64KB,其他与 LARGE 模型相同 仅限于 MASM6.X 版本。FLAT 模型使用一个 512KB 的段来 存储所有的代码和数据,应注意的是该模型主要用于 Windows NT 中SMALL(小) MEDIUM(中) COMPACT(压缩) LARGE(大) HUGE(巨型) FLAT(平展)52 附录二;8279 键盘显示器接口芯片 2.输入时钟 2MHZ ;1.查询控制方式8279 键值显示程序3.8279 内部 20 分频(100KHZ);4.扫描计数器采用编码工作方式(通过外部 138 译码) ;5.显示按键值,第九次按键,清除显示 ; 8279 查询工作方式 .MODEL TINY CMD_8279 DATA_8279 EQU EQU 0BF01H 0BF00H ;8279 命令字、状态字地址 ;8279 读写数据口的地址PUBLIC GetKey, GetKeyA, GetKeyB, GetBCDKey, DisPlay8, SCAN_KEY PUBLIC F1 .STACK 100 .DATA F1 LED_TAB: DB ?DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH DB 0FFH,0BFH .CODE GetKey PROC CMP CX,0 JZ GetKey5 CMP CX,9 JNB GetKey5 PUSH PUSH PUSH PUSHF MOV AX,CX CLC RCR AX,1 DEC AX ADD DI,AX STD MOV AH,0 CMP F1,053NEARAX BX DX JZ GetKey1 CALL GetKey1: KeyScan AXPUSHMOV AL,8 CLC SUB AL,CL CALL POP AX CMP F1,0 JNZ GetKey3 GetKey2: GetKey3: CALL NOT AH AX KeyS扫描 INIT79 初始化PUSHCMP AH,0 JZ GetKey4 ROR AL,4 MOV ES:[DI],AL JMP GetKey6 GetKey4: OR AL,ES:[DI]STOSB GetKey6: POP AXLEA BX,LED_TAB XLAT CALL LOOP POPF POP DX POP BX POP AX GetKey5: GetKey RET ENDP WRITE_DATA ;显示输入值 GetKey2;键值在 AL 中 KeyScan PROC CALL NEARSCAN_KEYJNB KeyScan54 RET KeyScan ENDP;CY =1,有键,键值在 AL 中;CY=0,没有按键 GetKeyA PROC CALL RET GetKeyA ENDP NEARSCAN_KEY;键值在 AL 中 GetKeyB PROC CALL NEARSCAN_KEYJNB GetKeyB RET GetKeyB ENDP;BCD 码 ;F1 是否需要先清除显示 GetBCDKey PROC NEARCMP CX,0 JZ GetBCDKey5 CMP CX,9 JNB GetBCDKey5 PUSH PUSH PUSH PUSHF MOV AX,CX CLC RCR AX,1 DEC AX ADD DI,AX STD MOV AH,0 CMP F1,0 JZ GetBCDKey1 CALL KeyScan AX AX BX DXGetBCDKey1: PUSH MOV AL,855 CLC SUB AL,CL CALL POP AX CMP F1,0 JNZ GetBCDKey3 GetBCDKey2: CALL KeyS扫描 INIT79 初始化GetBCDKey3: CMP AL,10 JNB GetBCDKey2 NOT AH PUSH AXCMP AH,0 JZ GetBCDKey4 ROR AL,4 MOV ES:[DI],AL JMP GetBCDKey6 GetBCDKey4: OR AL,ES:[DI] STOSB GetBCDKey6: POP AX LEA BX,LED_TAB XLAT CALL LOOP POPF POP DX POP BX POP AX GetBCDKey5: RET GetBCDKey ENDP WRITE_DATA ;显示输入值 GetBCDKey2;显示以 SI 开始的 8 个数字(0~F) DisPlay8 PROC AX BX CX DX NEARPUSH PUSH PUSH PUSH56 MOV CX,8 LEA BX,LED_TAB;计数用DisPlay81: MOV AL,[SI] ;不用显示的位调整 AND AL,7FH CMP AL,11H JZ DisPlay82 Display84: CMP AL,16 JB DisPlay82 MOV AL,10H DisPlay82: XLAT XCHG TEST AL,[SI] AL,80H ;显示段码中 10H 位对应的是暗码 ;负号JZ Display83 XCHG AL,[SI]AND AL,7FH MOV [SI],AL Display83: INC SI LOOP DisPlay81MOV AL,0 CALL INIT8279_1MOV CX,8 Display85: DEC SI MOV AL,[SI] CALL LOOP POP DX POP CX POP BX POP AX RET DisPlay8 ;8279 初始化 INIT8279 PROC MOV MOV NEAR DX,CMD_8279 ;CMD_8279 为写命令地址、读状地址 AL,34H ;可编程时钟设置,设置分频系数(20 分频) ENDP WRITE_DATA Display8557 OUT MOV OUTDX,AL AL,0 DX,AL ;从第一个数码管开始移位显示 ;8*8 字符显示,左边输入,外部译码键扫描方式MOV AL,90H OUT DX,AL RET INIT8279 INIT8279_1 PUSH MOV MOV OUT MOV OUT CALL ENDP PROC AXNEARDX,CMD_8279 ;CMD_8279 为写命令地址、读状地址 AL,34H DX,AL AL,0 DX,AL CLEAR ;清显示 ;8*8 字符显示,左边输入,外部译码键扫描方式 ;可编程时钟设置,设置分频系数(20 分频)POP AX OR AL,90H OUT DX,AL RET INIT8279_1 CLEAR PROC MOV MOV OUT WAIT1: IN TEST JNZ RET CLEAR SCAN_KEY MOV IN READ_FIFO: AND AL,7 JZ READ: MOV NO_KEY AL,40H ;是否有键按下 ENDP PROC NEAR ENDP NEAR DX,CMD_8279 AL,0DEH DX,AL AL,DX AL,80H WAIT1 ; 显示 RAM 清除完毕吗? ; 清除命令DX,CMD_8279 AL,DX ;读状态58 OUT MOV INDX,AL;读 FIFO RAMDX,DATA_8279 AL,DXAND AL,3FH STC SCAN_KEY1: RET NO_KEY: CLC JMP SCAN_KEY KEY_NUM PROC AND RET KEY_NUM WRITE_DATA MOV OUT RET WRITE_DATA END ENDP ENDP PROC NEAR ;无键按下,清 CY SCAN_KEY1 ENDP NEAR AL,3FH ;有键DX,DATA_8279 DX,AL59 附录三8279 命令功能一览表60 61
微机原理与接口技术试题库(含答案)汇总 - 一、问答题 1、下列字符表示成相应的 ASCII 码是多少? (1)换行 0AH (2)字母“Q” 51H (3)空格 20H 2、下列...微机原理与接口技术课后答案 黄玉清版_工学_高等教育_教育专区。课后答案,黄玉清版 习题一息表示; 微机系统的结构特点。 1.1 简述微型计算机的组成。 概 述 主要...更多学习资料请查看官网:http://www.xdhxjy.com【现代华西教育中心】 《微机原理与接口技术》第一次作业答 案一、单项选择题。本大题共 16 个小题,每小题 ...利用上题的子程序,对 80000H 开始的 256 个单元的数据加上偶校验,试编 26 微机原理与接口技术(第二版) 清华大学出版社 程序。 CODE SEGMENT ASSUME CS: ...微机原理与接口技术考试试题及答案_计算机软件及应用_IT/计算机_专业资料。微机原理与接口技术考试试题及答案
学年度第一学期 《微机原理与接口技术》课程...微机原理与接口技术考试试题及答案 - 《微机原理与接口技术》课程期末考试试卷 (A 卷,考试) 一、单项选择(在备选答案中选出一个正确答案,并将其号码填在 题干...微机原理与接口技术知识点总结_计算机硬件及网络_IT/计算机_专业资料。微机原理与接口技术 微机原理与接口技术第一章 概述 二、计算机中的码制(重点?)P5 1、对于...微机原理与接口技术(习题答案)_计算机硬件及网络_IT/计算机_专业资料。第 1 章 微机运算基础习题和思考题 1. 请完成以下计算: 174.66D=(01)B=(...文件名:微机原理与接口技术习题 第 5 页共 61 页 错误!未指定书签。与接口技术 全加器电路的要求是:有 3 个输入端,以输入 Ai,Bi 和 Ci,有两个输出端,...微机原理与接口技术知识点总结 - 微机原理与接口技术 《微机原理与接口技术》复习参考资料 第一章 一、计算机中的数制 1、无符号数的表示方法: (1)十进制计数的...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多关于 wifi是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信