浙江大学微机原理实验指导书
更新时间:2023-11-23 10:29:01 阅读量: 教育文库 文档下载
第一章 实验装置
一.伟福开发环境的使用
1.菜单
文件菜单选项
? 文件 | 打开文件 打开用户程序,进行编辑。如果文件已经在项目 中,
可以在项目窗口中双击相应文件名 打开文件。
? 文件 | 保存文件 保存用户程序。用户在修改程序后,如果进行编译,则在
编译前,系统会自动将修改过的文件存盘。
? 文件 | 新建文件 建立一个新的用户程序, 在存盘的时候,系统会要求用
户输入文件名。
? 文件 | 另存为 将用户程序存成另外一个文件, 原来的文件内容不会改变 ? 文件 | 重新打开 在重新打开的下拉菜单中有最近打开过的文件及项目,选
择相应的文件名或项目名就可以重新打开文件或项目。
? 文件 | 打开项目 打开一个用户项目,在项目中,用户可以设置仿真类型。
加入用户程序,进行编译,调试。系统中只允许打开一个项目,打开一个 项目或新建一个项目时,前一项目将自动关闭。
伟福开发环境的项目文件包括仿真器设置,模块文件,包含文件。仿真器设置包括仿真器类型,仿真头(POD)类型,CPU类型,显示格式和产生的目标文件类型可以用以下几种方法设置仿真器。
? 在项目窗口中双击第一行,将打开仿真器设置窗口,对仿真器进行设置。
? 按鼠标右键,在弹出菜单中选择[仿真器设置]。 ? 主菜单 | 仿真器 | 仿真器设置。 加入模块文件
? 按鼠标右键,在弹出菜单中选择[加入模块文件] ? 主菜单 | 项目 | 加入模块文件 加入包含文件
? 按鼠标右键,在弹出菜单中选择[加入包含文件] ? 主菜单 项目|加入包含文件
用户可以将以前单文件方式仿真转为WINDOWS下的项目方式进行仿真 ? 主菜单 文件|新建项目,在新建项目时,前一个项目自动关闭。 ? 加入模块文件时,选择要调试的程序文件名,将文件加入项目。 ? 将项目存盘。
? 编译,运行,调试项目。
? 文件 | 保存项目 将用户项目存盘。用户在编译项目时,自动存盘。 注意:
当用项目仿真时,系统要求项目文件,模块文件,包含文件在同一个目录(文件夹)下。
? 文件 | 新建项目 当用户开始新的任务时,应新建一个项目,在项目中,设
置所用仿真器类型,POD类型,加入用户程序(模块)。
? 文件 | 关闭项目 关闭当前项目,如果用户不想用项目方式调试单个程序,
就要先关闭当前项目。
? 文件 | 项目另存为 将项目换名存盘,此方法只是将项目用另一个名字,而
不会将项目中的模块和包含文件换成另一个名字存盘。如果想将整个项目及模块存到另一个地方,请用复制项目方法。
编辑菜单选项(E)
? 编辑 | 撤消键入 取消上一次操作 ? 编辑 | 重复键入 恢复被取消的操作
? 编辑 | 剪切 删除选定的正文,删除的内容被送到剪贴板上 ? 编辑 | 复制 将选定的内容,复制到剪贴板上 ? 编辑 | 粘帖 将剪贴板的内容插入光标位置 ? 编辑 | 全选 选定当前窗口所有内容。
搜索菜单选项(S)
? 搜索 | 查找 在当前窗口中查找符号,字串。可以指定区分大小写方式,全
字匹配方式,可以向上/向下查找。
? 搜索 | 在文件中查找 可以在指定的一批文件中查找某个关键字。
? 搜索 | 替换 在当前窗口查找相应文字,并替换成指定的文字,可以指定区
分大小写方式和全字匹配方式查找,可以在指定处替换,也可以全部替换。 ? 搜索 | 查找下一个 查找文字符号下一次出现的地方
? 搜索 | 项目中查找 在项目所有模块(文件)中查找符号,字串。在项目所
包含的文比较多时,用此方法可以很方便地查到字串在什么地方出现。 ? 搜索 | 转到指定行 将光标转到程序的某一行。
? 搜索 | 转到指定地址/标号 将光标转到指定地址或标号所在的位置。 ? 搜索 | 转到当前PC所在行 将光标转到PC所在的程序位置。
项目(P)
? 项目 | 编译 编译当前窗口的程序。如有错误,系统将会指出错误所在的位
置。
? 项目 | 全部编译 全部编译项目中所有的模块(程序文件),包含文件。如有
错误系统会指出错误所在位置。
? 项目 | 装入OMF文件 建好项目后,无须编译,直接装入在其它环境中编译
好的调试信息,在伟福环境中调试。
? 项目 | 加入模块文件 在当前项目中添加一个模块。 ? 项目 | 加入包含文件 在当前项目中添加一个包含文件
执行(R)
? 执行 | 全速执行 运行程序
? 执行 | 跟踪 跟踪程序执行的每步,观察程序运行状态。
? 执行 | 单步 单步执行程序,与跟踪不同的是,跟踪可以跟踪到函数或过程
的内部,而单步执行则不跟踪到程序内部。
? 执行 | 执行到光标处 程序从当前PC位置,全速执行到光标所在的行。如
果光标所在行没有可执行代码。则提示“这行没有代码” ? 执行 | 暂停 暂停正在全速执行的程序。
? 执行 | 复位 终止调试过程,程序将被复位。如果程序正在全速执行,则应
先停止。
? 执行 | 设置PC 将程序指针PC,设置到光标所在行。程序将从光标所在行
开始执行。
? 执行 | 自动单步跟踪/单步 模仿用户连续按F7或F8单步执行程序。
? 执行 | 设置/取消断点 将光标所在行设为断点,如果该行原来已为断点,则
取消该断点。所有断点通过断点窗口进行管理。四种方法可以在光标处设置断点
? 将光标移到编辑窗口内,行左边的空白处,光标变成“手指圆”箭头,
单击鼠标左键,可以设置/取消断点。
? 使用Ctrl-F8快捷键,可以在光标所在行设置/取消断点 ? 右击鼠标, 弹出菜单,选择 设置/取消断点
? 主菜单 执行/设置取消断点,也可以用Alt-R / B 菜单快捷设置取消断点
? 执行 | 清除全部断点 清除程序中所有的断点。让程序全速执行
窗口(W)菜单选项
? 窗口 | 刷新 刷新打开的所有窗口,及窗口里的数据。
? 窗口 | 项目窗口 打开项目窗口,以便在项目中加入模块或包含文件。(图:
项目窗口)
? 窗口 | 信息窗口 显示系统编译输出的信息。如果程序有错,会以图标形式
指出,表示错误,表示警告,表示通过。在编译信息行会有相关的生成文件,双击鼠标左键,或击右键在弹出菜单中选择“打开”功能,可以打开相关文件。如果有编译错误,双击左键,可以在源程序中指出错误所在行,有时前一行或后一行程序有错,会造成当前行编译不通过。而将错误定位在本行,所以如果发现了错误,但在本行没有发现错误,可以查查本行上下的程序。
? 窗口 | CPU窗口 通过CPU窗口,可以打开反汇编窗口,SFR窗口和REG
窗口。在反汇编窗口中可观察编译正确的机器码及反汇编程序,可以让你更清楚地了解程序执行过程;SFR窗口中可以观察到单片机使用的SFR(特殊功能寄存器)值和位变量的值;REG窗口为R0?R7、A、DPTR等常用寄存器的值。
反汇编窗口内为程序地址,机器码,反汇编码。在机器码窗口内也支持点屏功能,在反汇编码处,点击寄存器,可以看到寄存器的值。
反汇编窗口的弹出菜单
? 执行到光标处:使程序从当前PC值,全速执行到光标所在行,用这
种方法可以在调试程序时,跳过一些不必要的指令。将程序停到所要求的位置上。
? 转到指定地址/标号:将光标跳到某个地址或标号所在位置,以便察
看相应的程序,或使用 “执行到光标处”功能,也可以设置断点,将程序全速执行到相应位置。
? 转到当前PC所在行: 将光标跳到PC所在行,由于在检查程序时,
可能会将PC所在行移出当前窗口,用这种方法可找回PC所在行。 ? 取消/设置断点: 在光标所在行,设置断点,使程序全速执行到此处。
若此行已是断点,再次点击将取消该断点。
寄存器窗口的弹出菜单
? 加入观察:将当前寄存器放入观察窗口,以方便随时察看。
? 修改:修改当前寄存器值。在程序执行时,可以用这种方法,把寄存器值改为你所指定的值,从而观察程序在此值时运行的结果。
? 窗口 | 数据窗口 数据窗口根据选择的CPU类型不同,名称有所不同。51
系列有以下四种数据窗口:DATA-内部数据窗口;CODE-程序数据窗口;XDATA-外部数据窗口;PDATA-外部数据窗口(页方式);BIT窗口。以51系列为例说明数据窗口的操作方法: 内部数据窗口(DATA):
在内部数据窗口中可以看到CPU内部的数据值,红色的为上一步执行过程中,改变过的值。窗口状态栏中为选中数据的地址,可以在选中的数据上
直接修改数据的十六进制值,也可以用弹出菜单的修改功能,修改选中的数据值。
弹出菜单:
? 修改:修改选中数据的值,可以输入十进制,十六进制,二进制的值,
与直接修改不同的是,用这种方法可以输入多种格式数据,而直接修改只能输入十六进制数据。46(十进制),2EH(十六进制),00101110B(二进制)都是有效的数据格式。 ? 转到指定地址/标号:将数据地址直接转到指定的地址和标号所在的位置。 ? 生成数据源码:将窗口中某段数据转换成源程序方式的数据,可以贴到
你的源程序中。
? 块操作:对窗口中的数据块进行填充、移动、写文件、读入等操作。 ? 显示为:选择不同的数据类型显示数据内容,可以是字节方式(BYTE),
也可以是字方式(WORD,两字节),可以是长整型(LONGINT,四字节),也可以是实数型(REAL,四字节)。这里是选择整个窗口的显示方式,如果想指定个别数据的显示方式,可以用主菜单[执行|编辑观察项]功能,选择所要选择的显示类型。(参见编辑观察项窗口)
? 显示列数:将窗口中数据以4列、8列、16列方式显示。适应不同需要。
程序数据窗口(CODE)
程序数据窗口显示的是编译后程序码,状态栏显示的是选中数据的地址,可以对在选中数据上直接修改程序数据的十六进制值,也可以对程序数据进行‘块填充’,‘块移动’操作,也可以读入一段二进制代码插入程序数据中,也可以将程序数据中的某段代码写文件中。 弹出菜单:
? 修改:修改选中数据的值,可以输入十进制,十六进制,二进制的值,
与直接修改不同的是,用这种方法可以输入多种格式数据,而直接修改只能输入十六进制数据。46(十进制),2EH(十六进制),00101110B(二进制)都是有效的数据格式。
图2-1
步骤二:配置
从Keil 用户界面选择“Option for ‘Targe1t’”,在“Option for ‘Targe1t’”窗口Debug 栏中,选择“Use Keil Monitor-51 Driver”,注意当每次RESET目标板时用户的代码区会被擦除,如果用户程序需要在开始时下载到目标板, 要勾上“ Load Application at Startup” 。
点击Setting 项,弹出Target Setup 窗口进行配置,选择目标板与PC通讯的串行接口(COM1-COM4)和波特率,如果需要显示存储器的实时窗口,不要选择Cache Option。注意如果选择了Serial Interrupt,去Stop Porgram Execution,SoftICE 将修改在位置c:0023h 的中断向量3个BYTE,请确保用户程序没有占用这些地址。
以上的设定可以在程序调试过程再次修改。 步骤3:开始调试
从Debug 菜单点击Start/Stop Debug Session 开始调试过程。在连接过程中,偶尔会出现连接重试的情况,此时只要按一下复位按钮即可连接成功,建议每次连接之前进行复位。连接成功之后就可直接单步、断点、全速运行。
实验板上的功能器件 名称 功 能 说 明 七段数码管 8个共阳LED数码管段位接CH451的SEG端,字位接CH451的DIG端 CH451 整合了数码管显示驱动和键盘扫描控制以及μP 监控的多功能外围芯片。 MCU 系统控制、编程、下载等 MAX232 RS232串口通讯 继电器 在自动控制电路中起控制与隔离作用的执行部件,可以用低电压、小电流来控制大电流、高电压的自动开关。 25045 看门狗+复位+RAM TLC549 8 位I2C A/D 转换 TLC5615 10 位I2C D/A 转换 24C02 I2C EEPROM DS1302 SPI 串行实时时钟 蜂鸣器 音乐程序演示,接P3.7 PCF8574 I2C 串口转并I/0口 DS18B20 一线温度传感器 LED 8×8 点阵块 文字及图形显示实验 LCD 1602 字符显示实验 红色LED 8个红色发光二极管通过一片74LS245与P0口相连 黄色LED 8个黄色发光二极管通过一片74LS245与P1口相连 绿色LED 8个绿色发光二极管通过一片74LS245与P2口相连 矩阵键盘 4×4 矩阵键盘,行与列分别接CH451的SEG端(SEG0-SEG3)和DIG端(DIG0-DIG3)
应用接口和功能开关 标号 名称 功能说明 通过连接40PIN 仿真头对其他目标系统仿真调试,J6 仿真接口 也可通过此接口引出CPU信号扩展其他实验 J3 LCD12864液晶接口 此接口可用来外接一块12864汉字图形液晶屏 8个状态开关分别与P2口的8位IO口相连,通过设置K0-K7 状态开关 某位状态开关可将P2口的某一位设成低电平。 W4 对比度调整旋扭 此旋扭用来调整LCD1602液晶屏显示对比度 将2 拨通此时8位红色LED发光管与P0口接通,反之则断开。将3拨通此时8位绿色LED发光管与P2口接通反之则断开。将4拨通此时8位黄色LED发光管与P1口接通,反之则断开。将5拨通此时PCF8574的8K12 拨码开关 位并口IO口与8位绿色LED发光管接通。同时拨通7,8此时P0,P2口与LCD1602接通这时MCU通过P0,P2口对液晶屏显示控制。拨通6此时P2口与LED8X8模块接通,这时MCU通过P2口对模块显示控制。 TLC549模拟电压输实验时通过旋转次旋扭改变输入电压值,TLC 549 W2 入旋扭 可以采集不同电压值进行转换。 TLC5615参考电压W3 旋转此旋扭,可以向TLC5615提供合适的参考电压。 旋扭
第二章 微机原理及应用实验
实验一 开发环境的使用 一、 实验目的
掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。 二、实验内容
在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的30H~7FH 单元清零。 三、实验设备
PC机一台。 四、实验步骤
用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。 五、实验思考
1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单
文件名称:CLEAR.ASM
ORG 0000H
CLEAR: MOV R0,#30H ;30H 送R0寄存器
MOV R6,#50H ;50H 送R6寄存器(用作计数器)
CLR1: MOV A,#00H ;00 送累加器A
MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1
DJNZ R6,CLR1 ;不到50H个字节,继续
WAIT: LJMP WAIT
END
实验二 数据传送 一、 实验目的
掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容
1.编制一段程序,要求程序中包含7中不同寻址方式。
2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。
4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备
PC机一台。
四、实验步骤
逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、实验思考
1.如何把片外RAM中1000H~100FH单元中的数传送到片外RAM中2000H~200FH单元中?
2.如何把ROM中0200H~0207H单元的数传送至片外RAM0000H~0007H单元中?
实验三 数码转换 一、 实验目的
掌握采用软件方法进行不同形式数据之间的转换,如十进制数与二进制数的转换、十六进制数与BCD码的转换、BCD数与ASCII码之间的转换、非压缩BCD码与压缩BCD码之间的转换。 二、实验内容
1.编制一段程序,将31H单元中的无符号数转换成BCD码,存入32H~34H单元中。
2.编制一段程序,将到片内RAM40H,41H中的BCD数转换成十六进制数,存入42H单元中。
3.编制一段程序,将片内RAM30H~32H中的BCD数转换成ASCII码,结果存入外内RAM40H~42H中。
4.编制一段程序,将片内RAM40H~4FH中的BCD码转换成压缩BCD码,结果存入片外RAM0800H~0807H中。 三、实验设备
PC机一台。 四、实验步骤
逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、实验思考
1.如何把一个2字节无符号数转换成BCD码? 2.如何把一个3字节十六进制数转换成ASCII码?
实验四 数值运算 一、 实验目的
掌握采用软件方法进行多字节二进制数、BCD码的加、减运算。 二、实验内容
1.编制一段程序,将30H~35H单元中的无符号与40H~45H单元中的无符号数相加,结果存入30H~35H单元中。
2.编制一段程序,将40H~45H单元中的无符号与46H~4BH单元中的无符号数相减,结果存入40H~45H单元中。
3.编制一段程序,将30H~35H单元中的压缩BCD码与40H~45H单元中的压缩
BCD码相加,结果存入30H~35H单元中。 三、实验设备
PC机一台。 四、实验步骤
逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、实验思考
若有一个多字节有符号数的原码,如何求其补码?
实验五 堆栈操作 一、实验目的
掌握堆栈的使用方法何特点,学习部分有关堆栈操作的编程技巧。 二、实验内容
1.编制一段程序,利用堆栈将30H~35H单元中的数传送到40H~45H单元中。 2.编制一段包含子程序调用的程序,观察子程序调用过程中堆栈指针SP的变化以及堆栈中数据的变化。 三、实验设备
PC机一台。 四、实验步骤
逐段编制程序,汇编无误后,用“步入”的方式运行程序,检查程序运行过程中堆栈指针SP的变化以及堆栈中数据的变化,了解堆栈中的数据与子程序调用语句所处位置间的关系。 五、实验思考
如何在子程序执行完成后,不返回到原调用处,而是返回到某一指定地址处?
实验六 查表操作 一、实验目的
掌握查表程序的编程方法和技巧。 二、实验内容
1.以PC为基址寄存器,查表求30H单元中BCD码的平方,结果存入31H单元。 2.以DPTR为基址寄存器,查表求30H单元中无符号数的平方,结果存入40H、41H单元中。 四、实验步骤
逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看查表结果是否正确。 五、实验思考
如何用查表的方法求一个2字节无符号数的平方?
实验七 逻辑运算操作 一、实验目的
掌握逻辑运算操作的编程方法和应用技巧。 二、实验内容
1.设有X1、X2、X3、X4、X5、X6共六个十六进制数,存放在30H~35H单元中,求(X1·X2)⊕(X3+X4)+/(X5⊕X6)之值,并将结果存入40H单元。X1~X6的初始值分别为:X1=35H、X2=AAH、X3=67H、X4=4FH、X5=D9H、X6=08H。
2.编制一段程序,采用移位的方法,将50H~53H单元中的无符号数乘以8,不考虑溢出。
3.编制一段程序,采用移位的方法,将50H~53H单元中的无符号数除以128,不考虑余数。 三、实验设备
PC机一台。 四、实验步骤
逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看查表结果是否正确。 五、实验思考
如何将一个字节中的各位逆序排列(例如:由82H变为41H)?
实验八 中断及I/O口实验 一、实验目的
掌握中断程序的编程方法以及LJD-SY-5100实验开发板的使用。 二、实验内容
1.利用定时/计数器T0,实现1秒定时器。在中断服务程序中,将P1口的内容左移一位,由此实现与P1口相连的8个LED中一个点亮的LED每隔1秒左移一位。
2.在P0口、P1口、P2口各取一个LED,模拟红、黄、绿交通指示灯。利用定时/计数器T1,实现红灯亮2秒、黄灯亮1秒、绿灯亮4秒的循环。 三、实验设备
1.PC机一台;
2.LJD-SY-5100实验开发板一套; 四、实验步骤
1.接好LJD-SY-5100实验装置的电源,并将LJD-SY-5100实验装置的串行接口与PC机的串行接口相连。
2.开启LJD-SY-5100实验装置的电源。 3.在PC机上运行Keil C51软件,然后按《实验指导书》第一章中“LJD-SY-5100 学习实验开发板的使用”一节的步骤操作,输入源程序并进行调试。 五、实验思考
如何实现红灯亮2秒、黄灯亮以0.5秒间隔闪烁2次、绿灯亮4秒的循环。? 六、参考程序
以下程序的功能:使P1.0所连接的LED每隔0.5秒闪烁一次。其原理是利用定时器T0定时50ms,再利用计数器COUNT计数10次,构成0.5秒定时器。每当0.5秒
定时时间到,将P1.0的状态反转。
;============================================================== COUNT EQU 30H
;============================================================== ORG 0000H LJMP START
ORG 000BH LJMP T0_INT
;==============================================================
ORG 0030H START: MOV SP,#6FH
MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H ;晶振11.0592MHz,定时50ms MOV COUNT,#10 ; 10×50=500ms,状态反转一次 MOV P1,#01H
SETB TR0 ;启动T0 SETB ET0 ;T0中断允许 SETB EA ;总中断允许
SJMP $ ;等待
;============================================================== ;T0中断服务程序
;============================================================== T0_INT:
MOV TH0,#4CH MOV TL0,#00H ;晶振11.0592MHz,定时50ms DJNZ COUNT,T0_INT1 ;10次计数值未到,返回 MOV COUNT,#10H ;重置计数器 CPL P1.0 T0_INT1:
RETI
END
实验九 串行通讯实验 一、实验目的
掌握串行通讯程序的编程方法。 二、实验内容
1.理解参考程序并在LJD-SY-5100实验开发板上调试通过。
2.对参考程序进行改造,增加串行口初始化程序及串行口中断服务程序,并进行双机通讯实验。 三、实验设备
1.PC机一台;
2.LJD-SY-5100实验开发板一套; 四、实验步骤
1.接好LJD-SY-5100实验装置的电源,并将LJD-SY-5100实验装置的串行接口与PC机的串行接口相连。
2.开启LJD-SY-5100实验装置的电源。 3.在PC机上运行Keil C51软件,然后按《实验指导书》第一章中“LJD-SY-5100 实验开发板的使用”一节的步骤操作,输入参考程序进行调试并通过。
4. 在参考程序基础上对程序进行改造,将程序功能改为:每按一次按键,就将键号通过串行口发送出去;对方单片机接收到数据后,将其显示在LED上。
5. 程序修改完成后汇编成机器码,保存为.HEX或.BIN文件。
6.将机器码下载至单片机的Flash中,两台LJD-SY-5100实验开发板为一组进行串行通讯实验。为保障实验装置的安全,下载操作必须在教师指导下在指定LJD-SY-5100实验开发板上进行,严禁同学擅自进行下载实验。 五、实验思考
如何实现一次发送或接收一批数据? 六、参考程序
以下程序的功能:每次按键,所按键号将在LED上显示。
LOAD BIT P1.2 DIN BIT P1.0 DCLK BIT P1.1 DOUT BIT P3.3
;============================================================== DATA_KEY DATA 35H
;============================================================== ORG 0000H LJMP START
ORG 0013H LJMP CH451_INT1
;==============================================================
ORG 0030H START: MOV SP,#60H
;-------------------------------------------------------------- LCALL INITIAL ;初始化CH451
CLR IT1 ;置外部信号为低电平触发 CLR IE1 ;清中断标志 SETB PX1
SETB EX1 ;允许键盘中断 SETB EA ;开总中断
SJMP $ ;等待
;============================================================== ;键盘处理
;============================================================== CH451_INT1:
PUSH PSW ;现场保护 PUSH ACC
LCALL READ_KEY ;读键值
MOV R3,DATA_KEY K1:
CJNE R3,#40H,K2 MOV A,#03FH ;'0'的显示码 SJMP LED_DISP
K2:
CJNE R3,#41H,K3 MOV A,#06H ;'1'的显示码 SJMP LED_DISP K3: CJNE R3,#42H,K4 MOV A,#5BH ;'2'的显示码 SJMP LED_DISP K4: CJNE R3,#43H,K5 MOV A,#4FH ;'3'的显示码 SJMP LED_DISP K5: CJNE MOV SJMP K6: CJNE MOV SJMP K7: CJNE MOV SJMP K8: CJNE MOV SJMP K9: CJNE MOV SJMP K10: CJNE MOV SJMP K11: CJNE MOV SJMP K12: CJNE MOV SJMP K13: CJNE MOV SJMP K14: CJNE MOV SJMP K15: CJNE MOV SJMP R3,#48H,K6 A,#66H LED_DISP R3,#49H,K7 A,#6DH LED_DISP R3,#4AH,K8 A,#7DH LED_DISP R3,#4BH,K9 A,#07H LED_DISP R3,#50H,K10 A,#7FH LED_DISP R3,#51H,K11 A,#6FH LED_DISP R3,#52H,K12 A,#77H LED_DISP R3,#53H,K13 A,#7CH LED_DISP R3,#58H,K14 A,#39H LED_DISP R3,#59H,K15 A,#5EH LED_DISP R3,#5AH,K16 A,#79H LED_DISP
;'4'的显示码 ;'5'的显示码 ;'6'的显示码 ;'7'的显示码 ;'8'的显示码 ;'9'的显示码 ;'A'的显示码;'B'的显示码 ;'C'的显示码 ;'D'的显示码;'E'的显示码 K16: CJNE R3,#5BH,K17 MOV A,#071H ;'F'的显示码
;------------------------------------------------------------ LED_DISP: MOV B,#08H LCALL WRITE
CLR IT1 ;置外部信号为低电平触发 SETB PX1 SETB EX1 ;允许键盘中断 SETB EA K17: POP ACC POP PSW CLR IE1 ;清中断标志 RETI
;============================================================ ;初始化CH451
;============================================================ INITIAL:
MOV P1,#60H ;禁止其它芯片
CLR DIN ;初始化CH451 SETB DCLK SETB DIN SETB LOAD SETB DOUT NOP
MOV B,#04H ;设置CH451 MOV A,#03H ;关看门狗开显示键盘 LCALL WRITE RET
;============================================================ ;入口: B中为传送数据位数 ;出口: 无
;影响寄存器: A,R7,PSW
;============================================================ WRITE:
CLR EX0 CLR LOAD MOV R7,#08H WRITE_1:
RRC A CLR DCLK MOV DIN,C SETB DCLK DJNZ R7,WRITE_1 MOV A,B MOV R7,#04H WRITE_2:
RRC A CLR DCLK MOV DIN,C SETB DCLK DJNZ R7,WRITE_2 SETB LOAD
SETB EX1 RET
;============================================================ ;入口: 无
;出口: 键盘扫描值在DATA_KEY中 ;影响寄存器: 无
;============================================================ READ_KEY:
PUSH PSW ;现场保护 PUSH ACC CLR EX1
CLR MOV READ_KEY_4: SETB RRC CLR MOV SETB CJNE SETB MOV READ_KEY_7:
MOV CLR RLC
SETB JC MOV
POP POP SETB CLR RET
LOAD ;命令开始 A,#0F7H ;读键值命令,忽略12位命令的低8位,高4位用作结束标志 C ;在高位添0以检测位数据结束 A ;低位在前,高位在后 DCLK
DIN,C ;送出一位数据 DCLK ;产生时钟上升沿锁通知CH451输入位数据 A,#0FFH,READ_KEY_4 ;位数据未完继续,共4位,完成后为0FFH LOAD ;产生加载上升沿通知CH451处理命令数据 A,#0FCH ;该数据用以检测位数据结束 C,DOUT ;读入一位数据 DCLK ;产生时钟下升沿通知CH451输出下一位 A ;数据移入ACC,高位在前,低位在后 DCLK READ_KEY_7 ;位数据未完继续,共7位,完成后才移出0 DATA_KEY,A ;保存键值 ACC PSW EX1 IE1 ;清中断标志,该指令需根据实际情况作修改
正在阅读:
浙江大学微机原理实验指导书11-23
今日基督徒普遍的可怜的光景01-26
学生复习题答案09-10
半波对称阵子天线辐射特性01-26
定边县生活垃圾填埋场管理办法09-16
中国文学批评史考研笔记08-31
2009 南京国民经济和社会发展统计公报04-02
大型招聘会安全保卫工作方案10-05
智障训练活动方案110-28
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 浙江大学
- 指导书
- 微机
- 原理
- 实验
- 税务系统领导干部廉洁从政八不准
- “转作风,抓落实,促发展”学习心得体会
- 从黄冈金思维数学教材看小学数学学习的思想方法
- 三年级科学上册期末测试题(青岛版含答案)DOC范文整理
- 车牌识别的matlab程序
- 阿艾夫给排水阀门、仪表及附件技术要求
- 岗位标准
- 习题课及大作业题目要求
- 高效课堂与有效教学模式的研究实施方案
- 会计电算化模拟练习题
- 浅谈工程项目创新成果总结
- 基坑支护、开挖及降水工程验收表
- 煤制备煤气过程中硫平衡分析
- 任务驱动法在Excel电子表格教学中的实践应用-2019年教育文档
- 新视野大学英语(第三版)课后练习答案 第三册第二单元
- 30吨地埋式生活污水及中水回用设计方案--2012.11 - 图文
- 建筑环境学习题
- 铣工考试试题
- 食用菌论文实验设计方案
- 首次业主大会会议表决规1