文档库 最新最全的文档下载
当前位置:文档库 › PLC清零程序实验

PLC清零程序实验

PLC清零程序实验
PLC清零程序实验

实验一:清零程序实验:

一、实验目的:

1、掌握单片机的内部存储器在逻辑上的结构。

2、掌握如何对单片机内部,外部存储器RAM中所存的内容进行清零及编程方法。

二、实验内容:

将外部存储器RAM 2000H~20FFH中的内容清零。

三、实验程序框图:

四、实验步骤:

⑴.运行仿真调试环境,打开文件编辑窗口:

⑵.进行编辑源文件。

⑶.保存你所编辑的源文件,并进行编译。即点击图标,

如果你是新文件,屏幕会提示以下信息

点击“YES”屏幕显示以下信息

这时,你应该输入你相要保存文件的文件名。注意:文件名的长度不能超过8个字符;同时也不能用中文名字存文件名,否则编译器会照不到连接文件而发生编译错误(这是只要因为该编译系统调用国外编译软件进行编译的的原因)。

如果文件编写正确则提示如下信息:表明编译没有警告和错误;连接没有警告和错误。

上述步骤完成后,屏幕会自动弹出调试窗口。

其中:

* 表示当前PC指针所在的位置。

上图中图标,表示断点所在的位置,上图中设置了两个断点;即当程序运行到断点处就停下来,并将当前运行的结果,在寄存器或数据窗口中显示出来。

⑷.查看寄存器窗口信息,可以按下图打开寄存器窗口。

点击寄存器栏便可观察寄存器窗口的内容,按照同样的方法可打开其他窗口的信息,如数据窗

口等。按图标会对所打开的窗口进行重新排列。垂直、水平、或卡片式排列。

⑸.调试与运行,用连续或单步不同方式运行程序,在运行图标时,即

进入全速运行状态,遇到断点时便停下来,并刷新当前所运行的结果,在所对应的窗口上显示出来。

运行图标,便进入单步运行状态,该图标表示在遇到CALL指令时会进入到CALL调用的子程序内部;该图标表示在遇到CALL指令时,把所调用的CALL子程序作为一条执行语句执行;学会上述的操作方法后便可进入你所相要做的工作了。这时你也会查看或检查2000~20FFH中执行程序前后的内容变化。

五、思考:假使把2000H~20FFH中的内容改成FF,如何修改程序。

六、程序清单:

5、实验报告要求:

1、写出实验目的、内容及程序框图

2、写出实验指导书思考题的源程序。

3、写出程序前5次循环以下个寄存器的值。

实验一 Keil软件的使用及简单程序的调试方法

实验一 Keil软件的使用及简单程序的调试方法 一、实验目的 掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。 二、实验器材 计算机1台 三、实验内容 1.Keil的使用方法。 2.建立一个单片机汇编语言程序的调试过程及方法 四、实验步骤 1.Keil的使用方法。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。启动Keil 后的界面如下: 几秒钟后即进入Keil的编辑界面。用户便可建立项目及应用程序。 2.简单程序的调试方法 Keil是通过项目工程来管理汇编程序的。因此在调试程序前必须建立一个工程,工程

名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。 (1)建立一工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项。并在弹出的对话框中确定保存的位置及工程名称。 又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。选择Atmel公司的AT89C51单片机。如下图所示 单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。 (2)建一文件 单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。如下图所示。

微机原理实验报告清零程序

竭诚为您提供优质文档/双击可除微机原理实验报告清零程序 篇一:微机原理实验报告 微机原理与应用课程实验报告 实验分工: 报告人 同组人 实验时间:20XX.12.10 课程设计 一、题目要求 (1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据; (2)将上述源区内容传送到目的内存区2(首址为1100h)中; (3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节 开始写入AscII码“eRRoR”,否则写入“oK”。 (4)用冒泡法将上述内存区2的数据,按从小到大的

次序重新排列,排列后存放在内存区3(开始地址为2100h)。 (5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。 二、实验程序框图 三、程序代码 codesegment assumecs:code DATA1db16dup(?) DATA2dbeRRoR DATA3dboK ;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start: movax,0100h;规定目标程序存放单元的偏移量 movds,ax;数据段地址 moves,ax movsi,offsetDATA1;偏移地址 movcx,0010h;循环次数 movbx,0100h moval,ofh s1:

movcs:[si],al mov[bx],cs:[si] incsi incbx decal loops1 nop ;将内存区1数据搬移到内存区2中 movcx,16 movsi,0100h movbx,1100h s2: moval,[si] mov[bx],al incbx loops2 nop ;对比内存区1的数据与内存区2的数据是否相同mov cx,16 movsi,0100h movbx,1100h comp:

实验一-Keil软件的使用及简单程序的调试方法

实验一Keil软件的使用及简单程序的调试方法 一、实验目的 掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。 二、实验器材 计算机1台 三、实验内容 1.Keil的使用方法。 2.建立一个单片机汇编语言程序的调试过程及方法 四、实验步骤 1.Keil的使用方法。Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。启动Keil 后的界面如下:

几秒钟后即进入Keil的编辑界面。用户便可建立项目及应用程序。 2.简单程序的调试方法 Keil是通过项目工程来管理汇编程序的。因此在调试程序前必须建立一个工程,工程名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。 (1)建立一工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项。并在弹出的对话框中确定保存的位置及工程名称。 又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。选择Atmel公司的AT89C51单片机。如下图所示

单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。 (2)建一文件 单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。如下图所示。 (3)将文件添加到工程中 单击“T arget 1”前的“+”号则展开后变成“-”号,并右键单击“Source Group 1”在弹出的下拉菜单中执行“Add Files to Group ‘Source Group 1’”命令并弹出对话框在该对话框中的“文件类型”下拉列表中选择“Asm source file”后找到要添加的文件名并选中,单击“Add”即可。

实验一清零程序

实验一清零程序 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

实验一清零程序 一、实验目的: 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容:把2000H~20FFH 的内容清零。 三、实验程序框图 四、实验步骤: 用连续或单步方式运行程序,检查2000~20FF 中执行程序 前后的内容变化。 五、思考:假使把1000H~10FFH 中的内容改成FF,如何修改程序,请分别 用连续和单步方式运行程序来完成校验证 六、程序清单

(1)基本程序(文件名) ORG 0000H LJMP SE01 ORG 0640H SE01: MOV R0,#00H ;(00H)送R0,R0 为计数器 MOV DPTR,#2000H ;(2000H)送DPTR LOO1: CLR A ;累加器A 清零 MOVX @DPTR,A ;存储空间内容清零 INC DPTR ;DPTR 加1 INC R0 ;R0 加1 CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环LOOP: SJMP LOOP END 七、思考:假使把1000H~10FFH 中的内容改成FF程序如下:ORG 0000H LJMP SE01 ORG 0640H SE01: MOV R0,#00H ;(00H)送R0,R0 为计数器 MOV DPTR,#1000H ;(2000H)送DPTR LOO1: MOV A,#FF;累加器A 置FF MOVX @DPTR,A ;存储空间内容置FF INC DPTR ;DPTR 加1

51单片机实验程序

333。(x为0x2~+x39的整数)用查表方式编写y=x1 + #include void main() { 将对应的每位数字的三次方的值0~9code int a[10]={0,1,8,27,64,125,216,343,512,729};// 存入中,为程序存储器,当所存的值在或之间的话就用,charcode0~255code-128~+127而现在的值明显超过这个范围,用较合适。的范围是或。0~65535int-32768~32767int此处定义根据习惯,也可写成但是变量一定要用来int char x1,x2,x3 int y,x1,x2,x3;//y定义。 x1=2; x2=4; 三个的值是自定的,只要是当中的数值皆可,也可重复。//x1,x2,x30~9 x3=9; y=a[x1]+a[x2]+a[x3]; 单片机的程序不能停,这步就相当于无限循环的指令,循环的内容为空白。// while(1);} 结果的查询在软件内部,在仿真界面点击右下角(一般初始位置是右下角)的Keilvision//的框架内双击“”文字输入后按回车,右侧会显示其进16watchdouble-click or F2 to addy制数值如,鼠标右键该十六进制,选择第一行的可查看对应的进制数。0x3410decimal, 1、有10个8位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的数据(1的个数为偶数)都要存到内RAM50H开始的数据区中。试编写有关程序。 #include void main() { 将所要处理的值存入中,这些可以根据RAM int a[10]={0,1,5,20,24,54,64,88,101,105};// 个人随意设定,但建议不要超过的范围。0~255定义一个变量//char i; 定义一个指针指向内部这个地址。*q char *q=0x50; //0x50 循环,共十次,也可以用for(i=0;i<10;i++) for(i=9;i>=0;i--)//9~0 { 将的值赋给累加器ACC a[i]ACC=a[i];// 位上的奇偶校验位,如果累加器内数值的个数为偶数那么1//PSW0ACC if (P==0)为,若为奇数,为。这里的是大写的。0PPP1{ *q=a[i]; 每赋一个值,指针挪一个位置指向下一个。q++;// } } 同实验一,程序不能停。// while(1);} 3.有10个8位带符号二进制数,请将10个数按从小到大的顺序排列,并存到内RAM50H开始的单元中。 #include void main() { 将所有值存入中,因为有负RAM;// char data a[10]={-50,-36,0,-128,1,99,127,89,-89,40}

实验的基本程序

1、单组实验的基本程序 前测→实验处理→后测 比较方法:前测-后测 例:某新的记忆方法对于提高中学生英语单词记忆效果的影响 实验假设:某新的记忆方法对提高中学生英语单词记忆有好的效果。 实验处理:在英语课上,教师运用新的记忆方法教授单词。 样本:高一年级一个班学生。 因变量测定:高一英语学习成绩测验。 实验设计:单组前后测 前测:在传统教学法下,对学生进行测试。 后测:使用新的记忆方法教学后进行测试。 这种实验操作程序比较简单,不用考虑实验班和对比班的同质性。如果采用新方法前,实验班平均成绩是80分,采用新方法后,测试成绩为90分。这样,前后测比较,成绩提高了10分,说明实验假设成立,即新的记忆方法对提高中学生英语单词记忆有好的效果。

2、等组实验的基本程序 实验组:前测1→有实验处理→后测1 对照组:前测2→无实验处理→后测2 比较方法:(后测1-前测1)-(后测2-前测2) 例:语文教学中,阅读技巧训练对于提高学生学习的影响 实验假设:语文教学中,阅读技巧训练有助于提高学生学习成绩。 实验处理1:实验班的语文教学中,在学生阅读材料前,教师讲解阅读技巧。 实验处理2:对照班的语文教学中,学生阅读同样的材料,但阅读前教师不讲解阅读技巧。 样本:在高一学生中随机抽取100名学生,随机编为两个班,其中一个为实验班,另一个为对照班。 因变量测试:高一学生语文成绩测试。 实验设计:前后测对照组设计 前测:实验班和对照班在使用新方法前进行测试。 后测:实验班在采用阅读技巧训练一个月后进行测试,对照班在相应的时间进行测试。 条件控制:1.同一教师进行教学。2.教学内容、作业量相同。3.学生学习语文时间总量相同。

北京交通大学单片机实验程序报告

单片机实验程序

实验二8155并行I/O口扩展和动态扫描程序编制 1.实验目的 (1)掌握8155并行I/O芯片扩展和使用方法 (2)掌握数码管动态扫描汇编语言的编制方法 2.预习要点 (1)8155芯片基础知识 (2)51单片机的总线时序、地址译码的原理 (3)数码管动态扫描显示方法 3.实验设备 计算机、单片机实验箱。 4.实验内容 基本要求: 通过实验板的上的8155(U16)显示电路(在电路板上已经固定连接字形和字位控制线的8155部分),并通过跳线确定8155的地址,在8个LED数码管上依次动态显示数字1~8。 扩展要求: 假定30H~33H的存储单元内容为4个字节16进制数,请依序将他们显示在8个LED数码管上 根据程序要求做如下程序流程图: 主程序流程图:

显示子程序流程框图: 基本要求编程如下: ORG 0000H

AJMP MAIN ORG 0050H MAIN: MOV SP,#60H ;压栈 MOV DPTR, #4100H MOV A,#0FH ;方式控制字0FH送A MOVX @DPTR, A ;8155初始化 MOV 70H,#01H ;设置显示缓冲区 MOV 71H,#02H MOV 72H,#03H MOV 73H,#04H MOV 74H,#05H MOV 75H,#06H MOV 76H,#07H MOV 77H,#08H LOOP: ACALL DISPLAY ;循环调用显示子程序AJMP LOOP DISPLAY: MOV R0,#70H ;显示缓冲区首地址送R0 MOV R3,#0FEH ;字位控制初值送R3

试验项目试验一最简单的C程序设计

试验项目试验一最简单的C程序设计

实验项目:实验一最简单的C程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。 2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。 3.掌握顺序结构程序设计的基本思路。 二、实验条件 Pc和vc++编程环境 三、实验内容 1.熟悉编程环境。 2.输入并运行一个C程序 3.掌握各种格式转换符的正确使用方法。 4.编程序:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。要求用scanf函数从键盘上输入数据(半径和高),输出各计算结果,输出时要求有文字说明,取小数点后2位数字。5.编程序:用getchar函数输入两个字符给C1、C2,然后分别用putchar函数和printf函数输出这两个字符。 四、实验步骤 编写程序,输入数据,观察结果。

五、实验结果 观察结果和预期是否一致。 实验项目:实验二选择结构程序设计 (所属课程:《C语言程序设计》学时:2) 一、实验目的 1.了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。 2.学会正确使用逻辑运算符和逻辑表示式。 3.熟练掌握if语句和switch语句 二、实验条件 Pc和vc++编程环境 三、实验内容

1.有一函数: ?????≥-<≤-<=)10x (113x ) 10x 1(12x )1x (x y 用scanf 函数输入x 的值,求y 值。 运行程序,输入x 的值(分别为x<1、1≤x <10、x ≥10三种情况),检查输出的y 值是否正确。 2.给出一个百分制成绩,要求输出成绩等级A 、B 、C 、D 、E 。90分以上为A ,81~89分为B ,71~79分为C ,61~69分为D ,60分以下为E 。 3.输入4个整数,要求按由小到大顺序输出。 四、实验步骤 编写程序,输入数据,观察结果。 五、实验结果 观察结果和预期是否一致。 实验项目:实验三 循环结构程序设计

单片机软件实验1-清零实验

单片机软件实验1-清零实验

姓名:学号:班级: 同组人:指导老师:报告日期: 软件设计实验1:清零实验 ?实验目的: 掌握汇编语言设计和调试方法。 ?实验内容: 使用AT89C52单片机对单片机内部RAM进行清零操作,实验内容如下: 1.把 90H-AFH的内容置为#55H; 2.把90H-9FH的内容清零。 ?实验问答: 1.清零之后,90H-9FH的内容是什么?A0H-AFH的内容是什么? 答:90H-9FH内容:00H; A0H-AFH:#55H

2.累加器A、堆栈指针SP的初始状态是什么? 答: 累加器A:00H,堆栈指针SP:07H。?实验程序:

======================== ======================== $NOMOD51 $INCLUDE (80C52.MCU) ;======================= ======================== ; DEFINITIONS ;======================= ======================== ;======================= ======================== ; VARIABLES ;======================= ======================== ;======================= ======================== ; RESET and INTERRUPT Loop: jmp Loop ;======================= ======================== END

单片机实验答案

前言 由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在仪器仪表智能化、实时工业控制、实时数据采集、智能终端、通信设备、导航系统、家用电器等控制应用领域,具有十分广泛的用途。目前在国内单片机应用中,MCS-51系列单片机仍然是一种主流单片机。为配合《单片机应用技术》课程的教学,使学生尽快了解、掌握89C51单片机的使用,特编写了这本上机指导书(基础篇)。 《单片机》是一门实践性很强的课程,提高教学质量的一个重要环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的。本实验指导书提供了9个实验的指导性材料,实验还有一些思考题,可以根据课时的安排和教学要求进行取舍。为了达到某些实验的目的,书中提供的参考程序与实际应用中的程序会有些差别,所以不一定是最优的。 由于时间紧迫,加上编者学识有限,如有不妥之处,欢迎读者批评指正。 编者

实验须知 1. 实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备工作,编写好实验中要求自编或修改的程序;完成实验前要求完成的准备工作后方可以上机实验,否则不得上机操作。 2. 各种电源的电压和极性不能接错,严禁带电接线和接插元器件。通电前须经过指导教师检查认可后方能通电。 3. 不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全。 4. 严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿芯片。 5. 实验中若损坏仪器或元器件,应及时向指导教师报告,听候处理。 6. 在实验室内保持安静和卫生,不得随意走动和喧哗,集中精力完成实验。 7. 实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁。 8. 按规定认真完成实验报告,对实验中出现的现象进行分析,在规定的时间内交上实验报告。 9. 凡实验或实验报告未能按规定完成的学生,不能参加本课程的考试或考查。

实验3 子程序实验

实验三子程序实验 一.实验目的 1.掌握主程序与子程序之间的调用关系及调用方法; 2.掌握子程序调用过程中近程调用与远程调用的区别; 3.掌握通过堆栈转送参数的方法。 二.实验内容 1.将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。 2.编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。 三.实验要求 1.第一个实验程序用子程序的近程调用实现。由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执行中,检查CS值是不变的。 2.第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。 3.第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。 4.预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图;熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。 四.实验环境 PC微机 DOS操作系统或Windows 操作系统 MASM.EXE,LINK.EXE,https://www.wendangku.net/doc/7810980268.html,或宏汇编集成环境 五.实验步骤 1.编辑、汇编两个源程序,生成相应的可执行文件(.EXE) 实验一 ;CONV.ASM DATA SEGMENT

实验一清零程序

实验一清零程序 一、实验目的: 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容:把2000H~20FFH 的内容清零。 三、实验程序框图 四、实验步骤: 用连续或单步方式运行程序,检查2000~20FF 中执行程序前后的内容变化。 五、思考:假使把1000H~10FFH 中的内容改成FF,如何修改程序,请分别用连续和单步方式运行程序来完成校验证 六、程序清单 (1)基本程序(文件名SW01.ASM) ORG 0000H

LJMP SE01 ORG 0640H SE01: MOV R0,#00H ;(00H)送R0,R0 为计数器 MOV DPTR,#2000H ;(2000H)送DPTR LOO1: CLR A ;累加器A 清零 MOVX DPTR,A ;存储空间内容清零 INC DPTR ;DPTR 加1 INC R0 ;R0 加1 CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环 LOOP: SJMP LOOP END 七、思考:假使把1000H~10FFH 中的内容改成FF程序如下: ORG 0000H LJMP SE01 ORG 0640H SE01: MOV R0,#00H ;(00H)送R0,R0 为计数器 MOV DPTR,#1000H ;(2000H)送DPTR LOO1: MOV A,#FF;累加器A 置FF MOVX DPTR,A ;存储空间内容置FF INC DPTR ;DPTR 加1 INC R0 ;R0 加1 CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环 LOOP: SJMP LOOP END 现象:运行第一条程序可以发现1000H~10FFH 中的内容变成FF,运行第二条程序1000H~10FFH 中的内容改成00.而其它单元的内容不变。 心得:该实验的内容比较简单。

单片机实验程序

一 #include #include #define uchar unsigned char sbit H1=P3^6; sbit H2=P3^7; sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff}; tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f}; tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f}; void Delay1s() //@11.0592MHz { unsigned char i,j,k; for(i=10;i>0;i--) for(j=200;j>0;j--) for(k=250;k>0;k--) } void delay20ms() { unsigned char i,j; for(i=100;i>0;i--) for(j=60;j>0;j--); } void flick() { uchar d; while(d<=2) { P2=0x00; P3=0xc3; Delay1s(); P2=0xff; P3=0xff; Delay1s(); d++; } } void main() { uchar b,y,n; flick();

面B实验程序完整版

第一次实验

四.实验源程序及实验结果 #include #include using namespace std; class CTeacher; class CStudent //学生类 { public: CStudent(int ,string ,double ); friend void Display(CStudent &); //定义友元函数 friend CTeacher; //定义友元类 private: int ID; //学号 string Name; //姓名 double Score; //成绩 }; CStudent::CStudent(int a1,string a2,double a3): ID(a1),Name(a2),Score(a3) {} //构造函数初始化数据成员 void Display(CStudent &a) //输出姓名、成绩、等级 { int d; d=a.Score/10; cout<

实验一调试程序DEBUG的使用实验报告

南昌理工学院实验报告 二O一二年月日 课程名称:微机原理与接口技术实验名称:调试程序DEBUG的使用班级:姓名:同组人: 指导教师评定:签名: 【一、实验名称】 调试程序DEBUG的使用 【二、实验目的】 1.掌握汇编程序的编辑,编译,连接和执行的全过程; 2.学习和掌握用DEBUG 调试程序的方法。 【三、实验内容和原理】 1.用编辑软件,输入以下汇编语言源程序: DAT SEGMENT A D B 20 ;(自定) B DB 15 ;(自定) Y DB 3 DUP(0) Z DB 0,0 DAT ENDS STA SEGMENT STACK DW 50 DUP(?) STA ENDS COD SEGMENT ASSUME CS:COD,DS:DAT STAR PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AL,A MOV Z,AL MOV Z+1,AL CALL SUB1 MOV AL,B MOV Z,AL MOV Z+1,AL CALL SUB1 MOV AL,A MOV Z,AL MOV AL,B MOV Z+1,AL CALL SUB1 ADD WORD PTR Y,AX ADC BYTE PTR[Y+2],0 RET STAR ENDP SUB1 PROC MOV AL,Z MOV AH,Z+1 MUL AH ADD WORD PTR Y,AX ADC BYTE PTR[Y+2],0 RET SUB1 ENDP COD ENDS END STAR

实验一清零程序

实验一清零程序-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

实验一清零程序 一、实验目的: 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容:把2000H~20FFH 的内容清零。 三、实验程序框图 四、实验步骤: 用连续或单步方式运行程序,检查2000~20FF 中执行程序前后的内容变化。 五、思考:假使把1000H~10FFH 中的内容改成FF,如何修改程序,请分别用连续和单步方式运行程序来完成校验证 六、程序清单 (1)基本程序(文件名) ORG 0000H LJMP SE01 ORG 0640H SE01: MOV R0,#00H ;(00H)送R0,R0 为计数器 MOV DPTR,#2000H ;(2000H)送DPTR LOO1: CLR A ;累加器A 清零 MOVX @DPTR,A ;存储空间内容清零 INC DPTR ;DPTR 加1 INC R0 ;R0 加1 CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环

LOOP: SJMP LOOP END 七、思考:假使把1000H~10FFH 中的内容改成FF程序如下: ORG 0000H LJMP SE01 ORG 0640H SE01: MOV R0,#00H ;(00H)送R0,R0 为计数器 MOV DPTR,#1000H ;(2000H)送DPTR LOO1: MOV A,#FF;累加器A 置FF MOVX @DPTR,A ;存储空间内容置FF INC DPTR ;DPTR 加1 INC R0 ;R0 加1 CJNE R0,#FFH,LOO1 ;若R0 不等于00,则跳转至LOO1 继续循环 LOOP: SJMP LOOP END 现象:运行第一条程序可以发现1000H~10FFH 中的内容变成FF,运行第二条程序1000H~10FFH 中的内容改成00.而其它单元的内容不变。 心得:该实验的内容比较简单。

实验二含异步清零和同步使能的加法计数器

实验二含异步清零和同步使能的加法计数器 一、实验目的 1、了解二进制计数器的工作原理。 2、进一步熟悉QUARTUSII软件的使用方法和VHDL输入。 3、时钟在编程过程中的作用。 二、实验原理 二进制计数器中应用最多、功能最全的计数器之一,含异步清零和同步使能的加法计数器的具体工作过程如下: 在时钟上升沿的情况下,检测使能端是否允许计数,如果允许计数(定义使能端高电平有效)则开始计数,否则一直检测使能端信号。在计数过程中再检测复位信号是否有效(低电平有效),当复位信号起作用时,使计数值清零,继续进行检测和计数。 其工作时序如图3-1所示: 图3-1 计数器的工作时序 三、实验内容 本实验要求完成的任务是在时钟信号的作用下,通过使能端和复位信号来完成加法计数器的计数。实验中时钟信号使用数字时钟源模块的1HZ信号,用一位拨动开关K1表示使能端信号,用复位开关S1表示复位信号,用LED模块的LED1~LED11来表示计数的二进制结果。实验LED亮表示对应的位为‘1’,LED灭表示对应的位为‘0’。通过输入不同的值模拟计数器的工作时序,观察计数的结果。实验箱中的拨动开关、与FPGA的接口电路,LED灯与FPGA的接口电路以及拨动开关、LED与FPGA的管脚连接在实验一中都做了详细说明,这里不在赘述。 数字时钟信号模块的电路原理如图3-2所示,表3-1是其时钟输出与FPGA的管脚连接表。

图3-2 数字时钟信号模块电路原理 信号名称对应FPGA管脚名说明 DIGITAL-CLK A14数字时钟信号送至FPGA的A14 表3-1 数字时钟输出与FPGA的管脚连接表 按键开关模块的电路原理如图3-3所示,表3-2是按键开关的输出与FPGA的管脚连接表。 图3-3 按键开关模块电路原理 信号名称FPGA I/O名称核心板接口管脚号功能说明S[0]PIN_AF5JP1_91‘S1’ Switch S[1]PIN_AH6JP1_93‘S2’ Switch S[2]PIN_AH7JP1_95‘S3’ Switch S[3]PIN_AH8JP1_97‘S4’ Switch S[4]PIN_AG10JP1_99‘S5’ Switch S[5]PIN_AG11JP1_101‘S6’ Switch S[6]PIN_AH14JP1_90‘S7’ Switch S[7]PIN_AG7JP1_92‘S8’ Switch

单片机试验源程序文件

单片机实验指导书(实验源程序)

实验二、三 I/O接口实验 1、输出实验 例1: ORG 0000H AJMP START ;跳转到初始化程序 ORG 0033H ;----- 主程序开始 ----- START: MOV P1,#0FFH ;是所有LED熄灭 ACALL DELAY ;调用延时子程序 CLR P1.0 ;P1.0输出低电平,使LED3点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED3熄灭 CLR P1.1 ;P1.1输出低电平,使LED4点亮 ACALL DELAY ;调用延时子程序 SETB P1.1 ;P1.1输出高电平,使LED4熄灭 CLR P1.2 ;P1.2输出低电平,使LED5点亮 ACALL DELAY ;调用延时子程序 SETB P1.2 ;P1.2输出高电平,使LED5熄灭 CLR P1.3 ;P1.3输出低电平,使LED6点亮 ACALL DELAY ;调用延时子程序 MOV P1, #0F0H ;LED3~LED6全部发光 ACALL DELAY ;调用延时子程序 AJMP START ;返回到标号START处再循环 ;----- 延时子程序 ----- DELAY: MOV R5,#10 LOOP: MOV R6,#200 LOOP1: MOV R7,#250 LOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 DJNZ R5,LOOP RET 例2: ORG 0000H AJMP START ;跳转到初始化程序 ORG 0033H ;----- 主程序开始 ----- START: MOV P1,#0FFH ;是所有LED熄灭 ACALL DELAY ;调用延时子程序 MOV ACC,#0FEH ;ACC中先装入LED3亮的数据(二进制的11111110) MOV P1,ACC ;将ACC的数据送P1口 ACALL DELAY ;调用延时子程序 MOV R0,#03H ;上句送到P1口的数据就点亮了LED1,所以将数据再移

实验一

实验一、数据传送及输入输出接口实验 1、实验目的 1.1 掌握51单片机数据传送指令; 1.2 熟悉51单片机汇编语言程序设计方法; 1.3 掌握Keil 集成开发环境的使用; 1.4 练习51单片机汇编语言程序的编辑、汇编和模拟调试。 2、实验内容 数据传送类程序设计 1)设计数据区清零程序,将片内RAM 20H~5FH单元清零。 2)设计数据块传送程序,将片内RAM 30H~3FH单元的数据顺序传送到片内RAM 50H~5FH单元。3)设计数据块传送程序,将片内RAM50H~5FH单元的数据顺序传送到片外RAM 1000H~100FH单元。 3、实验设备 Keil仿真 4、程序流程图 片内RAM 20H~5FH单元清零程序流程图 数据块传送程序流程图

5、程序清单及程序运行结果 实验1-1 设计数据区清零程序,将片内RAM 20H~5FH单元清零。 ;主程序 ORG 0000H MOV R0,#20H ;设置地址指针 LOOP: CLR A ;清空A里的内容 MOV @R0,A ;将A里的内容送给R0所对应的地址 INC R0 ;R0加1 CJNE R0,#5FH,LOOP ;判断R0是否为5FH,为5FH顺序执行,不为跳转到LOOP RET ;子程序返回指令 END 实验1-2 设计数据块传送程序,将片内RAM 30H~3FH单元的数据顺序传送到片内RAM 50H~5FH单元。 ;主程序 ORG 0000H MOV R0,#30H ;R0为原数据区地址指针 MOV R1,#50H ;R1为目的地址指针 MOV R2,#10H ;R2为数据长度 LOOP: MOV A,@R0 ;将R0对应位置的内容给A MOV @R1,A ;将A的内容给R1对应位置里 INC R0 ;R0加1 INC R1 ;R1加1 DJNZ R2,LOOP ;判断R2减一是否为0,为0则顺序执行,不为0则跳转到LOOP END 实验1-3 设计数据块传送程序,将片内RAM50H~5FH单元的数据顺序传送到片外RAM 1000H~100FH单元。 ;主程序 ORG 0000H MOV R0,#50H ;R0为原数据区地址指针 MOV DPTR,#1000H ;设置1000H为目的数据区地址指针 MOV R1,#10H ;数据长度10H给R1 LOOP: MOV A,@R0 ;将R0对应位置的内容给A MOVX @DPTR,A ;将A里的内容给片外地址指针 INC R0 ;R0加1 INC DPTR ;片外地址指针加1 DJNZ R1,LOOP ;判断R1减一是否为0,为0则顺序执行,不为0则跳转到LOOP END

清零程序实验

实验一:清零程序实验: 一、实验目的: 1、掌握单片机的内部存储器在逻辑上的结构。 2、掌握如何对单片机内部,外部存储器RAM中所存的内容进行清零及编程方法。 二、实验内容: 将外部存储器RAM 2000H~20FFH中的内容清零。 三、实验程序框图: 四、实验步骤: ⑴.运行仿真调试环境,打开文件编辑窗口: ⑵.进行编辑源文件。 ⑶.保存你所编辑的源文件,并进行编译。即点击图标,

如果你是新文件,屏幕会提示以下信息 点击“YES”屏幕显示以下信息 这时,你应该输入你相要保存文件的文件名。注意:文件名的长度不能超过8个字符;同时也不能用中文名字存文件名,否则编译器会照不到连接文件而发生编译错误(这是只要因为该编译系统调用国外编译软件进行编译的的原因)。 如果文件编写正确则提示如下信息:表明编译没有警告和错误;连接没有警告和错误。 上述步骤完成后,屏幕会自动弹出调试窗口。

其中: * 表示当前PC指针所在的位置。 上图中图标,表示断点所在的位置,上图中设置了两个断点;即当程序运行到断点处就停下来,并将当前运行的结果,在寄存器或数据窗口中显示出来。 ⑷.查看寄存器窗口信息,可以按下图打开寄存器窗口。 点击寄存器栏便可观察寄存器窗口的内容,按照同样的方法可打开其他窗口的信息,如数据窗 口等。按图标会对所打开的窗口进行重新排列。垂直、水平、或卡片式排列。 ⑸.调试与运行,用连续或单步不同方式运行程序,在运行图标时,即 进入全速运行状态,遇到断点时便停下来,并刷新当前所运行的结果,在所对应的窗口上显示出来。 运行图标,便进入单步运行状态,该图标表示在遇到CALL指令时会进入到CALL调用的子程序内部;该图标表示在遇到CALL指令时,把所调用的CALL子程序作为一条执行语句执行;学会上述的操作方法后便可进入你所相要做的工作了。这时你也会查看或检查2000~20FFH中执行程序前后的内容变化。 五、思考:假使把2000H~20FFH中的内容改成FF,如何修改程序。 六、程序清单: 5、实验报告要求: 1、写出实验目的、内容及程序框图

单片机实验程序设计

实验一LED流水灯 一、实验目的 制作一个流水灯,编写程序来控制发光二极管由上至下的反复循环流水点亮,每次点亮一个发光二极管。 二、程序设计 #include #include sbit LED = P1^0; void delay() { unsigned int i,j; for(i=120;i>0;i++) for(j=120;j>0;j++); } void main() { unsigned char i; LED = 0; while(1) { for(i=0;i<8;i++) { LED=0xfe; delay( ); LED = _crol_(LED,1); P1 = LED; } LED=0X01; for(i=0;i<8;i++) { delay( ); LED = _cror_(LED,1); P1 = LED; } } }

实验二按键扫描 一、实验目的 使用单片机片内的I/O口来进行开关状态的检测。当开关打开时,I/O引脚为高电平,当开关闭合时,I/O引脚为低电平。编写一个程序,控制流水灯,开关闭合,对应的发光二极管点亮。 二、程序设计 #include #include #define GPIO_LED P1 sbit K1=P3^5; sbit K2=P3^4; void Delay10ms( ); void main(void) { unsigned int i,j,l; j=0xfe; while(1) { GPIO_LED=j; if (K1==0) { Delay10ms( ); if (K1==0) { j=_cror_(j,1); while((i<50)&&(K1==0)) { Delay10ms( ); i++; } i=0; } } if (K2==0) { Delay10ms( ); if (K2==0) { l=0xff; GPIO_LED=~l;

单片机实验报告 (3)

单片机原理及接口技术 学院:光电信息科学与技术学院班级:——实验报告册 083-1 实验一系统认识实验 1.1 实验目的 1. 学习keil c51集成开发环境的操作。 2. 熟悉td-51系统板的结构和使用。 1.2实验仪器 pc 机一台,td-nmc+教学实验系统。 1.3实验内容 1. 编写实验程序,将00h—0fh共16个数写入单片机内部 ram 的30h—3fh空间。 2.编写实验程序,将00h到0fh共16个数写入单片机外部ram的1000h到100fh空间。 1.4 源程序 https://www.wendangku.net/doc/7810980268.html, 0000h mov r1,#30h mov r2, #10h mov a, #00h mov @r1, a inc r1 inc a djnz r2,loop sjmp $ end 2. org 0000h mov dptr, #1000h mov r2, #10h mov a, #00h movx @dptr, a inc dptr inc a djnz r2,loop sjmp $ end loop: loop: 1.5 实验步骤 1.创建 keil c51 应用程序 (1)运行 keil c51 软件,进入 keil c51 集成开发环境。 - 3 -(2)选择工具栏的 project 选项,弹出下拉菜单,选择 newproject 命令,建立一个新的μvision2 工程。选择工程目录并输入文件名 asm1 后,单击保存。 (3)工程建立完毕后,弹出器件选择窗口,选择 sst 公司的 sst89e554rc。(4)为工程添加程序文件。选择工具栏的 file 选项,在弹出的下拉菜单中选择 new 目录。 (5)输入程序,将 text1 保存成asm1.asm。 (6)将asm1.asm源程序添加到 asm1.uv2 工程中,构成一个完整的工程项目。 2.编译、链接程序文件(1)设置编译、链接环境 (2)点击编译、链接程序命令,此时会在 output window 信息输出窗口输出相关信息。 3.调试仿真程序 (1)将光标移到 sjmp $语句行,在此行设置断点。 (2)运行实验程序,当程序遇到断点后,停止运行,观察存储器中的内容,验证程序功能。 1.6 实验结果. 2. 4 实验二查表程序设计实验 2.1实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.2实验设备 pc 机一台,td-nmc+教学实验系统 2.3实验内容 1.通过查表的方法将 16 进制数转换为 ascii 码; 2.通过查表的方法实现y=x2,其中x为0—9的十进制数,以bcd码表示,结果仍以bcd 码形式输出。

相关文档