单片机实验报告

合集下载

单片机定时器实验报告

单片机定时器实验报告

一、实验目的1. 理解单片机定时器的工作原理和功能。

2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。

3. 学会使用定时器实现定时功能,并通过实验验证其效果。

二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。

51单片机内部有两个定时器,分别为定时器0和定时器1。

定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。

定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。

四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。

2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。

3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。

4. 编写定时器中断服务函数,用于处理定时器溢出事件。

5. 编写主函数,设置定时器中断,并启动定时器。

6. 编译并下载程序到单片机实验板。

7. 使用示波器观察定时器0的溢出信号。

五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。

单片机实验报告蜂鸣器

单片机实验报告蜂鸣器

一、实验目的1. 熟悉51单片机的基本结构和工作原理。

2. 掌握51单片机的I/O口编程方法。

3. 学习蜂鸣器的驱动原理和应用。

4. 通过实验,提高动手实践能力和问题解决能力。

二、实验原理蜂鸣器是一种将电信号转换为声音信号的器件,常用于产生按键音、报警音等提示信号。

根据驱动方式,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。

1. 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。

2. 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才能发声,调整提供振荡脉冲的频率,可发出不同频率的声音。

在本次实验中,我们使用的是无源蜂鸣器。

51单片机通过控制P1.5端口的电平,产生周期性的方波信号,驱动蜂鸣器发声。

三、实验器材1. 51单片机实验板2. 蜂鸣器3. 连接线4. 电路焊接工具5. 编程软件(如Keil)四、实验步骤1. 电路连接:- 将蜂鸣器的正极连接到51单片机的P1.5端口。

- 将蜂鸣器的负极接地。

2. 程序编写:- 使用Keil软件编写程序,实现以下功能:1. 初始化P1.5端口为输出模式。

2. 通过循环,不断改变P1.5端口的电平,产生方波信号。

3. 调整方波信号的频率,控制蜂鸣器的音调。

3. 程序下载:- 将程序下载到51单片机中。

4. 实验观察:- 启动程序后,观察蜂鸣器是否发声,以及音调是否与程序设置一致。

五、实验结果与分析1. 实验结果:- 成功驱动蜂鸣器发声,音调与程序设置一致。

2. 结果分析:- 通过实验,我们掌握了51单片机的I/O口编程方法,以及蜂鸣器的驱动原理。

- 在程序编写过程中,我们学习了方波信号的生成方法,以及如何调整方波信号的频率。

六、实验总结本次实验成功地实现了51单片机控制蜂鸣器发声的功能,达到了预期的实验目的。

通过本次实验,我们提高了以下能力:1. 对51单片机的基本结构和工作原理有了更深入的了解。

2. 掌握了51单片机的I/O口编程方法。

3. 学习了蜂鸣器的驱动原理和应用。

单片机实验一-加法器实验报告

单片机实验一-加法器实验报告

单片机实验一-加法器实验报告南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合■设计□创新实验日期:实验成绩:实验一单片机软件实验—1至100求和(一)实验目的1.掌握51单片机Keil软件集成开发环境。

2.学习使用汇编语言编写应用程序。

(二)设计要求熟悉51单片机的Keil软件集成开发环境,使用汇编语言编写“1+2+3+…+100”的程序。

(三)实验原理类似C语言里的循环语句,从1开始加,利用CJNE判断是否已加到100,从而进行循环计数。

(四)实验设备装有Keil4的电脑一台(五)实验结果计算结果高8位r3为0x13,低8位r4为0xba,即0x13ba,十进制数5050。

(六)结果讨论与心得体会实验结果和预期结果一致。

以前就用过Keil编程C51,所以使用起来没有什么障碍。

第一次自己编汇编程序,感觉汇编和C还是有很多相通之处,有很多思想和方法可以借鉴。

(七)附录:实验源代码ORG 0000H ;程序运行入口LJMP M AIN ;跳向主程序MAINORG 0030H ;主程序入口MAIN: MOV R2,#01H ;给R2赋初值1,从1开始加MOV R3,#00H ;R3用于存放最终结果的高8位MOV R4,#00H ;R4用于存放最终结果的低8位START: CLR C;Cy位清零CJNE R2,#65H,LOOP ;判断R2是否等于101,如果不相等,就跳到LOOPSJMP RESULT ;R2等于101时,表示已经完成1加到100的运算,跳转到RESULT LOOP: MOV A,R2 ;将R2的值移入累加器ADD A,R4 ;将R4的值加到累加器里MOV R4,A ;将累加器的值移入R4,作为相加后结果的低8位MOV A,R3 ;将R3的值移入累加器ADDC A,#00H ;累加器加0,并且带进位相加,这样做就把低8位进位加上去了MOV R3,A ;将累加器的值移入R3,作为相加后结果的高8位INC R2 ;R2的值加1,递增,作为下一个加数SJMP START ;跳转到START,继续相加RESULT: SJMP RESULT ;显示结果END ;结束。

单片机实验报告 附含说明书

单片机实验报告  附含说明书

第一章 DICE-5208K开发型单片机综合实验仪概述一、系统简介DICE-5208K型单片机实验系统由DICE-5208K开发型单片机综合实验箱、DICE-3000型仿真器、扩展卡和DICE-51仿真开发系统软件等组成。

是《MCS-51单片机原理与接口》、《单片机控制技术》、《C8051Fxxx高速SOC单片机原理及应用》、《EDA》、《VHDL硬件描述语言》、《CPLD/FPGA应用基础》等课程教学的配套实验设备。

新增加了几乎所有最实用、新颖的接口电路(如1 WIRE /I2C/SPI总线等)和通讯类接口实验(如USB2.0通讯/TCP/IP网络通讯/CAN总线/红外线收发等)。

可进行MCS-51、C8051F嵌入式单片机、CPLD/FPGA等课程的开放式实验教学。

二、主要特点1.该实验系统配置DICE-3000型高性能MCS-51硬件仿真器,64K数据空间,64K程序空间全部开放,不占用CPU资源,采用双CPU模式,仿真CPU和用户CPU独立运行,上位仿真软件支持汇编、C语言、PL/M语言。

可运行于WIN98/2000/NT/XP操作系统平台。

2.实验系统带有ISP在线下载电路,学生在完成实验后可脱离仿真机和PC机独立运行学生自行设计的单片机系统。

(可在线编程AT89S51/52/53系列单片机)。

3.该实验系统可扩展C8051F020嵌入式实验开发模块, 并配有DICE-EC5型USB高速通讯仿真器,通过4脚的JTAG接口可以进行非侵入式、全速的在线系统调试、仿真;集成开发环境支持Silicon Labs IDE和KEIL C软件。

4.该实验系统可扩展CPLD/FPGA模块,并配有相应的并口下载电路,轻松变成一台EDA实验开发平台。

5.该实验系统可扩展“数控式电子演示装置”,该装置是本公司的专利产品,结合上位演示软件和USB接口,可为该实验系统扩展多达十五个生动、形象、复杂的实验,其中大部分是闭环实验,实验践性非常强。

单片机实训报告总结

单片机实训报告总结

单片机实训报告总结篇一:51单片机实训报告“51单片机”精简开发板的组装及调试实训报告为期一周的单片机实习已经结束了。

通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。

同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。

此次实训主要有以下几个方面:一、实训目的1.了解“51”精简开发板的工作原理及其结构。

2.了解复杂电子产品生产制造的全过程。

3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。

4.能运用51单片机进行简单的单片机应用系统的硬件设计。

5.掌握单片机应用系统的硬件、软件调试方法二、实验原理流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。

它的电气性能指标:输入电压:~6V,典型值为5V。

可用干电池组供电,也可用直流稳压电源供电。

如图所示:本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。

三、硬件组成1、晶振电路部分单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。

他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。

2、复位端、复位电路给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。

单片机独立按键实验报告总结

单片机独立按键实验报告总结

单片机独立按键实验报告总结本次实验我们使用了单片机进行了独立按键实验,通过学习掌握了单片机输入输出口的基本使用方法以及独立按键的使用方法和技巧。

以下是本次实验的总结:一、实验内容本次实验的主要内容是独立按键的使用方法和技巧。

通过学习,我们掌握了独立按键的接法原理和基本应用方法。

在实验中,我们首先通过理论学习了按键的工作原理,了解了按键在电路中的应用和接法方法,然后实际动手进行了按键电路的搭建和单片机程序的编写,最后进行了按键测试和实验结果分析。

二、实验步骤1.理论学习:首先,我们学习了独立按键的工作原理和接法原理,了解按键在电路中的应用和接法方法,掌握了按键接口的输入输出方式,并对具体实现过程和技巧进行了分析和探讨。

2.电路搭建:根据学习到的按键接法原理和电路图,我们使用面包板和导线搭建了独立按键电路,将按键连接到单片机的输入端口上,并设置相应的电阻来保护电路和单片机芯片。

3.程序编写:通过阅读单片机说明书和参考其他资料,我们学习了单片机输入输出口的基本使用方法和指令,编写了程序代码,实现了独立按键操作的功能。

我们实现了多种按键操作方式,包括单击、长按等方式,并添加了相应的提示和保护措施,以确保程序的可靠性和稳定性。

4.测试实验:最后,我们进行了独立按键测试实验,通过按键操作,观察测试实验结果,进行了数据分析和结论汇总。

实验结果表明,我们的按键电路和程序代码都实现了预期的功能和效果,证明了我们在实验中掌握的独立按键技巧和方法是正确和有效的。

三、实验结论通过本次实验,我们掌握了单片机输入输出口的基本使用方法和独立按键的使用方法和技巧,了解了按键在电路中的应用和接法方法,探索了独立按键实现的多种方式和技巧,提高了我们的电路设计能力和程序设计能力。

同时,本次实验还加强了我们的实验动手操作能力,增强了我们的实际应用能力和创新思维能力,为我们以后的学习和工作打下了坚实的基础。

单片机中断实验报告

单片机中断实验报告
程序下载
通过单片机的下载接口,将可执行的二进制文件 下载到单片机中。
实验测试
通过按键触发外部中断,观察LED灯的状态变化, 验证程序的正确性。
04
实验结果与分析
中断响应时间测试
总结词
响应时间快
详细描述
在测试中,我们发现单片机的中断响应时间非常快,能够在极短的时间内对外 部事件做出响应。这主要得益于单片机的硬件架构和中断处理机制,使得单片 机能够迅速识别并处理外部事件。
提高编程能力
通过本次实验,我们认识到自己的编程能力还有很大的提升空间。在未来的学习中,我们将注重提高自 己的编程能力,包括代码的优化、调试技巧等方面。
THANKS
感谢观看
实验中的问题与解决方案
在实验过程中,我们遇到了一些问题,如中断触发条件不 稳定等,通过调整相关参数和优化代码,最终解决了这些 问题。
对实验的反思与建议
01
实验操作流程的不足
在实验过程中,我们发现操作流程仍存在一些不足之处,如某些步骤的
描述不够清晰,导致实验过程中出现了一些不必要的困惑。建议在后续
的实验指导书中对操作流程进行更加详细的描述。
深入学习单片机中断机制
通过本次实验,我们对单片机的中断机制有了初步的了解。在未来的学习中,我们计划深入学习单片机的中断机制, 了解更多关于中断的细节和应用技巧。
探索更多中断应用场景
除了本次实验中实现的按键中断和定时器中断外,我们还计划探索更多的中断应用场景,如串口中断、ADC中断等 ,以拓宽我们的知识面和应用能力。
05
结论与建议
实验结论
实验目标达成情况
实验目标是通过单片机实现外部中断和定时器中断,实验 过程中成功实现了外部按键中断和定时器中断,验证了单 片机的中断处理机制。

单片机流水灯实验报告

单片机流水灯实验报告

实验目的:实现单片机流水 灯功能
实验结果:LED灯按照预设 顺序依次点亮,实现流水灯
效果
分析与讨论:实验结果与预 期相符,验证了单片机流水
灯功能的实现。
实验结果分析
实验目的:验证单片 机流水灯控制电路的
设计与实现
实验设备:单片机、 LED灯、电阻、电源

实验步骤:编写程序、 连接电路、运行程序、
观察现象
实验过程中,对实验结果 的分析不够全面,容易导 致实验结论不准确。
实验过程中,对实验数据 的记录不够详细,容易导 致实验数据丢失。
实验过程中,对实验设备 的维护不够重视,容易导 致实验设备损坏。
实验过程中,对实验环境 的控制不够严格,容易导 致实验结果不准确。
对未来实验的展望
创新实验方法:尝试新的实 验方法,提高实验效果
掌握流水灯电路 的搭建方法
学习单片机的编 程和调试方法
掌握流水灯电路 的调试方法
添加标题
添加标题
添加标题
添加标题
培养实践操作和问题解决能力
通过实验操作, 提高动手能力
学习单片机的基 本原理和编程方

培养发现问题、 分析问题和解 决问题的能力
提高团队合作和 沟通能力
02
实验设备
单片机开发板
添加标题 添加标题 添加标题 添加标题 添加标题 添加标题
编写流水灯程序
确定流水灯的 硬件连接方式
编写流水灯控 制程序
编译并下载程 序到单片机
调试程序,确 保流水灯正常 工作
0
0
0
0
1
2
3
4
烧录程序到单片机
准备烧录器:选择合适的烧录器,如USB烧录器 连接单片机:将烧录器连接到单片机的烧录接口 打开烧录软件:启动烧录软件,选择要烧录的程序文件 开始烧录:点击烧录按钮,开始烧录程序到单片机 检查烧录结果:烧录完成后,检查单片机的运行情况,确保程序正常运行
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验报告实验一数据传送(RAM–>XRAM)一、实验目的熟悉星研集成环境软件或熟悉Keil C51集成环境软件的使用方法。

熟悉MCS51汇编指令,能自己编写简单的程序,掌握数据传输的方法。

二、实验内容1、熟悉星研集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。

2、编写程序,实现内外部数据段的传送、校验。

三、程序框图数据传送程序框图四、实验步骤在内部RAM 30H ~3FH中输入数据;使用单步、断点方式调试程序,检测外部数据RAM 的1000H ~100FH中的内容。

熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

五、程序清单;将内部RAM Address1 开始的16个字节送到外部RAM从Address2开始的单元里,再作比较。

Address1DATA30HAddress2XDATA1000HORG0000HLJMP STARORG0100HSTAR:MOV SP,#60HMOV R0,#Address1MOV DPTR,#Address2MOV R7,#10HSTAR1:MOV A,@R0;传送MOVX@DPTR,AINC R0INC DPTRDJNZ R7,STAR1MOV R0,#Address1MOV DPTR,#Address2MOV R7,#10HSTAR2:MOV B,@R0;比较MOVX A,@DPTRCJNE A,B,STAR3INC R0INC DPTRDJNZ R7,STAR2SJMP$;传送正确STAR3:SJMP$;传送错误END实验二双字节BCD码(十进制数)加法一、实验目的熟悉51汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。

二、实验内容从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

三、实验框图双字节BCD加法程序框图四、实验步骤1、连线说明:2、在F4区的键盘上输入4位被加数、加数3、结果显示在F4区的数码管上五、程序清单EXTRN CODE(Display8, GetBCDKey)Buffer DATA30H;8字节显示缓冲区F1BIT0D1H;ORG0000HLJMP STARTORG0100HSTART:MOV SP,#60HCLR F1;先清除显示,再接收键输入START1:MOV R0,#bufferMOV A,#4;按键次数LCALL GetBCDKey;得到双字节十进制数(被加数)SETB F1;接收到第一个键,才清除显示MOV R0,#buffer+4MOV A,#4;按键次数LCALL GetBCDKey;得到双字节十进制数(加数)MOV A,buffer+1ADD A,buffer+5DA AMOV buffer+5,AMOV A,bufferADDC A,buffer+4DA AMOV buffer+4,ACLR ARLC ADisplay:PUSH ACC;显示结果MOV R0,#bufferMOV A,buffer+5;低位ACALL B1toB2;压缩BCD码转换成非压缩BCD码MOV A,buffer+4;高位ACALL B1toB2POP ACC;进位ACALL B1toB2MOV@R0,#10H;最高二位消隐INC R0MOV@R0,#10HMOV R0,#buffer+5MOV R7,#5ACALL BlackDisplay;将高位0消隐MOV R0,#bufferLCALL Display8SJMP START1;将一个字节压缩BCD码转换成二个字节非压缩BCD码B1toB2:PUSH ACCANL A,#0FHMOV@R0,AINC R0POP ACCANL A,#0F0HSWAP AMOV@R0,AINC R0RETBlackDisplay:MOV A,@R0;将高位0消隐JNZ ExitMOV A,#10HMOV@R0,ADEC R0DJNZ R7,BlackDisplayExit:RETEND实验三双字节BCD码(十进制数)减法一、实验目的熟悉51汇编指令,学会使用星研集成环境软件,掌握汇编语言的设计和调试方法。

能看懂程序流程框图,能自己设计程序,熟悉BCD码、补码,了解如何调用系统提供的子程序。

二、实验内容从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

三、程序框图双字节十进制减法程序框图四、实验步骤1、连线说明:2、在F4区的键盘上输入4位被减数、减数3、结果显示在F4区的数码管上五、程序清单EXTRN CODE(Display8, GetBCDKey)Buffer DATA30H;8字节显示缓冲区F1BIT0D1H;ORG0000HLJMP STARTORG0100HSTART:MOV SP,#60HCLR F1;先清除显示,再接收键输入START1:MOV R0,#bufferMOV A,#4;按键次数LCALL GetBCDKey;得到双字节十进制数(被减数)SETB F1;接收到第一个键,才清除显示MOV R0,#buffer+4MOV A,#4;按键次数LCALL GetBCDKey;得到双字节十进制数(减数)MOV A,#9AHCLR CSUBB A,buffer+5MOV buffer+5,AMOV A,#99HCLR CSUBB A,buffer+4MOV buffer+4,A;减数取补MOV A,buffer+1ADD A,buffer+5DA AMOV buffer+5,AMOV A,bufferADDC A,buffer+4DA AMOV buffer+4,AMOV F0,C;借位标志JC DisplayMOV A,#9AHSUBB A,buffer+5MOV buffer+5,AMOV A,#99HSUBB A,buffer+4XCH A,buffer+5ADD A,#00HDA AXCH A,buffer+5ADDC A,#00HDA AMOV buffer+4,ADisplay:MOV R0,#buffer;显示结果MOV A,buffer+5;低位ACALL B1toB2;压缩BCD码转换成非压缩BCD码MOV A,buffer+4;高位ACALL B1toB2MOV@R0,#10H;最高四位消隐INC R0MOV@R0,#10HINC R0MOV@R0,#10HINC R0MOV@R0,#10HMOV R0,#buffer+3MOV R7,#3ACALL BlackDisplay;将高位0消隐MOV R0,#bufferLCALL Display8SJMP START1BlackDisplay:MOV A,@R0;将高位0消隐JNZ ExitMOV A,#10HMOV@R0,ADEC R0DJNZ R7,BlackDisplayExit:JB F0,Exit1INC R0MOV@R0,#11H;负数标志Exit1:RETB1toB2:PUSH ANL A,#0FHMOV@R0,AINC R0POP ACCANL A,#0F0HSWAP AMOV@R0,AINC R0RETBlackDisplay:MOV A,@R0JNZ ExitMOV A,#10HMOV@R0,ADEC R0DJNZ R7,BlackDisplay Exit:RETEND实验四四字节十六进制数转十进制数一、实验目的进一步熟悉51汇编指令,了解十六进制数转十进制数的方法。

二、实验内容从键盘上输入8位十六进制数,实现四字节十六进制数转8位十进制数,并在数码管上显示。

注意输入数据必须在00000000H~05F00000H范围,否则,结果超出8位十进制数,无法正确显示。

三、程序框图主程序十六进制转十进制子程序四、实验步骤1、连线说明:2、在F4区的键盘上输入8位十六进制数3、结果显示在F4区的数码管上五、程序清单EXTRN CODE(Display8, GetKey)Buffer DATA30H;8字节显示缓冲区F1BIT0D1H;ORG0000HLJMP STARTORG0100HSTART:MOV SP,#60HCLR F1;先清除显示,再接收键输入START1:MOV R0,#bufferMOV A,#8;按键次数LCALL GetKey;得到4字节十六进制数SETB F1;接收到第一个键后,才清除显示MOV R0,bufferMOV R1,buffer+1MOV R2,buffer+2MOV R3,buffer+3ACALL B4toD4;转换成十进制数Display:MOV R0,#buffer;显示结果MOV A,R7;低位ACALL B1toB2;压缩BCD码转换成非压缩BCD码MOV A,R6ACALL B1toB2MOV A, R5ACALL B1toB2MOV A,R4;高位ACALL B1toB2MOV R0,#buffer+7MOV R7,#7ACALL BlackDisplay;将高位0消隐MOV R0,#bufferLCALL Display8SJMP START1;四字节十六进制数转十进制数:R0R1R2R3为十六进制,R4R5R6R7为压缩BCD码B4toD4: CLR AMOV R4,AMOV R5,AMOV R6,AMOV R7,AMOV B,#32LOOP:CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R1RLC AMOV R1,AMOV A,R0RLC AMOV R0,AMOV A,R7ADDC A,R7DA AMOV R7,AADDC A,R6DA AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ B,LOOPRETB1toB2:PUSH ACCANL A,#0FHMOV@R0,AINC R0POP ACCANL A,#0F0HSWAP AMOV@R0,AINC R0RETBlackDisplay:MOV A,@R0;将高位0消隐JNZ ExitMOV@R0,ADEC R0DJNZ R7,BlackDisplay Exit:RETEND实验五双字节BCD码(十进制数)乘法一、实验目的进一步熟悉51汇编指令,掌握汇编语言的设计和调试方法。

相关文档
最新文档