2014单片机实验报告
- 格式:doc
- 大小:421.50 KB
- 文档页数:11
关于单片机实训报告万能【六篇】【篇1】单片机实训报告万能通过今次单片机实训,使我对单片机的认识有了更深刻的理解。
系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。
当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。
我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。
当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。
这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
希望这次的经历能让我在以后学习中激励我继续进步。
【篇2】单片机实训报告万能通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。
了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。
LED显示器:LED显示器是由发光二管组成显示字段的器件。
通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。
有段选码和和位选码。
当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA 电流;位线的电流应选择40-80MA。
LED显示器的显示方式有动态和静态两种。
7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。
单片机实训报告一、实训目的本次单片机实训的目的在于通过实际操作和项目实践,深入理解单片机的工作原理和应用开发,提高自身的硬件设计能力、软件编程能力以及解决实际问题的能力。
同时,培养团队合作精神和创新思维,为今后从事相关领域的工作打下坚实的基础。
二、实训设备在本次实训中,我们使用了以下主要设备:1、单片机开发板:用于实验和项目的开发与调试。
2、计算机:安装相关的编程软件和开发工具。
3、示波器:用于观察电路中的信号波形。
4、万用表:用于测量电路中的电压、电流等参数。
三、实训内容1、单片机基础知识学习首先,我们对单片机的基本结构、工作原理、指令系统等进行了系统的学习。
了解了单片机的内部组成,包括中央处理器(CPU)、存储器、输入输出端口等。
通过学习指令系统,掌握了如何使用汇编语言或 C 语言对单片机进行编程控制。
2、硬件电路设计在硬件电路设计方面,我们学习了如何根据实际需求设计单片机的最小系统,包括电源电路、时钟电路、复位电路等。
同时,还掌握了如何扩展外部存储器、输入输出设备等。
通过实际绘制电路图和制作电路板,提高了我们的硬件设计能力和动手实践能力。
3、软件编程在软件编程方面,我们使用了汇编语言和 C 语言两种编程方式。
通过编写简单的程序,如点亮 LED 灯、控制数码管显示、实现按键输入等,逐渐熟悉了单片机的编程方法和技巧。
同时,还学习了如何使用中断、定时器、串口通信等功能,提高了程序的复杂程度和实用性。
4、项目实践在项目实践环节,我们分组完成了一个基于单片机的温度控制系统的设计与实现。
该系统通过温度传感器采集环境温度,经过单片机处理后,控制风扇的转速和加热装置的工作状态,从而实现对环境温度的自动控制。
在项目实践过程中,我们充分运用了所学的知识和技能,从系统方案设计、硬件电路搭建、软件编程调试到系统测试优化,每个环节都进行了精心的设计和认真的实施。
四、实训过程在实训开始阶段,我们首先进行了单片机基础知识的学习和实验。
《单片机原理与应用》实验报告4班级:13车1 姓名:危凯明学号:1308032136时间:2015/12/3 地点:实验楼4号楼301一、实验目的1、熟练掌握51单片机开发板HC6800的使用方法和注意事项。
2、了解简单单片机应用系统的设计方法。
3、掌握应用KEIL软件编辑程序的做作方法。
4、掌握烧录软件的操作方法。
5、掌握按键中断程序。
6、掌握步进电机转动的机理。
二、实验内容1、电路绘制2、程序编写3、计算机仿真4、开发板电路连接及实现三、例程功能说明电机转动。
四、自行设计功能说明按键实现步进电机正反转。
五、实验电路原理图六、程序设计及说明#include "reg52.h"#define speed 2/Motorsbit PH1 = P1^0; //定义管脚sbit PH2 = P1^1;sbit I01 = P1^2;sbit I11 = P1^3;sbit I02 = P1^4;sbit I12 = P1^5;void delay(int time);void Go(){ //APH1 = 0; //PH1为0 则A线圈为反向电流I01 = 0;I11 = 0; //以最大电流输出PH2 = 0; //PH2为0 则B线圈为反向电流I02 = 1;I12 = 1; //输出0delay(speed);//0PH1 = 0; //PH1为0 则A线圈为反向电流I01 = 1; //输出0I11 = 1;PH2 = 1; //PH2为1 则B线圈为正电流I02 = 0; //以最大电流输出I12 = 0;delay(speed);//BPH1 = 1; //PH1为1 则A线圈为正向电流I01 = 0; //以最大电流输出I11 = 0;PH2 = 1; //PH2为1 则B线圈为正向电流I02 = 1; //输出0I12 = 1;////delay(speed);//0PH1 = 1; //PH1为1 则A线圈为正向电流I01 = 1;I11 = 1;PH2 = 0; //PH2为0 则B线圈为反向电流I02 = 0;I12 = 0;delay(speed);}void delay(unsigned int time){unsigned int i,j;for(j=0; j <= time; j++)for(i =0 ; i <= 120; i++); }void main(){EA=1; //总中断允许EX1=1; //选择外部中断1EX0=1;PX1=1;while(1);}void stop() interrupt 0{while(1){Go();}}void on() interrupt 2{P1=0x00;delay(500);}七、实验效果图八、。
单片机实验报告第一篇:单片机实验报告单片机实验报告一、实验目的1.熟练使用Keil、Protues两款软件2.通过上机操作,增强个人动手实践能力3.加深对理论知识的理解4.培养运用汇编语言进行初步编写程序的能力二、实验内容1.将片外RAM3050-306FH中数据转移至片内70-8FH中。
要求:可以从Keil或Protues上看到RAM的数据转移结果。
2.设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮。
要求:开发板或Prrotues演示3.将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术。
要求:在Keil或Protues上看到数据转换结果。
4.各使用中断方式和查询方式设计一个方波发生器,频率为50HZ。
要求:Protues使软件间示波器显示方波。
三、实验程序1.将片外RAM3050-306FH中数据转移至片内70-8FH中ORG 0000H AJMP MAIN 上电,转向主程序ORG 0030H 主程序入口MAIN: MOV DPTR,#3050H 数据指针指向地址3050H MOV A,#04H 将立即数04H送A寄存器MOV R0,#20H NEXT: MOVX @DPTR,A INC DPTR 数据指针DPTR自加一DJNZ R0,NEXT 判断是否跳转到NEXT或继续向下执行MOV DPTR,#3050H MOV R0,#70H MOV R2,#20H NEXT1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R2,NEXT1SJMP $ 等待END 2.设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮ORG 0000H SJMP MAIN 上电,转向主程序ORG 0003H 外部中断0向量入口AJMP INSER ORG 0030H 主程序入口MAIN: SETB EX0 SETB IT0SETB EA CPUHERE: SJMP HERE ORG 0200H INSER: MOV R2,#08H MOV A,#01H NEXT: MOV P2,A LCALL DELAY RL A DJNZ R2,NEXT NEXT或继续向下执行RETI DELAY: MOV R3,#0FFH DEL2: MOV R4,#0FFH DEL1: NOP 允许外部中断0中断选择边沿触发方式开中断等待中断设置循环次数赋初值,设置高电平亮将初值送往P2口延时左移一位判断循环次数,是否跳转到中断返回延时程序DJNZ R4,DEL1 DJNZ R3,DEL2 RET END 3.将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术 ORG 0000H LJMP MAIN ORG 0030H主程序起始地址 MAIN: MOV 80H,#05H 将立即数50H转送内存单元80H MOV A,80H 将内存单元80H中的内容送寄存器A MOV DPTR,#TAB MOVC A,@A+DPTR A寄存器内容加指针偏移量后送A寄存器 MOV 80H,A RET TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H 4.1中断方式产生50HZ方波ORG 0000HAJMP MAINORG 0030H 主程序入口 MAIN: MOV TMOD,#10H 设置定时器工作模式为模式1 MOV TH1,#0D8H 装入T1计数初值MOV TL1,#0F0HSETB ET1 开中断SETB EA CPU开中断SETB TR1 启动定时器T1 HERE: SJMP HERE 等待中断ORG 001BH T1中断向量地址CLR TF1 将TF1清零CPL P2.0 P2.0取反输出MOV TH1,#0D8H 重装初值MOV TH0,#0F0HRETI;中断返回END 4.2 查询方式产生50HZ方波ORG 0000HAJMP MAINORG 0030H 主程序入口MAIN: MOV TMOD,#10H 设置定时器的工作模式为模式1 SETB TR1 启动定时器T1 LOOP: MOV TH1,#0D8H 装入T1计数初值MOV TH0,#0F0H JNB TF1,$ T1没有溢出则等待CLR TF1产生溢出,清标志位CPL P2.0 P2.0取反输出SJMP LOOP 循环END四、实验结果截图1.23.4.14.2第二篇:单片机实验报告实验四、中断交通灯实验林立强1000850116一、实验目的1、了解MCS-51单片机的组成、中断原理,中断处理过程、外部中断的中断方式。
实验一I/O口输入输出实验一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
五、实验参考程序;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
;//******************************************************************DIR BIT P3.0ORG 0000HLJMP STARTORG 0100HSTART:OUTPUT1:MOV A, #0FEHMOV R5, #8LOOP1: CLR CMOV C,DIRJC OUTPUT2MOV P1, ARL AACALL DELAYDJNZ R5, LOOP1SJMP OUTPUT1OUTPUT2:MOV A, #07FHMOV R5, #8LOOP2:CLR CMOV C,DIRJNC OUTPUT1MOV P1, ARR AACALL DELAYDJNZ R5,LOOP2SJMP OUTPUT2DELAY:MOV R6,#0DELAYLOOP1:MOV R7,#0DELAYLOOP2:NOPNOPDJNZ R7,DELAYLOOP2DJNZ R6,DELAYLOOP1RETEND六、实验结果当八位逻辑电平的K0拨到上方,即输出高电平时,实验箱B5区的八个LED灯从左至右循环点亮,当K0拨到下方,即输出低电平时,八个LED灯从右至左循环点亮。
单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil)4、下载器5、示波器6、万用表三、实验内容1、点亮 LED 灯通过编写简单的程序,控制单片机的引脚输出高低电平,从而点亮或熄灭连接在该引脚上的 LED 灯。
这是单片机最基础的操作之一,旨在熟悉单片机的编程环境和引脚控制方式。
2、数码管显示利用单片机驱动数码管,实现数字的显示。
需要了解数码管的工作原理和驱动方式,通过编程控制数码管的段选和位选信号,显示不同的数字。
3、按键输入设计按键电路,通过读取按键的状态,实现对单片机系统的输入控制。
例如,通过按键切换不同的显示模式或控制其他外部设备。
4、定时器/计数器应用使用单片机的定时器/计数器功能,实现定时、计数等操作。
例如,设计一个定时闪烁的 LED 灯,或者通过计数器统计外部脉冲的个数。
5、串口通信实现单片机与计算机之间的串口通信,将单片机采集到的数据发送到计算机上进行显示和处理,或者接收计算机发送的指令对单片机系统进行控制。
四、实验原理1、单片机的基本结构单片机通常由中央处理器(CPU)、存储器(包括程序存储器和数据存储器)、输入输出接口(I/O 口)、定时器/计数器、中断系统等部分组成。
2、编程语言本次实验采用 C 语言进行编程。
C 语言具有简洁、高效、可移植性强等优点,非常适合单片机的开发。
3、引脚功能单片机的引脚分为电源引脚、时钟引脚、复位引脚、I/O 引脚等。
通过对这些引脚的合理配置和控制,可以实现各种功能。
4、数码管驱动原理数码管分为共阴极和共阳极两种类型。
通过控制数码管的段选和位选信号,可以使数码管显示不同的数字和字符。
5、按键检测原理按键通常采用上拉电阻或下拉电阻的方式连接到单片机的I/O 引脚。
MSP430单片机期末设计报告课题名称:基于msp430单片机期末测试题起讫日期:14年6月23日- 14年6月27日学生学号:1200308132 1200308133 学生姓名:张玥梁尧报告成绩:中国计量学院信息工程学院生物医学工程专业目录一.实验仪器简介 (2)二.实验设计 (3)三.实验结果 (6)一:实验仪器简介MSP430单片机简介:MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。
德州仪器1996年到2000年初,先后推出了31x、32x、33x 等几个系列,这些系列具有LCD驱动模块,对提高系统的集成度较有利。
每一系列有ROM 型(C)、OTP 型(P)和 EPROM 型(E)等芯片。
EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。
这也表明了这几个系列的开发模式,即:用户可以用 EPROM 型开发样机;用OTP型进行小批量生产;而ROM 型适应大批量生产的产品。
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。
这些特点保证了可编制出高效率的源程序。
MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。
16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如FFT等)。
MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。
首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。
因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM保持模式下的最低功耗只有0.1μA。
《单片机原理与应用实验》指导书厦门理工学院光电与通信工程学院目录目录 (I)第一章概述 (1)第二章实验系统组成和结构 (4)§2.1 系统主机的硬件组成 ................................................................ 错误!未定义书签。
2.1.1 逻辑电平开关电路...................................... 错误!未定义书签。
2.1.2 LED电平显示电路....................................... 错误!未定义书签。
2.1.3单脉冲电路........................................... 错误!未定义书签。
2.1.4 音频放大电路........................................... 错误!未定义书签。
2.1.5 继电器输出电路........................................ 错误!未定义书签。
2.1.6 逻辑门电路............................................. 错误!未定义书签。
2.1.7 逻辑测量(逻辑笔)电路................................. 错误!未定义书签。
2.1.8 4MHz脉冲信号源和多级分频电路......................... 错误!未定义书签。
2.1.9 可调模拟量输入电路..................................... 错误!未定义书签。
2.1.10 六位LED数码显示器................................... 错误!未定义书签。
2.1.11 4×6 键盘电路......................................... 错误!未定义书签。
2014单片机课程设计报告要求:(1) 温度读取(2) LED数码管或LCD显示(3) 定时读取数据(4) 报警一、原理概述:STC89C52单片机为主控制器,用于处理采集的温度值以及相关报警值。
本设计采用DALLAS公司的DS18b20示。
二、实验设备:51STC89C52DS18B20 设计内容软件流程图设计方法:DS18B20特性• 独特的单线接口仅需一个端口引脚进行通讯• 简单的多点分布应用• 无需外部器件• 可通过数据线供电• 零待机功耗• 测温范围-55---+1250.5℃递增。
华氏器件-67---+2570.9℉递增• 温度以9 位数字量读出• 温度数字量转换时间200ms• 用户可定义的非易失性温度报警设置•• 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统温度传感器说明DS1820 数字温度计以9 位数字量的形式反映器件的温度值。
DS1820DS1820 之间仅需一源。
因为每个DS1820 所以多只DS1820 可以同时连在一根单线总HV AC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。
4位8段数压电式蜂鸣器是一种电声转换器件。
压电式蜂鸣器具有体积小、灵敏度高、耗电省、可靠点和良好的频率特性。
因此它广泛应用于各种电器产品的报警、发声用途。
最常见的莫过于音乐贺卡、电子手表、袖珍计算器、电子门铃和电子玩具等小型电子用品上作发声器件。
硬件原理图51单片机void tim(void) interrupt 1 using 1 //9个寄存器前两个就是温度a=ReadOneChar();。
单片机实验报告总结单片机实验报告总结单片机实验心得体会单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。
在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。
这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。
将所学知识运用到实践中,在实践中发现问题,强化理论知识。
现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。
第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。
第一次实验体现了一个人对新事物的接受能力和敏感度。
虽然之前做过许多种实验。
但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。
所以第一次试验相对失败。
鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。
在做实验中,第二个问题应该是准备不充分吧。
一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导致每次时间都有些仓促。
后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。
于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。
这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。
发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。
三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。
于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。
但是编程是一件很严肃的事情,容不得半点错误。
于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。
计算机硬件技术基础实验报告二班级_________姓名__________学号__________成绩_________在Keil环境下运行以下程序,查看相关内存数据单元,并完成相应的题目。
1.编写程序,两位压缩的BCD码转换成相应的ASCII码提示:算法1 ANL 拆字、ORL #30H 拼字算法2 DIV 拆字、 ORL #30H 拼字存储两位BCD数指压缩的BCD码占一个单元,相应的ASCII码占二个单元。
2.数据块传送程序:(1)把内部RAM 40H~4FH置初值0A0H~0AFH;(2)而后把40H~4FH内容传送到外部RAM 9800H~980FH中;(3)再把 9800H~980FH内容传送到 50H~5FH中。
ORG 0000HMAIN: MOV R0,#40HMOV R2,#10HMOV A,#0A0HA1: MOV @R0, AINC R0INC ADJNZ R2, A1; [1]解释本条命令含义(在程序中的作用)。
MOV R0, #40HMOV DPTR, #9800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2, A2; [2] 解释本条命令含义(在程序中的作用)。
MOV R0, #50HMOV DPTR, #9800HMOV R2, #10HA3: MOVX A, @DPTR; [3]为什么使用MOVX指令。
MOV @R0, AINC DPTRINC R0DJNZ R2, A3SJMP $END3.多字节十进制加法:加数放在30H开始的单元中(最低位放在30H,按从小到大的顺序存放),被加数和结果存放在20H开始的单元(最低位在20H中),字节数放在2FH中,最高进位位放在位地址7FH单元中。
(需要提前在30H开始的存储单元中存入数据,2FH存储单元中的数据说明了相加的字节数。
)注意:在数据存储器指定的单元中存入数据的方法方法一:在KEIL环境中,在右下角数据存储器中找到指定的单元,双击,在其中直接输入数据。
方法二:使用MOV为数据存储器指定的存储单元存入数据。
小心:不能使用DB或DW为数据存储器赋值。
DB和DW伪指令只能用于在程序存储器指定的单元中定义常数。
ORG 0000HMAIN: MOV R0, #30HMOV R1, #20HMOV 2FH,#04HCLR CDA1: MOV A,@R0ADDC A, @R1DA A; [4] 解释本条命令含义(在程序中的作用)。
MOV @R1, AINC R0INC R1DJNZ 2FH, DA1; [5] 解释本条命令含义(在程序中的作用)。
MOV 7FH, CSJMP $END4.字节逻辑运算程序在片内RAM 的FIRST 和SECOND 单元中各有一符号数X 和Y,要求按下列条件算出Z ,存入RESULT 单元中(设运算结果仍为8位数)。
注意:在程序运行前,首先在数据存储器30H 和31H 存储单元中存入数据,在32H 存储单元中读结果。
可参考上一题在数据存储器中存入数据的方法。
FIRST EQU 30HSECOND EQU 31HRESULT EQU 32HORG 0000HSTART :MOV R0,FIRSTMOV A , R0JB ACC.7, NEG; [6] 解释本条命令含义(在程序中的作用)。
MOV B, #2DIV ABMOV A, BJZ TEMP1; [7] 解释本条命令含义(在程序中的作用)。
MOV A,R0ADD A, SECONDSJMP RESTEMP1: MOV A, R0ANL A, SECONDSJMP RESNEG: CPL ACC.7MOV B, #2DIV ABMOV A, BJZ TEMP2; [8] 解释本条命令含义(在程序中的作用)。
MOV A, R0ORL A, SECOND; [9] 解释本条命令作用。
SJMP RESTEMP2: MOV A, R0XRL A, SECONDRES: MOV RESULT, ASJMP $ENDZ=5.位操作程序布尔电路图如下:注意:程序中00H,01H,02H,03H都是位地址,在片内数据存储器低128字节中的位寻址区中的20H单元中,分别对应20H.0, 20H.1, 20H.2, 20H.3 .程序运行前需在X,Y,Z中存入数据,用来验证F的输入结果是否正确。
即在20H.0, 20H.1, 20H.2,中存入数据,查看20H.3得到的结果是否正确,例如:X,Y,Z分别赋值为1、0、1, 20H 字节地址的其它位默认为0,则在右下角数据存储器20H字节地址中输入05(十六进制数),程序运行后,再次读取20H字节地址的内容,判断20H.3的值就是F对应的运算结果。
X BIT 00HY BIT 01HZ BIT 02HF BIT 03HORG 0000HSTART: MOV C, ZANL C, /YMOV F, CMOV C, YANL C, /ZORL C, FMOV F, CMOV C, XANL C, YORL C, /FMOV F, CSJMP $END[10]如果XYZ对应的值为1、1、0。
经过运算后,20H字节的内容为______.变量F的值为______.6.拆字程序把外部数据存储器2000H单元的内容拆开,其高四位送2001H低四位,低四位送2002H 低四位,2001H、2002H高四位清零。
需要检查2000H、2001H和2002H单元的内容。
注意:首先应该在片外数据存储器2000H存储单元中输入数据,在KEIL环境中右下角的存储器窗口地址栏中输入X:0x2000 ,然后在2000H单元中提前存入数据。
或者,在程序中用MOVX指令也可以给片外数据存储器2000H单元中存入数据。
程序清单:ORG 0000HMOV DPTR,#2000HMOVX A,@DPTRMOV B,ASWAP A; [11] 解释本条命令含义(在程序中的作用)。
ANL A,#0FH; [12] 解释本条命令含义(在程序中的作用)。
INC DPTRM OVX @DPTR,AI NC DPTRM OV A,BA NL A,#0FHMOVX @DPTR,AS JMP $END[13] 请说明你的输入数据及最后得到的结果。
程序框图7.拼字程序把外部数据存储器2000H、2001H单元的低四位分别送2002H高低四位。
需要察看2000H、2001H和2002H单元内容。
程序框图:程序清单注意:在程序运行前首先给片外数据存储器2000H、2001H单元中存入数据,可参考上一题。
ORG 0000HMOV DPTR,#2000HMOVX A,@DPTRANL A,#0FH; [14] 解释本条命令含义(在程序中的作用)。
SWAP AMOV B,AINC DPTRM OVX A,@DPTRA NL A,#0FHO RL A,BI NC DPTRMOVX @DPTR,ASJMP $END[15] 请说明你的输入数据及最后得到的结果。
8.十六进制数码将十六进制数据08H,0CH转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成十六进制数存入40H,41H两个单元中。
ORG 0000HMOV SP,#2FHMOV A,#08HADD A,#30HPUSH ACCMOV A,#0CHADD A,#37HPUSH ACCMOV A,30HINC ACLR CSUBB A,#30HMOV 40H,APOP ACCINC ASUBB A,#37HMOV 41H,APOP ACCSJMP $END[16] 程序运行结束后:(30H)=______,(31H)=________,(40H)=_________,(41H)=_________.9.二进制数码将二进制数10011011B转换成BCD码数,存入30H和31H单元中;再将30H单元中的数据加16H后,转换成二进制数据,存入40H单元中。
ORG 0000HMOV A,#10011011BMOV B,#100DIV ABMOV 30H,AMOV A,BMOV B,#10DIV ABSWAP AORL A,BMOV 31H,AMOV A,30HADD A,#16HDA APUSH ACCANL A,#00001111BMOV 40H,APOP ACCANL A,#11110000BSWAP AMOV B,#10MUL ABADD A,40HMOV 40H,ASJMP $END[17] 程序运行结束后:(30H)=______,(31H)=________,(40H)=_________.10.BCD码码将20H单元中压缩的BCD码数78H转换成ASCII码,转换结果存入30H,31H两个单元中,再将30H,31H两个单元中的数据分别增1,然后转换成压缩BCD码数存入21H 单元中。
注意:在程序运行前首先在20H存储单元中存入78H。
ORG 0000HMOV A,20HANL A,#00001111BADD A,#30HMOV 30H,APUSH ACCMOV A,20HANL A,#11110000BSWAP AADD A,#30HMOV 31H,AINC ACLR CSUBB A,#30HMOV R2,APOP ACCINC ACLR CSUBB A,#30HSWAP AORL A,R2MOV 21H,ASJMP $END[18] 程序运行结束后:(20H)=______,(21H)=________,(30H)=_________,(31H)=_________.11.双字节二进制数左移一位将两个内部RAM 31H和30H单元中的内容组成的双字节数通过C y左移一位。
功能示意图31H 30H注意:在程序运行前,首先在片内数据存储器30H和31H中存入数据。
程序清单ORG 0000HCLR CMOV A ,30HRLC AMOV 30H, AMOV A,31HRLC AMOV 31H, ASJMP $END[19] 请说明你在程序运行前在30H和31H存储单元中输入的数据,及程序运行后,30H和31H存储单元中得到的数据。
12.多字节二进制数右移一位将三个内部RAM 32H、31H和30H单元中的内容组成的三字节数通过C y右移一位。
功能示意图32H 31H 30H注意:在程序运行前,首先在片内数据存储器30H、31H、32H中存入数据。
程序清单ORG 0000HCLR CMOV A,32HRRC AMOV 32H,AMOV A,31HRRC AMOV 31H,AMOV A,30HRRC AMOV 30H,ASJMP $END[20] 请说明你在程序运行前在30H、31H和32H存储单元中输入的数据,及程序运行后,30H、31H和32H存储单元中得到的数据。