单片机原理与接口技术实验指导书.doc_第1页
单片机原理与接口技术实验指导书.doc_第2页
免费预览已结束,剩余149页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 指 导 书单片机原理与接口技术编者: 陈青华中科技大学武昌分校信息系2011年3月目 录第一章 系统概述4第二章 实验指导14一、实验指导说明14二、软件实验部分14实验一清零程序15实验二 拆字程序16实验三拼字程序17实验四 数据区传送子程序17实验五 数据排序实验18实验六 查找相同数个数19实验七 无符号双字节快速乘法子程序20实验七无符号双字节快速乘法子程序21实验八多分支程序22实验九 脉冲计数(定时/计数器实验)24实验十 电脑时钟(定时器、中断综合实验)28三、硬件实验部分33实验一p1输出口亮灯实验34实验二 p1口输出转向灯实验36实验三 用p3口输入,用p1口输出实验40实验四 工业顺序控制实验43实验五8255 a,b,c口输出方波实验46实验六8255pa开关输入,pb口输出显示实验47实验七8255模拟交通信号灯控制过程实验49实验八简单i/o接口扩展实验52实验九a/d转换实验54实验十d/a转换实验57实验十一用8279扩展键盘、显示接口实验61*实验十二用8255连接标准打印机接口实验65*实验十三用微型打印机打印字符/ 曲线/ 汉字实验67*实验十四 ds12887日历时钟芯片应用实验71实验十五 ic存储卡读写实验83*实验十六 isd1420语音芯片录音实验92*实验十七 isd1420语音芯片放音实验96实验十八单片机外接继电器控制实验99实验十九单片机控制步进电机实验101实验二十单片机扩展8253产生方波实验109实验二十一 单片机控制微型直流电机调速实验111实验二十二 单片机控制16*16点阵led显示实验114实验二十三 单片机连接128*64点阵lcd液晶显示器实验119实验二十四 单片机扩展8250串行接口实验128实验二十五 单片机扩展8251串口与pc机通讯实验135实验二十六 单片机用rs232/rs485串行发送数据实验(双机通讯)142实验二十七 单片机用rs232/rs485串行接收数据实验(双机通讯)149实验二十八 单片机接温度压力传感器实验151实验项目(一)软件实验(1)清零程序;(2)拆字程序;(3)拼字程序;(4)数据区传送子程序;(5)数据排序实验;(6)查找相同数据个数;(7)无符号双字节快速乘法子程序;(8)多分支程序;(9)脉冲计数实验;(10)电脑时钟实验。(二)硬件实验(1)p1口输出亮灯实验;(2)p1口输出转弯灯实验;(3)用p3口输入,用p1口输出实验;(4)工业顺序控制实验;(5)8255 a,b,c口输出方波实验;(6)8255pa开关输入,pb口输出显示实验;(7)8255模拟交通信号灯控制过程实验;(8)简单i/o接口扩展实验;(9)a/d转换实验;(10)d/a转换实验;(11)用8279扩展键盘、显示接口实验;*(12)用8255连接标准打印机接口实验;*(13)用微型打印机打印字符/ 曲线/ 汉字实验;*(14)ds12887日历时钟芯片应用实验;(15)ic存储卡读写实验;*(16)isd1420语音芯片录音实验;*(17)isd1420语音芯片放音实验;(18)单片机外接继电器控制实验;(19)单片机控制步进电机实验;(20)单片机扩展8253产生方波实验;(21)单片机控制微型直流电机调速实验;(22)单片机控制16*16点阵led显示实验;(23)单片机连接128*64点阵lcd液晶显示器实验;(24)单片机扩展8250串行接口实验;(25)单片机扩展8251串口与pc机通讯实验;(26)单片机用rs232/rs485串行发送数据实验(双机通讯);(27)单片机用rs232/rs485串行接收数据实验(双机通讯);(28)单片机接温度压力传感器实验;注:实验项目前打*星号为选配扩展卡实验。dice-3000型51/96通用单片机仿真器相关介绍详见dice-3000型使用说明或本实验指导书的相关介绍。第一章 系统概述一:恒科 超想-3000仿真机的使用方法:在桌面点击“hk-51系列仿真开发系统”出现如下画面:1、“新建”/“打开”一个 asm 汇编源程序2、“编译/汇编!”asm 文件,生成包括hex 16进制文件在内的系列文档。 如果编译没有通过,则根据提示修改程序的语法错误,直到编译成功。3、插入仿真头到应用板上,通电后用“单步”或“连续”运行,观察cpu内部ram,各个特殊功能寄存器内容的变化,以及应用板上设计的显示等变化。如果达不到设计效果和要求,则需要重新考虑修改程序上的逻辑错误,直到完善为止。要想了解更多超想-3000仿真机的使用方法,请查阅 单片机原理及其接口技术实验朱定华 编著 教材 附录a(超想-3000仿真机使用说明) 图1-1 hk-51系列仿真开发系统仿真软件窗口图示2 源文件的建立和打开 建立新文件 执行“文件/新文件”菜单命令或单击工具栏按钮即出现一个源文件编辑窗口,您可以在 编辑窗口中输入源程序代码,完成后用“文件/存储”命令将文件存到磁盘上。如果源文件是 新建立的 super image-3000 win98则会弹出文件列表框要求您输入要保存的文件名,再单击 “保存”即可。 打开一个文件 执行“文件/打开文件”菜单命令或单击工具栏按钮即出现打开文件列表框,您可用鼠标 直接点击显示在列表框内文件名或者也可在输入框内直接输入,再单击“打开”按钮,屏幕 即出现一个文件编辑窗口,显示您选取的文件内容。 编译单个源程序文件 当您已经建立或打开了一个源程序文件,您就可以使用“编译/文件编译、连接、装载” 命令或单击工具栏按钮即可对当前源文件进行编译、连接,如果源文件存在错误,即弹出“编 译连接产生错误”对话框,单击“ok”,编译错误信息便出现在“编译连接信息”窗口,双击 错误信息行,光标便自动跳转到源文件编辑窗口的出错行,以便您进行修改。如果源程序文 件没有错误,即弹出“编译、连接成功”对话框。 编译、连接成功62 源文件的装载 在源文件编辑窗口或已打开工程文件后即可用“编译/编译、连接、装载”菜单命令或 单击工具栏按钮即可对当前源文件或当前工程组进行编译、连接,并装载到rom。 当源文件通过编译并生成目标代码时,您可直接将其目标代码(*omf *hex *bin *obj *o)装入rom,方法是执行“编译/装载”菜单命令或单击工具栏按 钮,再选择要装载的代码文件。例如demoasm已通过编译并生成代码,您可直接装载 demoomf文件。如果装载的文件不含调试信息,调试窗口则以反汇编方式显示。 您也可用此方法装载从编程器上读取的代码文件。 注意:当源文件经过修改,必须使用重新编译装载。 无论您使用何种方法装载,系统均提示编译、连接成功。 单击“ok”确认后,即打开调试窗口。使用调试窗口调试源程序 您可以在程序调试窗口中对用户程序设置或清除断点、开始或中止仿真、进行单步操作 以及观察变量等。 菜单及其命令 菜 单用 途 文件菜单建立、打开、保存源文件,关闭当前窗口,输出列表表文件,退出ide 编辑菜单对活动窗口有关内容进行编辑 编译菜单源程序编译、连接、装载,浏览模块,设置编译选项 调试菜单单步、断点、连续运行方式,增加变量,程序复位,程序暂停,设置pc。 工程菜单建立、打开、编辑、关闭工程,打开工程文件列表。 设置菜单设置仿真模式及通讯端口。 视图菜单查看调试、寄存器、存储器、变量、编译信息窗口。 窗口菜单层叠、平铺及关闭所有窗口,选择已打开的窗口。 帮助菜单显示关于super image-3000的版本信息。 菜单及其用途列表 (1) 文件菜单 建立一个新的源文件。 弹出对话框,选取列表中的文件或在输入框输入文件名,单击“打开”,文件编辑窗 口即显示该文件内容。 关闭 关闭当前的活动窗口。 将当前编辑窗口中的文件存到磁盘上。 另存为 将当前编辑窗口中的文件换成另一个文件名再存盘。 输出列表文件 将当前rom地址空间的代码保存为lst列表文件。 弹出文件列表对话框,输入要保存的文件名并单击“保存”。 执行该命令可退出super image-3000 win98。 (2) 编辑菜单 注意:编辑菜单为super image-3000 win98的动态菜单,当激活不同的窗口时该菜单命 令也随之变化;关闭所有窗口后该菜单也自动关闭。现以源文件编辑窗口为例向您说明该菜 单(假设已激活源文件编辑窗口)。该菜单的其它命令将在以后的章节为您详细说明。我们特 别建议您使用ide快捷菜单。 使用该命令能恢复文件编辑中最后一次所做的修改。 清除编辑窗口中选定的文件,并放置在剪贴板上。只有在选定文本后,这一命令才有效。 放置在剪帖板上的文件始终保留在那里,直到新内容替换掉它们。 使用该命令可将选定的文本复制到剪贴板上。只有在选定文本后,这一命令才有效。 复制到剪贴板上的文本将替换掉先前的内容 。 使用该命令可以将剪贴板内容插入到当前编辑窗口的光标位置。如果在编辑窗口中已选 定内容。使用该命令可用剪贴板上的内容替换掉选定的内容。 如果剪贴板上无内容,这一命令将是无效的。 使用该命令可以在当前编辑窗口中查找文本字符串。 该命令包含两参数,您可选择使用: whole word 整字匹配 match case 区分大小写 查找下一个 ctrl+l 使用该命令可以继续查找在“查找”命令中指定的文本。 使用该命令可以跳转到编辑窗口中指定的行。 字体 对编辑窗口中的文本进行字体、字号、颜色等设置。 刷新 重新显示当前编辑窗口。 (3) 编译菜单 编译、连接 对当前编辑窗口源文件或当前工程组进行编译、连接,生成目标代码。 编译、连接、装载 ctrl+f9 对当前编辑窗口源文件或当前工程组进行编译、连接,并将生成的目标代码装入rom。 装载 f3 将磁盘上存在的目标代码直接装入rom。 浏览模块 ctrl+f3 该命令可在调试窗口中浏览源文件内容,通常适用于浏览工程组中的源文件。 编译选项 使用该命令您可设置源文件编译的各选项。 (4) 调试菜单 连续运行 f9 执行该命令便开始连续运行用户程序,当遇到断点或按下esc暂停键时停止。 运行到指定地址 f5 以连续方式运行程序,运行到指定的地址停下。如果在源文件方式下调试,可以选择符 号地址。 运行到光标处 f4 以连续方式运行程序,运行到光标所在行停下。如果光标移在非执行语句行,将不响应此命 令。 单步运行 f7 逐步运行用户程序,遇到调用子程序,则跟踪进入子程序运行。 宏单步运行 f8 逐步运行用户程序,遇到调用子程序,一步执行完整个过程而不进入子程序运行。 自动单步 以连续单步方式运行用户程序。 自动宏单步 以连续宏单步方式运行用户程序。 增加变量 ctrl+f5 将程序中想要观察的变量增加到变量窗口,在程序运行时您要随时观察变量的内容。 设置或清除断点 ctrl+f8 当光标移到调试窗口可执行语句行时,可以用该命令设置断点,重复该命令也可清除断 点。 技巧:将鼠标移到调试窗口的可执行语句行左侧,单击鼠标即可设置断点。重复此操作 也可清除断点。 浏览断点 执行此命令即弹出对话框,您可通过对话框查看断点个数、断点所在的模块、断点地址、 断点在源文件中的行号,您也可用此命令增加或清除断点。 清除所有断点 该命令可清除各个调试模块中所有设置的断点。 复位 ctrl+f2 该命令可对(目标系统)cpu复位,同时将pc指针回复到装载文件的初始值(如0000)。 重新开始运行 将当前pc置初始值(如0000)后再以连续方式运行。 暂停 esc 该命令可停止当前程序的运行(适用于连续运行、自动单步/自动宏单步运行方式),返回 待令状态。 夭折处理 强制停下当前正在运行的程序。一般来讲,“暂停”命令即可停止,如果正在运行和程序 无法用“暂停”命令停止,可使用此命令。 设置pc 将当前pc指针指向您输入的地址。如果在源文件方式下调试,可以选择符号地址。 pc=当前地址 将pc指针指向当前光标所在的可执行语句行。 (5) 工程菜单 新建 打开文件列表框,创建新工程文件。 打开 弹出文件列表框,打开已存在的工程文件。 编辑 打开对话框,增加或删除工程中的文件。 关闭 关闭当前使用的工程文件。 文件列表 打开工程文件列表对话框,可指定编辑工程中的源文件。 (6) 设置菜单 仿真模式 打开对话框,可对仿真cpu、ram、rom读写控制等选项进行设置。 通讯端口选择 选择与仿真器实际连接的通讯端口。 重新连接 通讯失败、检查硬件连接或重新选择通讯端口后,该命令可重新进行通讯测试。 (7) 视图菜单 调试 打开程序调试窗口。如果未装载程序,可看到随机代码。 寄存器 打开寄存器窗口。您可对该窗口进行增加、删除操作。 存储空间1/2 ide允许同时打开两窗口,可在该窗口切换查看程序存储器、数据存储器、cpu内部存 储器、特殊寄存器等内容。 变量 打开变量窗口,可随时观察变量的变化。 编译连接信息 打开编译连接信息窗口,可查看源文件编译是否有错。 (8)窗口菜单 层叠 以重叠方式排列已打开的窗口,但保持每窗口的标题栏都可见。 水平平铺 把已打开的窗口水平排列,使已打开的窗口都可见。 垂直平铺 把已打开的窗口垂直排列,使已打开的窗口都可见。 关闭所有窗口 关闭所有已打开的窗口。 选择“窗口”菜单下已打开窗口的名称及编号可以激活该窗口。 (9) 帮助菜单 关于 显示关于super image-3000 win98集成开发环境的版本信息,及win98环境与dos环境 下编辑器伪指令使用上的区别。二、top系列编程器使用的简要说明top2005型编程器具有体积小巧,功耗低 ,可靠性高的特点,是专为开发单片机和烧写各类存储器而设计的通用机型。top2005采用usb通用串口与pc机连接通信,传输速率高,抗干扰性能好,可靠性能极高,而且无需外接电源,特别适合电池供电的笔记本电脑外出使用。其特点:1可支持2565v的器件;2使用usb接口电源,不必外接电源;3通过usb通用串口与pc机连接,传送速率12mh/s;4即适合电池供电的笔记本电脑使用,也适合台式机使用;5完善的过电流保护,有效地保护编程器和器件不受损害;6usb负载能力检测(0至10级);7全插脚检查,可以检查出任意一个插脚的的接触状态;840针进口万能锁紧插座;9在winows98se/me/200o/xp下运行;10塑料机壳,体积小,重量轻,功耗低;11可自动探测厂家和型号;12单片机定时,编程速度与计算机无关;一:芯片操作11常规步骤 连接好topwin,电源指示灯 (红色)亮; 运行topwin,exe;工作指示灯 (绿色)亮;在主菜单中选择文件,装载数据到文件缓冲区;如下图所示:找到文件夹,选择hex类型(asm文件编译后生成的16进制文件)文件。二: 将芯片插在插座上并锁紧,准各对器件进行读写操作。操作莱单:选择型号,对应的工具按钮为型号,执行后弹出选择厂家/型号窗口:芯片型号的选择过程按照:类型一)生产厂家一)型号的顺序确定芯片型号。如下图所示: 在首行查找右边键入关键字,如51,这一步可以省略。 在类别框中选择芯片类型,如电擦除存储器; 在制造厂家列表框中选择生产厂家,例如选择 atmel; 在器件型号列表框中选择芯片 型号。例如选择at89c52。如果选择的是存储器,可以按探测厂家代码取得2字节代码,第一字节代表生产厂家,第二字节代表型号。 然后,按确认进入读写操作。 2读写器件:对应的工具按钮为读写,由于芯片的类型不同,相应的读写窗口也略有不同。分别叙述如下: 1读写并口存储器 以89c52为例,在选择厂家/型号窗口中选择 类型 电擦除存储器 选择厂家 atmel 器见型号 at89c52 按确认键,弹出单片机读写窗口如下:写器件: 写器件操作是把缓冲区内的数据烧写到芯片申。文件开始地址和器件开始地址默认为0,隐含烧写该器件的全部单元,数据长度最大可达六位十六进制 (hex)数字,最大地址空间8m。用户也可以根拥需要对开始地址进行修改,达到部分烧写的目的。 写器件过程由进展条直观显示,烧写过程中,程序自动进行校验,如碰到不能写入的单元时,将退出写操作,并显示出错地址、缓冲区数据和芯片数据内容。特别注意: 器件在写之前必须特别要注意芯片型号不能搞错,由于芯片类型不同,使用的编程电压可能不一样,否则会损坏器件或设备。确认所有设置正确无误后,将待编程的器件插到器件插座上,拉平锁紧扳手。读器件: 将芯片中的全部数据读入缓冲区,分页显示到数据窗口,读出过程由进展条直观显示。用户可对读出的数据进行修改,存盘(文件格式必须与芯片内的固化文件格式一致)。擦除: 擦除芯片存储器的全部内容,擦除后全为ff。只有电擦除器件可以用这个命令,eprom需用紫外线擦除。检查空片: 器件在写入之前,要检查是否空片。空片的每-个字节都是ff(十六进制)。检查过程由进展条直观显示,当发现非空单元,将退出检空操作,并显示非空单元的地址和数据。 该操作检查eprom的所有地址空间,与设置的器件开始地址和数据长度无关。eprom可用紫外灯照射后冉枪查,仍通不过则器件己损坏。校对数据: 该操作把缓冲区内的数拥与芯片中的数据进行比较,校对由进展条直观显示,当遇到校对出错的单元时,将退出校对操作,并显示出错单元的地址、缓冲区数据私芯片数据。 为了确保写入到器件的数据正确,写器件操作包含了校对,无须重复操作。加保护: 很多eeprom和flashrom具有保护功能。加保护后的器件只能读,不能写,必须经过解保护才能冉写。该操作-般应用在写操作完成后使用。解保护: 与加保护相反。读厂家: 取得z字节代码,第一字节代表生产厂家,第二字节代表型号。写速度:不同厂家的产品编程速度可能不一样,既使同一厂家的产品,其型号不同编程速度也可能不一样。一般可设为标准速度。 自动编程操作 该操作根据组合操作框内的选择自动完成对器件的编程操作,可提高芯片的编程效率。第二章 实验指导一、实验指导说明本实验指导是为适应各大、中专院校开设单片机原理与应用方面的课程需做大量软、硬件实验的需要而编写的.完成本实验指导中的实验,可使学生基本掌握mcs5l单片机的结构原理、接口技术、程序设计技巧。手册中详细叙述了各实验的目的、内容,列出了接线图、程序结构框图和清单。免除了主讲教师和实验辅导老师为设计、准备调试实验线路和实验程序所需的工作量,节约了宝贵的时间。1. 所有硬件实验程序已固化在程序存储器eeprom中,选择up模式(sw1),我们可以脱机实验,从小键盘输入相应实验序号,再按fv/ex即可运行该实验程序;也可采用联机实验,将实验系统与pc机通过dj-2008仿真器相连,联机调试所有实验程序。2. 实验接线图上的粗实线表示用户在实验时要用导线连接起来。3. 所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据该校(院)的教学要求,选择相应实验。4. 对同一问题的解决办法往往不是唯一的,欢迎用户在使用本书过程中提出更为优秀的实验方案,指出错误和不足,希望用户反馈给我们,以便及时修改。二、软件实验部分软件实验部分是为了配合教材中单片机汇编语言教学而设计的相关实践操作内容,软件部分的实验主要以对存储器中的数据进行操作为主,并不涉及过多的显示处理、接口处理,操作时以输入汇编程序,运行并检验操作结果为主要实验过程,软件实验部分既可以在实验箱中操作,也可以在无实验箱的情况下用单片机模拟调试程序完成,其主要目的是掌握51单片机的指令系统和提高汇编编程的能力。读者也可以自行设计相关的程序,并在实验条件下进行调试和验证以拓展编程能力。软件实验部分本书提供了十个验证实验程序以供实验时选择使用。实验一清零程序1,实验目的:掌握汇编语言设计和调试方法,熟悉键盘操作。2,实验内容:把2000h20ffh的内容清零。3,实验程序框图: 4,实验步骤:用连续或单步方式运行程序,检查200020ff中执行程序前后的内容变化。5,思 考:假使把2000h2100h中的内容改成ff,,如何修改程序。6,程序清单: org 0000h ljmp se01 org 0640hse01: mov r0,#00h mov dptr,#2000h ;(0000h)送dptrloo1: clr a movx dptr,a ;0送(dptr) inc dptr ;dptr+1 inc r0 ;字节数(寄存器内容)加1 cjne r0,#00h,loo1 ;不到ff个字节再返回清零loop: sjmp loop end实验二 拆字程序l,实验目的: 掌握汇编语言设计和调试方法。2,实验内容:把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。3,实验程序框图:4,实验步骤:用连续或单步方式运行程序,检查2000h2002h中内容变化情况。5,思 考:如何用断点方式调试本程序。6,程序清单:;把指定字节的高低位拆开分别存放,多用于显示子程序org 0000h ljmp se02 org 0660hse02: mov dptr,#2000h movx a,dptr mov b,a ;(2000)ab swap a ;交换 anl a,#0fh ;屏蔽高位 inc dptr movx dptr,a ;送2001h inc dptr mov a,b anl a,#0fh ;(2000)内容屏蔽高位 movx dptr,a ;送2002hloop: sjmp loop end实验三拼字程序1,实验目的:进一步掌握汇编语言设计和调试方法。.2,实验内容:把2000h.2001h的低位分别送入2002h高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。3,实验程序框图:4,实验步骤:单步或用断点方式运行程序,检查2002h内容变化情况。5, 程序清单: org 0000hljmp start org 0680hstart: mov dptr,#2000h movx a,dptr anl a,#0fh ;(2000h)内容屏蔽高位 swap a ;交换mov b,a ;保存 inc dptrmovx a,dptr ;(2000h)内容送a anl a,#0fh ;屏蔽高位 orl a,b ;或 inc dptrmovx dptr,a ;送2002h sjmp $ end实验四 数据区传送子程序1,实验目的:掌握ram中的数据操作。2,实验内容:把r2.r3源ram区首址内的r6.r7字节数据传送到r4.r5目的ram区。3,实验程序框图:4,实验步骤:在r2.r3中输入源首址(例如0000h),r4.r5中输入目的地址(例如2000h),r6.r7中输入字节数(例如lfffh),运行程序,检查0000hlfffh中内容是否和2000h3fffh中内容完全一致。5,程序清单: org 0000h ljmp se22 org 07b0hse22:mov dpl,r3 mov dph,r2;建立源程序首址 movx a,dptr;取数 mov dpl,r5 mov dph,r4;目的地首址 movx dptr,a ;传送 cjne r3,#0ffh,lo42 inc r2lo42:inc r3 ;源地址加1 cjne r5,#0ffh,lo43 inc r4lo43:inc r5 ;目的地址加1 cjne r7,#00h,lo44 cjne r6,#00h,lo45;字节数减1loop:sjmp loop noplo44:dec r7 sjmp se22lo45:dec r7 dec r6 sjmp se22;未完继续 end实验五 数据排序实验1,实验目的:熟悉51指令系统,掌握程序设计方法。2,实验内容:编写并调试一个排序子程序,其功能为用冒泡法将内存ram中几个单字节无符号的正整数,按从小到大的次序重新排列。3,程序框图:4,实验步骤:将ram 50h5ah 中放入不等的数据,用断点方法运行本实验程序后检查50h5a中的内容是否按从小到大的次序排列。5,思 考:修改程序把50h5ah中内容从大到小排列。6,程序清单: org 0000h ljmp que org 09b0hque:mov r3,#50hque1:mov a,r3 ;指针送r0 mov r0,a mov r7, #0ah ;长度送r7 clr 00h ;清标志位 mov a, r0ql2 :inc r0 mov r2,a clr c mov 22h,r0 cjne a,22h,ql3 ;相等吗? setb cql3:mov a,r2 jc ql1 ;大于交换位置 setb 00h xch a,r0 dec r0 xch a,r0 inc r0 ;大于交换位置ql1:mov a,r0 djnz r7,ql2 jb 00h,que1 ;一次循环中有交换继续loop:sjmp loop ;无交换退出 end实验六 查找相同数个数1,实验目的:熟悉汇编语言编程。2,实验内容:在2000h200fh的n个单元中填入零,运行本程序后检查2100h中是否为n。3,实验程序框图:4,实验步骤:在2000h200fh的几个单元中填入零,运行本程序后检查2100h中是否是几个单元数。5,思考:修改程序,查找其它内容。6,程序清单: org 0000h ljmp l5800 org 0aa0hl5800: mov r0,#10h ;查找16个字节 mov r1,#00h mov dptr,#2000hl5811: movx a,dptr cjne a,#00h,l5816 ;取出内容与00h相等吗? inc r1 ;取出个数加1l5816: inc dptr djnz r0,l5811 ;未完继续 mov dptr,#2100h mov a,r1 movx dptr,a ;相同数的个数送2100hl581e: sjmp l581e end实验七 无符号双字节快速乘法子程序1,实验目的:掌握mcs-51汇编语言程序设计方法。2,预备知识:本程序利用单字节的乘法指令,根据下面的公式进行乘法运算的。(r2r3)*(r6r7)(r2)* +(r3)*(r6)* +r7)(r2)*(r6)* +(r2)*(r7)+(r3)*(r6)* +(r3)*(r7)3,实验内容:将(r2r3)和(r6r7)中双字节无符号整数相乘,积送r4 r5 r6 r7中。4,实验程序框图:5,实验步骤:在r2r3和r6r7中输入无符号整数,断点或单步运行本实验程序后检查r4 r5 r6 r7中内容。6,程序清单: org 0000h ljmp qkul org 0970hqkul: mov a,r3 mov b,r7 mul ab ;r3*r7 xch a,r7 ;r7=(r3*r7)低字节 mov r5,b ;r5=(r3*r7)高字节 mov b,r2 mul ab ;r2*r7 add a,r5 mov r4,a clr a addc a,b mov r5,a ;r5=(r2*r7)高字节 mov a,r6 mov b,r3 mul ab ;r3*r6 add a,r4 xch a,r6 xch a,b addc a,r5 mov r5,a mov psw.5,c ;存cy mov a,r2 mul ab ;r2*r6 add a,r5 mov r5,a clr a mov acc.0,c mov c,psw.5 ;加上次加法的进位 addc a,b mov r4,aloop: sjmp loop end实验七无符号双字节快速乘法子程序1,实验目的:掌握mcs-51汇编语言程序设计方法。2,预备知识:本程序利用单字节的乘法指令,根据下面的公式进行乘法运算的。(r2r3)*(r6r7)(r2)* +(r3)*(r6)* +r7)(r2)*(r6)* +(r2)*(r7)+(r3)*(r6)* +(r3)*(r7)3,实验内容:将(r2r3)和(r6r7)中双字节无符号整数相乘,积送r4 r5 r6 r7中。4,实验程序框图:5,实验步骤:在r2r3和r6r7中输入无符号整数,断点或单步运行本实验程序后检查r4 r5 r6 r7中内容。6,程序清单: org 0000h ljmp qkul org 0970hqkul: mov a,r3 mov b,r7 mul ab ;r3*r7 xch a,r7 ;r7=(r3*r7)低字节 mov r5,b ;r5=(r3*r7)高字节 mov b,r2 mul ab ;r2*r7 add a,r5 mov r4,a clr a addc a,b mov r5,a ;r5=(r2*r7)高字节 mov a,r6 mov b,r3 mul ab ;r3*r6 add a,r4 xch a,r6 xch a,b addc a,r5 mov r5,a mov psw.5,c ;存cy mov a,r2 mul ab ;r2*r6 add a,r5 mov r5,a clr a mov acc.0,c mov c,psw.5 ;加上次加法的进位 addc a,b mov r4,aloop: sjmp loop end实验八多分支程序1,实验目的:掌握汇编语言的编程。2,实验内容:编写程序,根据送入的数据转移运行。3,实验程序框图:4,实验步骤:在20h中分次送入00.01.02.03,每次运行程序后,观察数码管上数字循环情况。5,程序清单 org 0000h ljmp mems org 0a10hmems: mov a,#43h mov dptr,#0ff20h movx dptr,a mov a,20h mov dptr,#kkkk ;散转地址 rl a ;(20)*2 jmp a+dptr ;转到(20)*2+dptrkkkk: ajmp memsp0 ajmp memsp1 ajmp memsp2 sjmp memsp3memsp0: mov 20h,#0c0h ;0字循环 ljmp sox0memsp1: mov 20h,#0f9h ;1字循环 ljmp sox0memsp2: mov 20h,#0a4h ;2字循环 ljmp sox0memsp3: mov 20h,#0b0h ;3字循环 ljmp sox0 org 0da0hsox0: mov a,20h mov r0,#22h mov r1,#21h movx r0,a mov a,#01hsox1: cpl a movx r1,a cpl a mov r2,#20h lcall dely rl a ; 显示字程序 sjmp sox1dely: push 02hdel2: push 02hdel3: push 02hdel4: djnz r2,del4 pop 02h djnz r2,del3 pop 02h djnz r2,del2 pop 02h djnz r2,dely ret end实验九 脉冲计数(定时/计数器实验)1, 实验目的:熟悉单片机内部定时/计数器功能,掌握初始化编程方法。2, 实验内容:把定时器0外部输入的脉冲进行计数,并送显示器显示3, 实验程序框图:4, 实验接线图: 5, 实验步骤:用插针把8mhz插孔和t插孔连接,p3.4 依次接t0t7或单脉冲输出孔,执行程序,观察数码管上计数脉冲的速度及个数。6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论