文档库 最新最全的文档下载
当前位置:文档库 › 实验一 单片机数据区传送程序设计

实验一 单片机数据区传送程序设计

实验一 单片机数据区传送程序设计
实验一 单片机数据区传送程序设计

实验一单片机数据区传送程序设计

一、实验目的

1.进一步掌握汇编语言程序设计和调试方法。

2.了解单片机RAM中的数据操作

二、实验说明

要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。

三、实验仪器

计算机

伟福软件(lab2000P )

四、实验内容

在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。

查看RAM 区3000~30FFH和4000~40FFH内容,也可自己重新赋值。

运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。

记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。

五、思考题

1、改变源地址,例如00FFH;

2、改变目的地址,例如2000H;

3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。

六、源程序及其修改原理

org 0000H

Block equ 2000h

mov dptr, #Block ; 起始地址

mov r0,#12h

mov a,#20h ;修改2000h开始的地址所存放的内容为20h

Loop:

mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思

考题3)

Loop1:

movx @dptr,a

inc dptr ; 指向下一个地址

djnz r1,Loop1

djnz r0, Loop ; 双循环实现r0,r1计数相乘

(以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4)

mov r0, #20h ;改变源地址为2000h(思考题1)

mov r1, #00h

mov r2, #50h;改变目的地址为5000h(思考题2)

mov r3, #00h

mov r7, #0

Loop:

mov dph, r0

mov dpl, r1

movx a, @dptr

mov dph, r2

mov dpl, r3

movx @dptr, a

cjne r1, #0ffh, Goon1

inc r0

Goon1:

inc r1

cjne r3, #0ffh, Goon2

inc r2

Goon2:

inc r3

djnz r7, Loop

ljmp $

End

七、实验结果及说明

1、执行到mov r0, #20h的结果:

说明:实现对数据存储区2000h~2168hRAM都赋相同一个数值20h。

2、执行到ljmp $的结果:

说明:5000h 开头的存储区域执行程序之前的内容是FFh,执行程序之后变为20h,与2000h~20ffh 的内容完全相同,说明程序实现了数据区传送。

单片机 查表程序设计实验

2.4 查表程序设计实验 2.4.1 实验目的 学习查表程序的设计方法,熟悉 51 的指令系统。 2.4.2 实验设备 PC 机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51 系统平台”、或 “TD-PITE 教学实验系统+TD-51 系统平台” 2.4.3实验内容 1. 通过查表的方法将 16 进制数转换为 ASCII码; 2 2. 通过查表的方法实现y=x ,其中x为 0~9 的十进制数,以BCD码表示,结果仍以BCD 码形式输出。 2.4.4 实验步骤 1. 采用查表的方法将 16 进制数转换为 ASCII 码 根据 ASCII码表可知,0~9 的 ASCII码为 30H~39H,A~F的 ASCII码为 41H~46H,算 法为(假定待转换的数存放在 R7 中): 当 R7≤9 时,相应的 ASCII码为:R7+30H; 当 R7>9 时,相应的 ASCII码为:R7+30H+07H。 实验程序清单:(Asm4-1.asm) ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV DPTR, #ASCTAB ;表格首地址送DPTR MOV A, R7 ;R7中为待转换的数 ANL A, #0FH ;取低4位 MOVC A, @A+DPTR ;查表 MOV R5, A ;低4位转换结果送R1 MOV A, R7 ANL A, #0F0H ;取待转换数的高4位 SWAP A ;高4位与低4位交换 MOVC A, @A+DPTR ;查表 MOV R6, A ;高4位转换结果送R2 SJMP MAIN ;设置断点观察结果 ;ASCII码表 ASCTAB: DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H, 46H END 实验步骤: (1)编写实验程序,编译、链接无误后联机调试; (2)将待转换的数存放在 R7 中,如令 R7 中的值为 0x86;

最新单片机原理实验教案参考程序

单片机原理实验教案 参考程序

广东松山职业技术学院《MCS-51单片机原理》实验指导书 宁玉珊黄晓林 使用Proteus辅助设计与仿真

实训项目1 Proteus辅助设计与仿真的使用 一、实训目的 学习并熟练掌握PROTEUS辅助设计与仿真软件的使用。通过使用Proteus的ISIS组件绘制AT89C51功能接口原理图,并对原理图编写程序和调试程序,观察在仿真条件下的实现功能的效果。 二、实训内容 在PROTEUS仿真环境下实现一个发光二极管(LED)闪烁。要求LED亮0.5s灭1s,并绘制原理图和编写实现程序,同时用虚拟的示波器观察硬件和软件实现的效果。 三、实训器材 安装有Proteus7软件的计算机 1 台。 四、实训步骤 1)在硬盘建立文件夹用来保存新建项目的所有文件。如在D盘建立PROJECT文件夹。 2)选择‘开始→程序→Proteus7 professional→ISIS professional(或者双击桌面图标ISIS)’,进入Proteus仿真环境,如图P1_1和P1_2所示。 图P1-1

图P1-2 3)选择菜单【File/New Design】创建一个新的设计项目,如图P1_3所示。 图P1-3 4)此时系统会弹出模板选择窗口,选择‘DEFAULT’点击【OK】即可,如图P1_4所示。

图P1_4 5)点击界面左侧工具栏中的图标,接着点击元件池上方的按钮,将要用到的元器件从系统库调到当前设计文件库中。在弹出的Pick Devices对话框左上角的‘Keywords’文本框中键盘输入元件名(或元件的其它关键词)搜索到需要的元器件。双击‘Results’栏下的目标元件,该元件即调出到当前设计文件库的元件列表中,如图P1_5所示。本实训中所要用到的元件如表PS1_1所示。 图P1_5 元件名称搜索关键词元件序 数值备注 号 电阻器Resistor R1 10k 电阻器Resistor R2 1k 电解电容器MINELECT1U63V C1 4.7μ 陶瓷电容器CERAMIC22P C2、C3 22p 晶振CRYSTAL X1 12MHz 单片机AT89C51 U1

单片机数据传送实验报告

实验名称: 数据传送实验 实验类型: 设计性实验 姓名:袁志生 时间:第五六节课 一、实验目的与要求 实验目的:1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 实验要求:1、实现单片机内部RAM之间,外部RAM之间以及内部RAM 与外部RAM之间的数据传送。 2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。 二、设计要求 1、编写程序将00H~0FH 16个数据分别送到单片机内部RAM 30H~3FH 单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH单元中。 4、编写程序将片外4800H~480FH单元内容送到外部RAM 5800H~580FH 单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH 单元中。

三、实验程序流程框图和程序清单.

程序清单: ORG 0000H START: MOV R0, #30H MOV DPTR, #QW1 MOV R5, #0 MOV R7, #16 LOOP: MOV A, R5 MOVC A, @A+DPTR MOV @R0, A INC R0 INC R5 DJNZ R7, LOOP LJMP QW2 QW1: DB 00H, 01H, 02H, 03H, 04H, 05H, 06H, 07H DB 08H, 09H, 0AH, 0BH, 0CH, 0DH, 0EH, 0FH QW2: MOV R0, #30H MOV R1, #40H MOV R5, #16 LOOP1: MOV A, @R0 MOV @R1, A INC R0 INC R1 DJNZ R5, LOOP1 MOV R1, #40H MOV DPTR, #4800H MOV R5, #16 LOOP2: MOV A, @R1 MOVX @DPTR, A INC R1 INC DPTR DJNZ R5, LOOP2 MOV SP, #60H MOV 11H, #48H MOV 10H, #58H MOV R2, #00H LOOP3: MOV DPL, R2 PUSH 10H PUSH 11H

单片机原理与应用及C51程序设计实验报告

《单片机原理与应用及C51程序设计》 实验报告

一.软件仿真 1.实验要求 基本要求:用串口输出“hello word”语句。增加的要求:延时或定时输出语句,采用查询/中断的方式控制启动/停止。 2.源程序: (1).采用延时函数,延迟输出语句,p0_0控制启动/停止。 #include #include sbit p0_0=P0^0; void Delay(unsigned int Delaytime); void main(void) { SCON = 0x50; //串口方式1,允许接收 TMOD = 0x20; //定时器1 定时方式2 TCON = 0x40; //设定时器1 开始计数 TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8; TI = 1; TR1 = 1; //启动定时器 while(1) { if(p0_0==0) {Delay(10000); printf ("Hello World!\n"); //显示Hello World } } } void Delay(unsigned int Delaytime) {unsigned int j=0; for(;Delaytime>0;Delaytime--) for(j=0;j<100;j++); } (2).采用定时器定时,延迟输出语句。P0_0控制启动/停止。 #include

#include sbit p0_0=P0^0; #define uchar unsigned char #define uint unsigned int uchar count; void main() { SCON = 0x50; //串口方式1,允许接收 TMOD = 0x21; TCON = 0x40; //设定时器1 开始计数 TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TI = 1; TR1 = 1; //启动定时器 while(1) { if(p0_0==0) { TR0=1; if(count==200) { count=0; printf("hello world!\n"); } } } } void timer0()interrupt 1 { TH0=0X3C; TL0=0XB0; count++; } 3.实验心得: 第一次实验不需要硬件实现,只需要用软件仿真,串口输出“hello word”语句就ok,所以此次实验比较简单,不需要费太多时间就能把实验完成。 二.键控流水灯 1.实验要求: 8051单片机的P1口的P1.0—P1.7分别接有LED(D1—D8),当某一端口输出,为“0”

重庆大学 单片机实验

实验一系统认识及基本程序设计实验 四、实验内容 1. 将BCD 码整数0~255 存入片内RAM 的20H、21H、22H 中,然后转换为二进制整数00H~FFH,保存到寄存器R4 中。修改20H、21H、22H 单元的内容,如:00H,05H,08H;观察实验结果。 参考程序: ;============================================================== ; 文件名称: Asm2-1.asm ; 功能描述: BCD整数转换为二进制整数(8位, 范围从00H--FFH) ;============================================================== ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #20H ;BCD存放高位地址 MOV R7, #03H ;BCD码0--255, 最多3位 CLR A MOV R4, A LP1: MOV A, R4 MOV B, #0AH MUL AB ;乘10 ADD A, @R0 ;加下一位的值 INC R0 ;指向下一单元 MOV R4, A ;结果存入R4 DJNZ R7, LP1 ;转换未结束则继续 SJMP MAIN ;设置断点, 观察实验结果R4中的内容 END 2. 将16 位二进制整数存入R3R4 寄存器中,转换为十进制整数,以组合BCD 形式存储在RAM 的20H、21H、22H 单元中。 参考程序: ;============================================================= ; 文件名称: Asm2-2.asm ; 功能描述: 二进制整数(16位)转换为十进制整数(组合BCD) ;============================================================= ; 0--FFFFH(R3R4)==>0--65535 ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #22H ;转换结果低位地址 MOV A, R0 PUSH ACC ;ACC表示累加器A的直接地址 MOV R7, #03H

眼图实验报告的数据

实验五眼图 一、实验目的: 1、理解受限信道上的数据传输率; 2、观察眼图,分析不同参数设置对眼图的影响。 二、实验原理 当一个信号通过一个受限的信道时,它的波形将发生变化。如图5-1所示,当数据传输率提高时,波形的失真也增大,甚至使得数据不能传输。 图5-1 受限信道中的波形的前后变化 眼图通常用于实时观察一个数字数据序列,它能够表达出很多有关传输质量的信息,而做这些仅一个常用的示波器和一位时钟序列就可以了。通过观察眼图,可以测量出传输的质量及接收到的数据中发生错误的可能性。其原理图如图5-2所示: 图5-2 眼图产生的原理 一个典型的眼图通常是用来显示传输在一个受限信道上的二进制序列,而这个受限的信道是忽略了噪音的。如图5-3所示: 图5-3眼图

三、实验设备 1、主机TIMS-301F 2、TIMS基本插入模块 (1)TIMS-153序列产生器(Sequence generator) (2)TIMS-148音频振荡器(Audio Oscillator) (3)TIMS-153 可调低通滤波器(Tuneable LPF) 3、计算机 4、PICO虚拟设备 四、实验步骤: 1、将TIMS系统中的音频振荡器(Audio Oscillator)、序列产生器(Sequence generator)、可调低通滤波器(Tuneable LPF)三个模块按图5-4连接。 2、PICO软件的设置:打开PICO软件,设置眼图参数。在“Settings”菜单中选择“Options”选项,如下图所示: 在弹出的窗口菜单中,在“Sco pe options”里的“Data to display”项选择“Accumulate”。如下图所示:

单片机-实验二-分支程序设计实验

实验二实验报告 ·

将00-99的十进制数据转换成二进制进行开关量的输入,L0灯亮 将100的十进制转换为01100010的二进制开关量进行输入,L1灯亮

将101-127的十进制转换为二进制进行开关量的输入,L2灯亮 完整的接线图

实验操作 1、正确连接实验板子和电脑,将点源接入,数据线连接到电脑的USB接口,在电脑端运行 软件,取消勾选模拟器,按照实验装置的名称正确的选择响应的系统。 2、在软件内部按照输入分支程序结构。 3、打开点源开关。 4、调整输入的各个断口的开关量,着重关注在二进制数01100010附近的变化. 5、整理实验器材。 思考题1 写出分支程序设计的要点 分支结构也成为选择结构。在程序中每个分支均为一个程序段。为分支需要,程序设计时不要忘记给程序段的起始地址赋予一个地址标号,以供选择分支使用。 这次实验使用的是一个多分支程序结构,可以通过一系列的JC\JNC\JB\JNB的判断,进行逐级分支。并且可以使用CJNE进行实现。 80C51中没有专门的多分支转移指令,可以使用的变址转移指令“JMP @A+DPTR”,但是这样的指令需要数据表格配合。 思考题2 8051单片机有几个并行口,写出各并行口的特点 8051单片机有4个并行I/O口,分别为P0\P1\P2\P3,以实现数据的并行输入与输出。 这4个并行口均是8为双向口线,各占8个引脚,在P3口线上有着引脚复用,均有第二功能信号,这些第二功能信号都是重要的控制信号,在实际使用中总是先按需要优先选用第二功能,剩下的不用的再当作口线使用。 并行可以有效的提高单片机的工作效率。 思考题3 实验中遇到的苦难 在这个实验中和实验一显著不同的是我们需要重新认识硬件与软件的配合,一些数据线的链接,点源的通断都是我们学习的要点,我们也第一次接触到了输入口和输出口相互之间的区别。 这个实验我们一定要将十进制的思维转换过来转换为二进制的思维,在机器语言中只有开关量的通断,而这个题目也是很好的应用了开关量的通断完成了这个实验。 学会了分支判断方式的编程

单片机U盘读写参考程序

/*******************************************************/ #include"reg52.h" #include"stdio.h" #include "string.h" #include "intrins.h" #include"CH375INC.H" /*******************************************************/ #define uchar unsigned char #define uint unsigned int /*******************************************************/ sbit CH375_INT=P3^3; sbit CH375_A0=P3^4; sbit CH375_RD=P3^5; sbit CH375_WR=P3^6; sbit CH375_CS=P3^7; /*******************************************************/ uchar xdata my_buf[512]; /*******************************************************/ void uart_init() { TMOD=0X20; TH1=TL1=0XFD; TR1=1; REN=1; SM0=0;SM1=1; EA=1; ES=1; } /*******************************************************/ void uart_send_pc(uchar *s) //串口监视//void uart_send_pc(uchar a[20]) { //{ uchar len=strlen(s); // uchar i; uchar i; // for(i=0;i<20;i++) for(i=0;i

微机原理上机实验(一)实验报告数据传输传送实验

微机原理上机实验(一)实验报告 主题:数据传送 一、实验目的 熟悉星研集成环境软件的使用方法。熟悉Borland公司的TASM编译器 熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。 二、实验内容 1、熟悉星研集成环境软件。 2、编写程序,实现数据段的传送、校验。 三、实验代码 _STACK SEGMENT STACK DW 100 DUP() _STACK ENDS DATA SEGMENT DATA ENDS CODE SEGMENT START PROC NEAR ASSUME CS:CODE, DS:DATA, SS:_STACK MOV AX, DATA ;将数据段的地址存入AX寄存器。AX=004DH MOV DS,AX ;对DS段寄存器赋值。DS=004DH MOV ES,AX ;对ES段寄存器赋值。ES=004DH NOP ;空指令

MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CALL Move ;调用Move子程序 MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CLD ;将DF标志位置0。设置SI、DI为递增移动,DF=0 REPE CMPSB ;比较[SI]和[DI],CX减1,ZF=0或CX=0跳出 ;若ZF=0或CX=0不成立,则继续比较。SI和DI持续递增 1 JNE ERROR ;若ZF=0,跳到ERROR子程序 TRUE: JMP $ ;跳到目前地址 ERROR: JMP $ ;跳到目前地址 Move PROC NEAR ;Move子程序 CLD ;将DF标志位置0。设置SI、DI为递增移动。DF=0 CMP SI,DI ;比较SI、DICF=SF=PF=1,仅有该三个标志位变化JZ Return ;如果相等,跳到Return JNB Move1 ;如果SI大于等于DI,跳到Move1 ADD SI,CX ;SI=SI+CX。SI=3100H DEC SI ;SI减1。SI=30FFH

实验一 数据传送

数据传送实验 验证性实验 2012年10月31日第三四节课 一、实验目的 1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉Keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 二、设计要求 1、编写程序将00H~0FH 16个数据送到单片机内部RAM 30H~3FH单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH单元中。 4、编程将片外4800H~480FH单元内容送到外部RAM 5800H~580FH单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH 单元中。 三、实验程序流程框图

四、程序清单 ORG 0000H MOV R0, #30H ;初始化数据指针 MOV A, #00H MOV R2, #10H ;设置循环次数LOOP1: MOV @R0, A ;循环体部分 INC R0 ;修改数据指针 INC A DJNZ R2, LOOP1 ;循环控制部分 MOV R0, #30H ;初始化数据指针 MOV R1, #40H MOV R2, #10H LOOP2: MOV A, @R0 ;循环体部分 MOV @R1, A INC R0 ;修改数据指针 INC R1 DJNZ R2, LOOP2 ;循环控制部分

MOV R1, #40H ;设置数据指针R0单元内容 MOV DPTR, #4800H ;外部RAM4800H单元地址作为16位立即数送数 据指针DPTR MOV R2, #10H ;设置循环次数 LOOP3: MOV A, @R1 ;循环体部分 MOVX @DPTR, A INC R1 ;修改数据指针 INC DPTR DJNZ R2, LOOP3 ;循环控制部分 MOV R0, #00H ;初始化数据指针 MOV R1, #48H MOV R2, #58H LOOP4: MOV DPL, R0 ;设置数据指针的低八位内容 MOV DPH, R1 ;设置数据指针的高八位内容 MOVX A, @DPTR ;将外部RAM内容送累加器A MOV DPH, R2 ;重新设置数据指针高八位内容 MOVX @DPTR, A ;将累加器A的内容送回外部RAM INC R0 ;修改数据指针 CJNE R0, #10H, LOOP4 ;循环控制部分 MOV R0, #50H ;初始化数据指针 MOV DPTR, #5800H MOV R2, #10H CLR A ;累加器A清零 LOOP5: MOVX A, @DPTR ;循环体部分 MOV @R0, A INC R0 ;修改数据指针 INC DPTR DJNZ R2, LOOP5 ;循环控制部分 END 五、程序数据

51单片机实验程序

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

数据传送实验报告-文少轩

数据传送实验报告 西安交通大学 文少轩 一、实验目的 1.熟悉8086指令系统的数据传送指令及8086的寻址方式; 2.利用Turbo Debugger(TD.EXE)调试工具来调试汇编语言程序。 二、实验设备 IBM-PC 微型计算机一台 三、实验要求 1. 复习8086指令系统中的数据传送类指令和8086的寻址方式; 2. 预习Turbo Debugger的使用方法; 3. 按照题目要求预先编写好实验中的程序段。 四、实验内容及数据记录 1.通过述程序段的输入和执行来熟悉Turbo Debugger的使用,并通过显示器屏幕观察程 序的执行情况。练习程序段如下: 2.用以下程序段将一组数据压入PUSH堆栈区,然后通过三种不同的出栈方式出栈,查看

4.设置各寄存器及存储单元的内容如下:

5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接 寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。 先对DS:1000H和DS:2020H单元赋值,结果如下:

6.设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:0010H单元中的内容 为3333H。将AX寄存器中的内容与BX寄存器中的内容交换。试编写程序段,并上机验 7.设DS=6000H,ES=6100H,存储器中的内容如下图所示。要求将DS段的内容传送到AX 寄存器,DS

五、实验小结 1.Turbo Debugger界面虽然不华丽,但是很实用; 2.各寄存器的状态、内容直观地从界面中显示出来,程序执行造成的内容变化以高亮状态显示,方便跟踪程序每一步运行的结果; 3.修改各寄存器或者某内存单元的内容很方便,可以直接从键盘输入。 4.

实验2数据块传送实验程序设计实验

实验2 数据块传送实验程序设计实验 实验目的 ㈠学习和掌握DSP汇编语言程序的基本结构。 ㈡熟悉和掌握常用的数据传送类指令。熟练掌握数据块传送的方法。 二、实验原理 数据传送的常用指令 数据存储器((数据存储器:MVDK Smem,dmad MVKD dmad,Smem MVDD Xmem,Ymem 数据存储器((MMR:MVDM dmad,MMR MVMD MMR,dmad MVMM mmr,mmr 程序存储器((数据存储器MVPD Pmad,Smem MVDP Smem,Pmad READA Smem WRITA Smem Smem——数据存储器的地址;Pmad——16位立即数程序存储器地址;MMR——任何一个存储映象寄存器;Xmem,Ymem——双操作数数据存储器地址;dmad——16位立即数数据存储器地址; 数据传送指令是最常用的一类指令,与RPT指令相结合,可以实现数据块传送。例如,在系统初始化过程中,可以将数据表格与文本一道驻留在程序存储器中,复位后通过程序存储器到数据存储器的数据块传送将数据表格传送到数据存储器,从而不需要配制数据ROM,使系统的成本降低。另外,在数字信号处理(如FFT)时,经常需要将数据存储器中的一批数据传送到数据存储器的另一个地址空间等等。 实验内容 阅读实验程序example,上机运行程序后,查看: ㈠检查程序存储器(PM)1000H~101DH空间中的内容,检查程序存储器(PM)FF80H~FF83H空间中的内容。 ㈡数据存储器(DM)60H~69H(.bss)空间中的内容是什么? ㈢数据存储器(DM)80H~90H(STACK)空间中的内容是什么?

51单片机电子时钟课程设计实验报告

《单片机原理与应用》课程设计 总结报告 题目:单片机电子时钟(带秒表)的设计 设计人员:张保江江润洲 学号:2012197213 2012118029 班级:自动化1211 指导老师:阮海容

目录 1.题目与主要功能要求 (2) 2.整体设计框图及整机概述 (3) 3.各硬件单元电路的设计、参数分析及原理说明 (3) 4.软件流程图和流程说明 (4) 5.总结设计及调试的体会 (10) 附录 1.图一:系统电路原理图 (11) 2.图二:系统电路PCB (12) 3.表一:元器件清单 (13) 4.时钟程序源码 (14)

题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。 课程设计的基本任务 利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求 最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位(例如分加到59后变为00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。 6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。 7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 11)完成课程设计报告。 基本要求 1)实现最基本要求的1~10部分。 2)键盘输入可以控制电子时钟的走时/调试。 3)设计键盘输入电路和程序并调试。 4)掌握键盘和显示配合使用的方法和技巧。 提高发挥部分

单片机实验参考程序

实验一键盘输入实验 参考程序: ;4*4矩阵键盘读取程序,利用P0口,列线左起P0.0-P0.3 ;行线上起P0.4-P0.7,行线默认接高电平, ;P3.7作为键盘被读取的提示灯 ; 0 1 2 3 ; 4 5 6 7 ; 8 9 A B ; C D E F ;不考虑有两个或以上按键同时按下的情况, ;每次扫描到一个有按下则结束本次扫描 SETB P3.7 ;确认关闭键盘响应指示灯 MAIN: MOV R0,#0EFH ;用于给键盘行列线确定的电平 MOV R1,#0H ;循环次数,R1=0对应第一行,=1为第二行,以此类推SMAIN: MOV P0,R0 ;改变行线的状态,列线全处于高电平 NOP NOP MOV A,P0 JB ACC.0,L1 ;判断某行的第一列是否按下,按下则P0.0为低电平 MOV R2,#0H ; 将某行的列码保存至R2,显示程序会根据此值和R1的值计算具体为何按键按下 ACALL DISP SJMP MAIN ; 每次扫描到一个有按下则结束本次所有扫描

L1: JB ACC.1,L2 ;判断某行的第二列是否按下,按下则P0.1为低电平MOV R2,#01H ACALL DISP SJMP MAIN L2: JB ACC.2,L3 ;判断某行的第三列是否按下,按下则P0.2为低电平MOV R2,#02H ACALL DISP SJMP MAIN L3: JB ACC.3,SKIP ;判断某行的第四列是否按下,按下则P0.3为低电平MOV R2,#03H ACALL DISP SJMP MAIN ; SKIP: INC R1 ;R1加1,共计4行, MOV A,R0 RL A ;左移R0内的值,以并扫描下一行 MOV R0,A CJNE R1,#04H,SMAIN ;若四行扫描完毕,则跳转至程序最初,相关参数为初始值NO: MOV P2,#0FFH ;程序能执行到此说明四行扫描完毕并且一个按键都没按下,关闭数码管和指示灯 SETB P3.7 SJMP MAIN DISP: CLR P3.7 ;点亮键盘响应指示灯 MOV A,R1 RL A RL A ;R1对应行,具体的按键计算为R1*2+R2 ADD A,R2 ADD A,#3H ;下列指令与表格见有3字节的距离 MOVC A,@A+PC MOV P2,A ;十六进制的高位用数码管L1显示 RET ;共阳数码管0-F的显示码 DIS: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH DELAY: m ov r7,#255;延时 del1: mov r6,#255; del2: djnz r6,del2 djnz r7,del1 ret END

单片机数据传送实验报告

竭诚为您提供优质文档/双击可除单片机数据传送实验报告 篇一:单片机数据传送实验报告 实验名称:数据传送实验 实验类型:设计性实验 姓名:袁志生 时间:04.17第五六节课 一、实验目的与要求 实验目的:1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 实验要求:1、实现单片机内部RAm之间,外部RAm之间以及内部RAm与外部RAm之间的数据传送。 2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。 二、设计要求

1、编写程序将00h~0Fh16个数据分别送到单片机内部RAm30h~3Fh单元中。 2、编写程序将片内RAm30h~3Fh的内容传送至片内RAm40~4Fh单元中。 3、编写程序将片内RAm40h~4Fh单元中的内容传送到外部RAm4800h~480Fh单元中。 4、编写程序将片外4800h~480Fh单元内容送到外部RAm5800h~580Fh单元中。 5、编写程序将片外RAm5800h~580Fh单元内容传送回片内RAm50h~5Fh单元中。 三、实验程序流程框图和程序清单. 程序清单: oRg0000h sTART:moVR0,#30h moVDpTR,#Qw1 moVR5,#0 Loop: Qw1: Qw2: Loop1: Loop2: Loop3:

R7,#16A,R5A,@A+DpTR@R0,AR0IncR5R7,LoopQw200h,01h,02 h,03h,04h,05h,06h,07h08h,09h,0Ah,0bh,0ch,0Dh,0eh,0F hR0,#30hR1,#40hmoVR5,#16A,@R0@R1,AR0R1R5,Loop1R1,#4 0hmoVDpTR,#4800hR5,#16A,@R1@DpTR,AR1DpTRR5,Loop2moV sp,#60h11h,#48h10h,#58hR2,#00hDpL,R210h11hDphmoVxA, @DpTRmoVmoVmoVcmoVIncDJnZLJmpDbDbmoVmoVmoVmoVIncInc DJnZmoVmoVmoVmoVxIncIncDJnZmoVmoVmoVmoVpushpushpop pop moVx Inc cJne moV moV moV Loop4:moVx moV Inc Inc DJnZ enD 四,实验小结

微机原理及应用 上机实验报告2 数据传送

课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END

1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去

1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。 解:STRAT:MOV R0,#30H MOV R7,#0FH MOV DPTR,#3000H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET 2 片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 ). 解ADDIO:MOV R0,30H MOV R7,#9 MOV A,@R0 LOOP: INC R0 ADD A,@R0 DJNZ R7,LOOP MOV 30H,A RET 5 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中. 解 START: MOV R0,#40H ;数据块首地址送R0 MOV R7,#09H ;比较次数送R7 MOV A,@R0 ;取数送A LOOP: INC R0 MOV 30H,@R0 ;取数送30H CJNE A,30H,NEHT ;(A)与(30H)相比 NEXT: JNC BIE1 (A)≥(30H)转BIR1 MOV A,30H ;(A)<(30H),大数送A BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较 MOV 50H,A ;比较结束,大数送50H

RET 6 编一子程序,从串行接口接受一个字符. 解: START: MOV TMOD,#20H ;定时器T1工作于模式2 MOV TH1,#0E8H ;设置波特率为1 200b/s MOV TL1,#0E8H SETB TR1 ;启动T1 MOV SCON,#50H ;串行接口工作于方式1,充许接收 L1: JNB RI,L1 ;等待接收数据,末接收到数据,继续等待 CLR RI ;接收到数据,清RI MOV A,SBUF ;接收到数据送A RET 9 编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。 解 本程序的硬件连接如图所示。当P1.0输出高电平时,LED灯亮,否则不亮。 其程序如下: MOV A,#01H ;灯亮初值 SHIFT: LCAIL FLASH ;调闪亮10次子程序 RR A ;右移一位 SJMP SHIFT ;循环 FLASH: MOV R2,#0AH 闪烁10次计数 FLASH1; MOV P1,A ;点亮 LCALL DELAY ;延时

实验一_单片机数据区传送排序程序设计复习课程

实验一_单片机数据区传送排序程序设计

实验一单片机数据区传送/排序程序设计 一、单片机数据区传送/排序程序设计 一、实验目的 1.进一步掌握汇编语言程序设计和调试方法。 2.了解单片机RAM中的数据操作 二、实验说明 要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。 三、实验仪器 计算机 伟福软件( lab2000P ) 四、实验内容 在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。 查看RAM 区3000~30FFH和4000~40FFH内容,也可自己重新赋值。 运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。 记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。 五、思考题 1、改变源地址,例如00FFH; 2、改变目的地址,例如2000H; 3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。 六、源程序及其修改原理 org 0000H Block equ 2000h mov dptr, #Block ; 起始地址 mov r0,#12h mov a,#20h ;修改2000h开始的地址所存放的内容为20h Loop: mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思考题3) Loop1: movx @dptr,a inc dptr ; 指向下一个地址 djnz r1,Loop1 djnz r0, Loop ; 双循环实现r0,r1计数相乘 (以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4) mov r0, #20h ;改变源地址为2000h(思考题1) mov r1, #00h mov r2, #50h;改变目的地址为5000h(思考题2) mov r3, #00h mov r7, #0 Loop: mov dph, r0 mov dpl, r1 movx a, @dptr mov dph, r2 mov dpl, r3 movx @dptr, a

相关文档
相关文档 最新文档