单片机.docx

上传人:b****4 文档编号:12380399 上传时间:2023-04-18 格式:DOCX 页数:15 大小:20.31KB
下载 相关 举报
单片机.docx_第1页
第1页 / 共15页
单片机.docx_第2页
第2页 / 共15页
单片机.docx_第3页
第3页 / 共15页
单片机.docx_第4页
第4页 / 共15页
单片机.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机.docx

《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(15页珍藏版)》请在冰豆网上搜索。

单片机.docx

单片机

单片机实验1汇编语言程序设计实验

----存储器块清零或赋值

专业:

_自动化_班级:

自动1405姓名:

毛倩

学号:

201423020526完成日期:

2016-11-6成绩评定:

一.实验目的

1熟悉存储器的读写方法,熟悉51汇编语言结构。

2熟悉循环结构程序的编写。

3熟悉编程环境和程序的调试。

二.实验内容

指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。

例如将

4000H开始的100个字节内容清零或全部赋值为33H。

三.实验仪器

微机、VW,WAVE600编0程环境软件,(单片机实验箱)

仿真器--仿真器设置-Lab6000/Lab6000通用微控制器MCS5实验伟福

软件模拟器

四.实验步骤

1文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,

源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。

2查看存储器菜单使用:

窗口---数据窗口---XDATA观察存储器内容

3查看SFR:

窗口---CPU窗口查看CPU寄存器SFR

4单步执行:

执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存

器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错

误原因,修改。

5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。

编译器默认设置:

程序框图

参考程序:

Blockequ4000h

movdptr,#Block;起始地址

movr0,#10;清10个字节mova,#33h;

Loop:

movx@dptr,a

incdptr;指向下一个地址

djnzr0,Loop;记数减一

ljmp$

end

五.实验结果(截图)

单步运行

SFR窗口

最终结果

单片机实验2存储块移动

专业:

_自动化_班级:

自动1405姓名:

毛倩

学号:

201423020526完成日期:

2016-11-6成绩评定:

一.实验目的

1熟悉51汇编语言程序结构。

2熟悉循环结构程序的编写,进一步熟悉指令系统。

3熟悉编程环境和程序的调试。

二.实验内容

将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。

三.实验仪器

微机、VW&WAVE60软00件,(单片机实验箱)

注意:

在编程环境中,可以通过软件仿真,观察程单片机运行情况。

程序流程图

源程序

org1000h

movr6,#10;首位字节内容

movr0,#30h;r0r1用于存放源地址3000h

movr1,#00h

movr2,#30h;r2r3用于存放目的地址3050h

movr3,#50h

movr7,#10;定义字节长度

Loop:

movdph,r0;使DPTR指向源地址

movdpl,r1

mova,r6;;将R6单元中的值转移到dptr指向的单元

movx@dptr,a

movr6,a;数据保护

movxa,@dptr;数据转移

movdph,r2

movdpl,r3

movx@dptr,a;

incr1;源地址增1

incr3;目的地址增1

djnzr7,Loop;字节长度减1,不等于0,跳转到Loop

ljmp$;单步循环

end

四.实验结果(截图)

单片机实验3数据排序

专业:

_自动化_班级:

自动1405姓名:

毛倩

学号:

201423020526完成日期:

2016-11-6成绩评定:

一.实验目的

1了解数据排序的常用算法,掌握冒泡算法。

2进一步熟悉编程环境和调试方法。

3熟悉汇编程序设计。

二.实验内容

将50H开始的10个随机数按从小到大的顺序排列。

三.实验仪器微机、WAVE6000编程环境

四.实验步骤

由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)

如(6,2,4,9,3,7,1,5,8,0)

方法是:

窗口---数据窗口---DATA找到50H开始的10个2位16进制数,双

击,修改其数值,之后编译(下载),单步执行,查看排序执行过程

源程序:

org1000h

Sizeequ10;数据个数

Arrayequ50h;数据起始地址

Changeequ0;交换标志

Sort:

movr0,#Array

movr7,#Size-1

clrChange;清除交换标志

Goon:

mova,@r0

movr2,a

incr0

movB,@r0

cjnea,B,NotEqual;比较累加器A、B,不相等跳转到NotEqual

sjmpNext

NotEqual:

jcNext;前小后大,不交换

setbChange;前大后小,置交换标志;排序是否结束标志?

xcha,@r0;交换

decr0;地址减1

xcha,@r0

incr0;地址加1

Next:

djnzr7,Goon;数据个数减1不等于0,跳转Goon

jbChange,Sort;交换标志为1,跳转Sort

ljmp$;单步循环

end

五.实验结果(截图)

排序前

单步运行

排序后

单片机实验4P1口输入输出实验

专业:

_自动化_班级:

自动1405姓名:

毛倩

学号:

201423020526完成日期:

2016-11-6成绩评定:

一.实验目的

1.熟悉P1口的功能。

2.熟悉延时子程序或定时中断程序的编写和使用。

3.初步熟悉单片机软硬件设计方法。

二.实验内容(两内容分开做)

硬件实验需要连接硬件仿真器,连接方式如下:

菜单:

仿真器/仿真器设置:

选择仿真器/选择仿真头/LAB8000/LAB6000通用微控制器/MCS51实验

1.P1口做输出口接八只发光二极管,编写程序,使发光二极管循环亮灭。

实验箱的发光二级管LED是高电平点亮,低电平灭。

2.P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二

极管。

编写程序读取开关状态,将此状态在发光二极管上显示出来。

三.实验仪器

微机,WAVE800编0程环境、实验箱

注意:

当P1口用作输入口时,必须先对它置”1”。

编程时应注意P1.0,P1.1作为输入时应先置1,才能正确读入值。

流程图:

实验

(1)

源程序:

org1000h

Loop:

mova,#01h;P1口初值

movr2,#8;I/O口循环个数

output:

movP1,a;P1口输出

rla;累加器A左移一位

callDelay;调用延时子程序

djnzr2,Output;R2减1,不等于0跳转到Output

ljmpLoop;循环点亮P1口

Delay:

;延时子程序

movr6,#200;2*125*200*12/12000000=50ms

DelayLoop1:

movr7,#125

DelayLoop2:

djnzr7,delayLoop2

djnzr6,delayLoop1

ret

end

实验

(2)

源程序:

org1000h

key0equP1.0;位定义

key1equP1.1

led0equP1.2

led1equP1.3

SETBkey0;读引脚,向对应位写1

SETBkey1

LOOP:

movC,key0;cpu读key0状态

movled0,C;key0状态写入led0

movC,key1

movled1,C

LJMPLOOP;跳回LOOP

end

四.实验现象

实验一:

与P1口连接的八个LED灯一次循环点亮,即为八位流水灯;

实验二:

当开关处于闭合状态时,对应的LED灯被点亮,开关断开,LED灯

熄灭。

实验五计数器实验

专业:

_自动化_班级:

自动1405姓名:

毛倩

学号:

201423020526完成日期:

2016-11-6成绩评定:

一.实验目的

1熟悉计数器的使用方法。

2熟悉计数器的硬件电路连接。

3熟悉计数器的软件设计。

二.实验内容

硬件实验需要连接硬件仿真器,连接方式如下:

菜单:

仿真器/仿真器设置:

选择仿真器选择仿真头

LAB8000/LAB6000通用微控制器MCS51实验

8031内部定时计数器0,按计数器模式和工作方式1工作,对P3.4(计数

器0计数脉冲输入T0)引脚进行计数。

将其计数数值按二进制数用P1口驱动

LED灯显示出来。

本程序显示的数值为计数器的第2~8位。

说明:

本实验中,内部计数器起计数器作用。

外部事件计数脉冲有P3.4引入定

时器T0。

单片机在每个机器周期采样一次输入脉冲,因此单片机至少需要两

个机器周期才能检测到一次跳变。

这就要求被采样电平至少保持一个完整的机

器周期,以保证在变化之前就被采样。

同时,这就决定了输入波形的频率不能

超过机器周期频率。

三.实验仪器

微机、WAVE600编0程环境,伟福6000实验箱

注意:

P3.4接单次脉冲

实验箱的单次脉冲(高电平,低电平)接口如下图中间位置:

绿色按钮为脉冲产生按钮:

程序流程图:

源程序:

ORG0000H

LJMPMAIN

ORG1000H

MAIN:

MOVR7,#7;TH0左移7位

MOVTMOD,#05H;定时器0,方式1

MOVTH0,#0;初值0000h

MOVTL0,#0

MOVP1,#0;P1复位

SETBTR0;开启计数器0

LOOP:

MOVR1,#0FEH

MOVR2,#01H

MOVA,R1;TL0&FEH,获得TL0高七位,存放在R1

ANLA,TL0

RRCA;

MOVR1,A

MOVA,R2;TL0&01H,获得TH0最低位,加上R1存放在R3

ANLA,TH0

LOOP1:

RLA;左移七次

DJNZR7,LOOP1

ADDA,R1

MOVR3,A

MOVP1,R3;P1口显示TH0.0+TL0.7_0.1共八位

LJMPLOOP

END

四.实验现象

本实验程序设计的显示16位DPTR数据中的2~8位,并用LED显示其

二进制数值。

当外部按键按下两次后,LED状态改变一次,即按键次数每增加

2,LED对应的二进制数值加1,故本实验最多能记录512次按键,此时LED

全亮。

实验六外部中断实验

专业:

_自动化_班级:

自动1405姓名:

毛倩

学号:

201423020526完成日期:

2016-11-6成绩评定:

一.实验目的

1熟悉外部中断的硬件电路,中断技术的基本使用方法。

2熟悉外部中断的软件设计。

二.实验内容

硬件实验需要连接硬件仿真器,连接方式如下:

菜单:

仿真器/仿真器设置:

选择仿真器选择仿真头

LAB8000/LAB6000通用微控制器MCS51实验

利用实验箱上的单脉冲按键和发光二极管,蜂鸣器,实现:

用单次脉冲申

请中断,在中断服务程序中对输出信号进行翻转(每当输出一个单次脉冲时(产

生低电平一个脉冲),发光二极管(L0)亮灭变化一次),并使蜂鸣器响一段时

间,修改相关参数使蜂鸣器响的时间改变。

蜂鸣器是在哪里关闭的?

三.实验仪器

微机、VW,WAVE600编0程环境,实验箱

连线:

P1.0连接L0;

喇叭连接P1.1

INT0(P3.2)连接低电平单次脉冲。

实验箱的单次脉冲(高电平,低电平)接口如下图中间位置:

绿色按钮为脉冲产生按钮:

注意

中断服务程序(ISR)关键:

1保护进入中断时的现场,现场是指中断发生时各个寄存器,数据存储区的内

容,为了能够继续完成没完成的工作状态,在退出中断之前需恢复现场(还原

在中断程序中修改的而在主程序用到的寄存器,存储器的内容)。

本例中保护

CPU状态寄存器PSW,R0,R1,等的内容。

(例程中R2没有被保护,它的值是

不是被中断服务程序修改了,可以修改程序看看与保护后的结果的不同)。

2中断重入的设置中断相关寄存器的设置:

中断寄存器IE,中断触发方式的设

置。

4中断程序和子程序的区别。

中断程序不是程序调用的,中断发生时,CPU

就执行相应中断服务程序,每个中断对应固定的开始地址,每个中断向量8

个字节空间。

程序流程图:

源程序:

LEDequP1.0;宏定义

SpeakerequP1.1

LEDBufequ0

ljmpStart

ORG0003H;外部中断0入口地址0003H

LJMPINT0;跳转外部中断0处理程序

ORG1000h

INT0:

pushPSW;保护现场

PUSH1;R1进堆栈,采用直接寻址方式,第0组R1的地址为1

PUSH0;R0进堆栈,采用直接寻址方式,第0组R0的地址为0

cplLEDBuf;取反LED

movc,LEDBuf

movLED,c

MOVR2,#55H;R2没有进堆栈,中断程序中会改变其值

movR1,#250;蜂鸣器开通时间(脉冲数)

Loop:

;调制蜂鸣器脉冲

clrSpeaker;关闭蜂鸣器

callDelay;延时

setbSpeaker;开通蜂鸣器

callDelay;延时

DJNZR1,Loop;R1不等于0,跳转LOOP

POP0;R0出堆栈,采用直接寻址方式

POP1;R1出堆栈,采用直接寻址方式

POPPSW;恢复现场

Reti;中断返回

Delay:

movr0,#250;修改参数,蜂鸣器响时间长短不同

djnzr0,$;$程序计数器PC当前值

RET

Start:

clrLEDBuf;LEDBuf清零

clrLED;熄灭LED灯

movTCON,#01h;外部中断0下降沿触发(IT0=1)

movIE,#81h;打开外部中断允许位(EX0)及总中断允许位(EA)

MOVR0,#99H;R0赋值

MOVR1,#99H;R0赋值

MOVR2,#99H;中断程序中R2没有进栈保护,但值在中断程中

被修改为55H,执行一次中断程序后完其值被

改变

OFFSpeaker:

clrSpeaker;关蜂鸣器在中断里面打开了,没有关闭

ljmpOFFSpeaker

四.实验现象

现象描述:

当绿色按钮按下后,产生一个单脉冲,LED状态改变,蜂鸣器响一次。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1