单片机 移位操作 软件实验2

实验五 移位操作
一、实验目的:
掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。

二、实验内容:
1.双字节二进制数左移一位
将两个内部RAM 31H 和30H 单元中的内容组成的双字节数通过C y 左移一位。

功能示意图
程序清单
赋初值:(30H)=A7H
(31H)=9CH
命令行
区域变化
备注
PC 指针 CLR C
给C 累加器清零 C:0x0000
MOV A ,30H
C:0x0001
RLC A
首位1给C 累加器
C:0x0003
MOV 30H, A
C:0x0004 MOV A,31H
C:0x0006
RLC A
C 累加器中1给其末位,其首位1再给C 累加器 C:0x0008 MOV 31H, A
C:0x0009
SJMP
$
C:0x000B
最终结果
(30H)=4EH (31H)=39H
2.多字节二进制数右移一位
将三个内部RAM 32H 、31H 和30H 单元中的内容组成的三字节数通过C y 右移一位。

功能示意图
C y 31H 30H 32H 31H C y 30H
程序清单
赋初值(32H)=9CH (31H)=A7H (30H)=4EH
命令行区域变化备注PC指针CLR C 给C累加器清零C:0x0000 MOV A,32H C:0x0001 RRC A 末位0给C累加器C:0x0003
MOV 32H,A C:0x0004 MOV A,31H C:0x0006
RRC A C累加器中0给其末
C:0x0008
位,其首位1再给C累
加器
MOV 31H,A C:0x0009 MOV A,30H C:0x000B
C:0x000D RRC A C累加器中1给其末
位,其首位0再给C累
加器
MOV 30H,A C:0x000E SJMP $ C:0x0010 最终结果(30H)=A7H (31H)=53H (32H)=4EH
三、思考题
1、多于三个字节的移位操作如何进行?
答:同理,通过C累加器,运用RRC或RLC命令实现移位操作。

若字节过多,可以加入循环。

详见实验七第一个程序段
2、如果不通过C y如何移位?实现的功能有何不同?
答:将RLC、RRC命令更改为RL、RR命令,这样就在不引起Cy变化的情况下进行移位操作了。

合集下载

掌握移位控制的功能及工作原理--实验报告

掌握移位控制的功能及工作原理--实验报告

实验二移位运算实验一、实验目的:掌握移位控制的功能及工作原理二、预习要求:1.了解8位双向移位寄存器74LS299的功能、引出端功能符号和管脚分配;2.预习移位运算电路的工作原理。

三、实验设备:EL-JY-II型计算机组成原理实验系统一套,排线若干。

四、电路组成:图2-1(a)GAL进位控制电路图2-1(b)移位电路本模块由逻辑控制单元(由一片GAL构成)U34和带三态输出的移位寄存器74LS299等组成。

74LS299具有并行接数、左移、右移、保持等功能,且具有三态输出。

其功能和管脚分配见表2-1和图2-2。

表2-1 74LS299的功能表图2-2(a)74LS299的管脚分配图2-2(b)74LS299引出端功能符号五、工作原理:移位运算实验电路的功能由S1、S0、M控制,具体功能见表2-2:表2-2六、实验内容:输入数据,利用移位寄存器74LS299控制进行移位。

七、实验步骤Ⅰ、单片机键盘操作方式实验。

注:在进行单片机键盘控制实验时,必须把K4开关置于“OFF”状态,否则系统处于自锁状态,无法进行实验。

实验连线:实验连线图如图2-3所示。

连线时应按如下方法:为了连线统一,对于横排座,应使排线插头上的箭头面向自己插在横排座上;对于竖排座,应使排线插头上的箭头面向左边插在竖排座上。

2.实验过程:在监控指示灯滚动显示【CLASS SELECt】时按【实验选择】键,显示【ES--_ _ 】输入02或2,按【确认】键,监控指示灯显示为【ES02】,表示准备进入实验二程序,也可按【取消】键来取消上一步操作,重新输入。

再按【确认】键,进入实验二程序,显示为【E1E0--】,提示输入299操作指令(参考表2-2,E1E0相当于299-G,二进制,“11”为关闭输出,“00”为允许输出),输入二进制数“11”,关闭输出,在输入过程中,可按【取消】键进行输入修改。

按【确认】键,监控指示灯显示【Lo=0】,可输入二进制数“0”或“1”,此处Lo相当于表2-2的M,即控制是否带进位进行移位,默认为“0”,不带进位移位。

移位控制实验报告总结

移位控制实验报告总结

一、实验背景移位控制是计算机组成原理中的重要内容,它涉及到数据在计算机中的处理方式。

本次实验旨在通过实验验证移位控制的组合功能,加深对移位运算原理的理解,并掌握移位运算器的实际应用。

二、实验目的1. 掌握移位运算的基本原理和操作方法。

2. 熟悉移位运算器的功能及其在计算机系统中的应用。

3. 培养动手实践能力和分析问题的能力。

三、实验原理移位运算器是计算机组成原理中的一种基本运算单元,主要用于实现二进制数的移位操作。

根据移位方向和操作方式的不同,移位运算可分为以下几种:1. 逻辑左移(SLL):将二进制数左移,高位补0。

2. 逻辑右移(SRL):将二进制数右移,高位补0。

3. 算术右移(SRA):将二进制数右移,高位保留符号位。

4. 循环左移(RLC):将二进制数左移,低位循环移入高位。

5. 循环右移(RRC):将二进制数右移,高位循环移入低位。

四、实验内容1. 实验器材:DE2-115计算机组成原理教学实验系统、QuartusII9.1 sp2软件、排线若干。

2. 实验步骤:(1)搭建移位运算器实验电路。

(2)设置初始数据,例如5A(01011010)。

(3)通过控制信号实现不同类型的移位运算。

(4)观察并记录移位结果,与理论值进行对比。

(5)分析实验结果,总结实验现象。

五、实验结果与分析1. 逻辑左移实验:将初始数据5A(01011010)进行逻辑左移,高位补0,得到结果202(00100100)。

实验结果与理论值一致。

2. 逻辑右移实验:将初始数据5A(01011010)进行逻辑右移,高位补0,得到结果2A(10110010)。

实验结果与理论值一致。

3. 算术右移实验:将初始数据5A(01011010)进行算术右移,高位保留符号位,得到结果2A(10110010)。

实验结果与理论值一致。

4. 循环左移实验:将初始数据5A(01011010)进行循环左移,低位循环移入高位,得到结果5A(01011010)。

实验二P1口控制LED发光二极管

实验二P1口控制LED发光二极管

实验二 P1口控制LED发光二极管一、实验目的1、进一步熟练Proteus及Keil软件的基本操作2、掌握8051单片机P1口的使用方法3、掌握LED发光二极管的原理及使用方法4、学习汇编程序的调试及仿真方法二、实验电路三、实验内容及步骤:要求:8个LED发光二极管循环左移显示(发光的移位),间隔时间为一秒。

1、使用Proteus画出电路原理图2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件3、进行Protues与Keil uVision联动的相关设置:4、在Proteus中仿真运行。

四、思考1、将本实验的实验现象改为“不发光二极管循环移位”。

2、将本实验的实验现象改为“每隔0.5秒发光二极管循环移位”。

参考程序:ORG 0LJMP MAINORG 30H MAIN: MOV A,#0FEH LOOP: MOV P1,ALCALL DELAYRL ASJMP LOOP DELAY: MOV R7,#20H DELAY1:MOV R6,#200 DELAY2:MOV R5,#123DJNZ R5,$DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND实验三数码管静态显示实验一、实验目的1、进一步熟悉51系列单片机2、了解8051单片机P0口的使用方法3、掌握共阴极数码管的原理及使用方法4、学习8051的编程、调试、编译、仿真。

二、实验电路图3 数码管静态显示电路原理图注:数码管要从元件库选择Optoelectronics类中的7SEG-COM-CAT-GRN。

三、要求及步骤:要求:在七段数码管上以递增方式循环显示数字0—9,间隔时间为一秒。

1、使用Proteus画出电路原理图2、在Keil uVision中完成程序编辑、调试及编译,生成.HEX文件3、进行Protues与Keil uVision联动的相关设置:4、在Proteus中仿真运行。

四、思考1、为什么要将P0口各引脚通过电阻R3-R9接到电源?2、如何在共阴数码管上循环显示十六进制数字0—F(不区分字母的大小写)?3、怎样修改程序使数字以递减方式循环显示?4、若用共阳极数码管应如何修改电路和程序,才能完成本实验的功能?参考程序:ORG 00HLJMP STARTORG 30HSTART: MOV DPTR,#TABLES1: MOV R4,#00HS2: MOV A,R4MOVC A,@A+DPTRMOV P0,ALCALL DELAYINC R4CJNE R4,#0AH,S2SJMP S1DELAY: MOV R5,#20 ;延时子程序D2: MOV R6,#200D1: MOV R7,#123DJNZ R7,$DJNZ R6,D1DJNZ R5,D2RETTABLE: DB 3FH,06H,5BH,4FH,66H ;段码表DB 6DH,7DH,07H,7FH,6FHEND实验四基本输入/输出实验一、实验目的1、进一步熟悉8051单片机并行I/O口的使用方法3、掌握并行I/O口输入/输出操作的方法4、学习8051的编程、调试、编译、仿真。

单片机 熟悉键盘操作及数传指令 软件实验2

单片机 熟悉键盘操作及数传指令 软件实验2

实验一熟悉键盘操作及数传指令编程设计一、实验目的1.熟悉软件模拟调试的环境及键盘操作。

2.掌握汇编语言程序设计的方法,加深对指令的理解。

3.学会软件模拟调试和察看修改观察项的方法。

二、实验内容印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。

三、实验步骤1.进入调试软件环境,输入源程序;2.汇编源程序;3.用单步方式运行程序;4.检查并记录各寄存器和存储单元内容的变化。

四、程序清单1.内部RAM数据传送需要查看的数据有30H,31H,A,R0等。

命令行区域变化PC指针MOV R0,#30H C:0x0000MOV 30H,#45H C:0x0002 MOV 31H,#46H C:0x0005 MOV R2,30H C:0x0008 MOV 02H,31H C:0x000A MOV A,#87H C:0x000D MOV 0E0H,30H C:0x000FMOV 30H,A C:0x0012 MOV 31H,@R0 C:0x0014 SJMP $ C:0x00162.外部数据传送需要查看的数据有外部数据存储器单元2000H,外部程序存储器单元2001H。

命令行区域变化PC指针MOV A,#89H C:0x0000MOV DPTR,#2000H C:0x0002 MOVX @DPTR,A C:0x0005 INC DPTR C:0x0006 CLR A C:0x0007MOVC A,@A+DPTR C:0x0008DB 44HDB 78HDB 67H3.堆栈操作需要查看的数据有50H、51H、A及SP指针和堆栈区中数据随PUSH和POP指令执行后的变化情况和数据的存放次序等。

1)可用于保护现场和恢复现场的程序命令行区域变化PC指针MOV SP,#5FH C:0x0000MOV 50H,#3BH C:0x0003 MOV 51H,#2FH C:0x0006 MOV A,#12H C:0x0009 PUSH 50H C:0x000BPUSH 51H C:0x000D PUSH ACC C:0x000F POP 0E0H C:0x0011 POP 51H C:0x0013 POP 50H C:0x00152)可用于数据交换的程序命令行区域变化PC指针MOV SP,#6FH C:0x0000MOV 50H,#3BH C:0x0003 MOV 51H,#2FH C:0x0006 PUSH 50H C:0x0009PUSH 51H C:0x000B POP 50H C:0x000D POP 51H C:0x000F4.数据交换记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。

单片机实验 软件使用指南

单片机实验 软件使用指南

单片机实验软件使用指南一、安装步骤1.将keil文件夹拷贝到C:或D:根目录下,进入文件夹安装后,自动生成桌面快捷方式;2.安装 SiC8051F_uv2.exe驱动程序。

二、操作要点1.点击Project(工程)菜单,选择New Project(新工程),在"文件名"中输入您的第一个程序项目名称,假定我们用"test"."保存"后的文件扩展名为uv2这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目.这时会弹出让你选择单片机型号的对话框,我们选择C8051F320.2.汇编源文件的建立:点击FILE(文件)菜单中的NEW...(新文件)命令新建一个文本编辑窗口,在里面输入一个程序范例。

然后点击FILE(文件)菜单中的SAVE(保存)命令保存文件,注意必须输入文件的后缀名.asm,例如保存为d:/prog/001.asm(注意不要有中文目录,文件名不超过8个字符, 否则编译不通过!建议直接保存在c盘的根目录,文件名同样取001.ASM, 不要试图把他保存在桌面/我的文档等等!)3.点击Target 1(目标1)前面的”+”,出现Source Group 1,(源程序组1)选中右键点选”Add files Group Source Group 1” (增加文件到源程序组1)这时选择文件类型为Asm,再选中001.asm文件,再按Add添加,在随后的提示框中按”确定”4.仿真部分在使用之前应必须对软件项目进行如下设置单击"Project"(工程)菜单,再在下拉菜单中单击"options for target target 1"(目标1属性)在下图中,单击"Target"(目标)输入仿真器的工作频率(12MHz)。

5.选择output(输出)”Create HEX file”(产生hex文件)的选项,以便汇编后生成HEX代码,供编程器使用.6.在"Debug"(调试)中点选"silicon laboratories c8051…",同时选中加载代码到仿真器,运行到main0,然后点击设置7.单击"Settings"(设置)选择USB通信方式(只有安装SiC8051F_uv2.exe 驱动程序才显示该选项)。

第一章单片机软件实验[002]

第一章单片机软件实验[002]

软件实验内容:软件实验一一、实验目的1.熟悉软件实验的大体步骤和汇编程序的调试方式;2.了解内存块的移动方式;3.了解将十六进制数转换成ASCII值的方式。

二、实验说明1、实验例程1给定某块存储器的起始地址和长度,要求能将其内容清零。

通过该例程让学生能够了解单片机读写存储器的方式,同时能够了解单片机的编程、调试方式。

2、块移动是单片机经常使用操作之一,多用于大量的数据复制和图象操作。

实验例程2是外部RAM之间的数据块移动。

将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去,用地址+1方式移动。

移动3000H起始的256个字节到4000H起始的256个字节。

三、实验内容及步骤例程1:1、启动PC机,打开KEIL软件(KEIL软件利用见附录一),软件设置为模拟调试状态。

在所建的Project文件中添加例程1的源程序进行编译,编译无误后,能够选择单步或跟踪执行方式或全速运行程序。

2、打开CPU窗口,观看CPU窗口各寄放器的转变。

打开View菜单中的Memory Window,能够观看内部RAM、外部RAM的数据和程序存储器中的程序。

在Address窗口输入X:8000H后回车,观看8000H-800FF起始的256个字节单元的内容,能够发觉这256个字节的内容都为1。

3、软件的调试进程,能够看到程序执行的进程和各寄放器的转变情形,加深对实验的了解,用户也可改变A的值,那输出的内容也会改变。

例程2:1、新建一个Project文件,添加例程2的源程序进行编译,编译无误后,能够选择单步或跟踪执行方式或全速运行程序。

2、打开View菜单中的Memory Window,在Address窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,通过比较,可观看到3000H起始的256个字节存储块与4000H 起始的256个字节存储块各单元内数据对应相同,说明存储块已移动。

单片机指令的移位操作探索单片机指令中的移位操作功能

单片机指令的移位操作探索单片机指令中的移位操作功能单片机指令的移位操作探寻单片机是一种集成电路,具有微处理器功能,常被用于嵌入式系统等应用中。

在单片机的指令集中,移位操作是一项常见的功能。

移位操作可以通过改变数据位的位置来实现对数据的处理和控制。

本文将探讨单片机指令中的移位操作功能,并介绍移位操作的类型及其应用场景。

1. 逻辑移位操作逻辑移位操作是指根据指令要求,通过在数据的位级别上进行移位操作,不考虑数据的符号位。

逻辑移位操作通常分为逻辑左移和逻辑右移两种操作。

1.1 逻辑左移逻辑左移是将数据在二进制表示下向左移动指定的位数,右侧补零。

逻辑左移操作可以实现乘以2的幂次方的运算,常用于乘法操作的替代。

例如,若将一个8位数据0xAC进行逻辑左移2位,则结果为0xB0。

移位前的二进制表示为10101100,移位后的二进制表示为10110000。

逻辑左移操作可以用单片机指令中的LSL(Logical Shift Left)指令来实现。

LSL指令的操作数可以是寄存器或内存中的数据。

逻辑右移是将数据在二进制表示下向右移动指定的位数,左侧补零。

逻辑右移操作可以实现除以2的幂次方的运算,常用于除法操作的替代。

例如,若将一个8位数据0xAC进行逻辑右移2位,则结果为0x2B。

移位前的二进制表示为10101100,移位后的二进制表示为00101011。

逻辑右移操作可以用单片机指令中的LSR(Logical Shift Right)指令来实现。

LSR指令的操作数可以是寄存器或内存中的数据。

2. 算术移位操作算术移位操作是指根据指令要求,在数据的位级别上进行移位操作,并保留数据的符号位。

算术移位操作通常分为算术左移和算术右移两种操作。

2.1 算术左移算术左移是将数据在二进制表示下向左移动指定的位数,右侧补零,并保留符号位。

算术左移操作可以实现乘以2的幂次方的运算,与逻辑左移相比,算术左移保留了符号位。

例如,若将一个8位数据0xAC进行算术左移2位,则结果为0xB0。

单片机 移位操作 软件实验

实验五移位操作一、实验目的:掌握移位操作的方法,并理解左移或右移与乘除法运算的关系。

二、实验内容:双字节二进制数左移一位将两个内部RAM 31H和30H单元中的内容组成的双字节数通过C y左移一位。

功能示意图31H 30H(30H)=36H (31H)=54HORG 0000HCLR C (Cy)=00H 1字节MOV A ,30H (A)=(30H)=36H 2字节RLC A (A)=6CH 1字节MOV 30H, A (30H)=(A)=6CH 2字节MOV A,31H (A)=(31H)=54H (PSW)=01H (P)=01H 2字节MOV 31H, A (31H)=(A)=A8H 2字节SJMP $END多字节二进制数右移一位将三个内部RAM 32H 、31H 和30H 单元中的内容组成的三字节数通过C y 右移一位。

功能示意图(30H)=13H (31H)=42H (32H)=56HORG 0000HCLR C (Cy)=00H 1字节MOV A,32H (A)=(32H)=56H 2字节RRC A (A)=2BH 1字节MOV 32H,A (32H)=(A)=2BH 2字节MOV A,31H (A)=(31H)=42H 2字节32H31H30HMOV 31H,A (31H)=(A)=21H 2字节MOV A,30H (A)=(30H)=13H (PSW)=01H (P)=01H 2字节RRC A (A)=09H (PSW)=80H (Cy)=01H (P)=00H 1字节MOV 30H,A (30H)=(A)=09H 2字节SJMP $END思考题1、多于三个字节的移位操作如何进行?答:同理,通过C累加器,运用RRC或RLC命令实现移位操作。

若字节过多,可以加入循环。

详见实验七第一个程序段2、如果不通过C y如何移位?实现的功能有何不同?答:将RLC、RRC命令更改为RL、RR命令,这样就在不引起Cy 变化的情况下进行移位操作了。

Freescale单片机实验指导书2【2024版】

一般性实验实验一普通I/O口操作实验实验目的:1、熟悉SDIDE开发环境,熟悉GP32基本程序结构2、理解Freescale MCU的编程框架3、熟悉编程调试环境,编译、调试、下载运行第一个程序4、掌握I/O的基本编程方法范例程序:① A01_简单IO及程序框架\ FrmMain.ASM② C01_简单IO及程序框架\纯C\prgframe.prj③ C01_简单IO及程序框架\C&ASM混编\prgframe.prj实验要求:1、参看教材6.4节,熟悉实验板结构2、运行并读懂教材第7章的关于I/O口操作的LED灯控制程序3、按下列要求新建一程序:根据PB口低2位(PTB1和PTB0)的状态输出四种不同的LED显示效果,要求用最简洁的语句实现以下各效果。

(1)PTB1=0,PTB0=0时,效果为:8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。

(效果1)(2)PTB1=0,PTB0=1时,效果为:8个LED中只有两个连在一起的灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。

(效果2)(3)PTB1=1,PTB0=0时,效果为:8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约8秒。

(效果3)(4)PTB1=1,PTB0=1时,效果自定。

(效果4)实验二串行通信实验实验目的:1、理解串行通信基本原理,掌握MCU串行通信基本编程方法2、理解串行通信的查询方式和中断方式原理及其编程范例程序:1、C02_1串行通信查询方式\ H08SCI_1.prj2、C02_2串行通信中断方式\ H08SCI_2.prj3、A02_1串行通信查询方式\ SCIMain1.asm4、A02_2串行通信中断方式\ SCIMain2.asm5、以上四目录都有VB_SCI目录,该目录是对应Visual Basic6.0程序,运行在PC方,用来接收和发送数据。

实验二 数据块移动

实验二数据块移动一、实训目的1、掌握CPU对单片机片内和片外寻址方式的使用方法。

2、熟练掌握用几种不同的方法调试、运行程序。

二、实训内容块的移动是单片机常见操作之一,多用于大量的数据复制和图像操作。

本程序是编制数据搬家程序,要求先将单片机内部RAM的20H~2FH单元分别设置为00H、01H、……0FH;然后将单片机内部RAM的20H~2FH单元的数据搬到外部RAM的1000H~100FH单元中去。

三、程序流程四、实训参考程序ORG 0000HLJMP MOVEORG 0030HMOVE:MOV R0,#20H设置块的源地址返回设置块的目标地址设置移动长度从源地址取数保存到目标地址源地址加1目标地址加1是否移动完?NYMOV R2,#10HMOV A,#00HM1:MOV @R0,AINC R0INC ADJNZ R2,M1 ;将片内RAM的20H-2FH单元分别设置为00H-0FH★ MOV R0,#20HMOV DPTR,#1000HMOV R2,#10HM2:MOV A, @R0MOVX @DPTR,AINC R0INC DPTR ;将片内RAM的20H-2FH单元数据搬到DJNZ R2,M2 片外RAM的1000H-100FH单元LJMP 0030HEND五、程序调试步骤(1)建立一个工程项目文件:在Kile uVision2仿真软件中,执行菜单【Project】/【New project】,给项目文件取名并保存,选择单片机型号为AT89C51;(2)选择目标器件:右键Target1-Options for Target“ Target1”或选择【 Project】/ 【Options for Target“Target1”】对选项卡进行设置,在“Output”选项卡,选中“Create HEX File”;(3)新建一个源程序文件:在菜单File/New编辑窗口中输入源程序,在菜单File/Save中保存源程序文件,文件后缀为.asm;(4)把源程序文件添加到工程项目中单击工程项目【Target1】/【Source Group1】选择Add File to Group Source Group1,选择文件类型Asm Source File-单击Add按钮,添加完毕,关闭窗口;(5)编译程序选择【Project】/【Rebuild all target files】选项或单击工具栏中按钮,如果编译成功,显示编译成功的信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档