1、Block equ 4000h mov dptr, #Block ; 起始地址 mov r0, #10 ; 清10个字节 mov a, #33h ; Loop: movx dptr, a inc dptr ; 指向下一个地址 djnz r0, Loop ; 记数减一 ljmp $ end单片机实验2 存储块移动1 熟悉51汇编语言程序结构。2 熟悉循环结构程序的编写,进一步熟悉指令系统。将指定源地址(3000H)和长度(100字节)的存储块移动到目的地址(4000H)。三实验仪器微机、WAVE6000软件,(单片机实验箱)在编程环境中,可以通过软件仿真,观察程单片机运行情况。参考程序与流程图
2、单片机实验3 数据排序1了解数据排序的常用算法,掌握冒泡算法。2 进一步熟悉编程环境和调试方法。3 熟悉汇编程序设计。将 50H开始的10个随机数按从小到大的顺序排列。三实验仪器 微机、WAVE6000编程环境由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)方法是:窗口-数据窗口-DATA 找到50H开始的10个2位16进制数,双击,修改其数值如(6,2,4,9,3,7,1,5,8,0)之后编译(下载),单步执行,查看排序执行过程冒泡算法(两层循环,以下是内层循环开始)。6,2,9,4,3,7,1,5,8,0 前大后小交换位置如下:2,6,9,4,3,7,1,5,8,0
3、前小后大不交换位置如下;2,6,9,4,3,7,1,5,8,0 前大后小交换位置如下;2,6,4,9,3,7,1,5,8,0第一次内层循环结束顺序如下:最大的数9先冒出来2,6,4,3,7,1,5,8,0,9 接着开始第二次内层循环Size equ 10 ; 数据个数Array equ 50h ; 数据起始地址Change equ 0 ; 交换标志Sort: mov r0, #Array mov r7, #Size-1 clr ChangeGoon: mov a, r0 mov r2, a inc r0 mov B, r0 cjne a, B, NotEqual sjmp NextNotEqu
4、al: jc Next ; 前小后大, 不交换 setb Change ; 前大后小, 置交换标志 xch a, r0 ; 交换 dec r0 xch a, r0Next: djnz r7, Goon jb Change, Sort流程图单片机实验4 P1口输入输出实验1熟悉P1 口的功能。2熟悉延时子程序或定时中断程序的编写和使用。3初步熟悉单片机软硬件设计方法。二实验内容(两内容分开做)1P1口做输出口接八只发光二极管,编写程序,使发光二极管循环亮灭。小实验箱(G2010)的发光二级管LED是低电平亮,高电平灭;大实验箱(LAB6000)的发光二级管LED是高电平点亮,低电平灭。2P1.0
5、,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管。编写程序读取开关状态,将此状态在发光二极管上显示出来。微机,WAVE6000编程环境、实验箱当P1口用作输入口时,必须先对它置”1”。编程时应注意P1.0,P1.1作为输入时应先置1,才能正确读入值。S0,S1就是实验箱上K0,K1 键2延时子程序示例如下:()延时程序可以作为子程序在主程序里面调用,也可以放在程序中间,顺序执行内容1参考程序大实验箱LED灯 1 亮 0 灭注:小实验箱LED灯是 1 灭 0 亮 ,程序应做相应修改Loop: mov a, #01h 内容2参考程序 KeyLeft equ P1.0
6、mov r2, #8 KeyRight equ P1.1Output: LedLeft equ P1.2 mov P1, a LedRight equ P1.3 rl a SETB KeyLeft call Delay SETB KeyRight djnz r2, Output Loop: ljmp Loop MOV C, KeyLeftDelay: MOV LedLeft, C mov r6, #0 MOV C,KeyRight mov r7, #0 MOV Ledright,CDelayLoop: LJMP Loop djnz r6, DelayLoop END djnz r7, Dela
7、yLoop ret实验五 计数器实验1 熟悉计数器的使用方法。2 熟悉计数器的硬件电路连接。3 熟悉计数器的软件设计。8031内部定时计数器0,按计数器模式和工作方式1工作,对P3.4(计数器0计数脉冲输入T0)引脚进行计数。将其计数数值按二进制数用P1口驱动LED灯显示出来。说明微机、WAVE6000编程环境,伟福6000实验箱 P3.4接单次脉冲小实验箱单次脉冲按钮在显示屏下的(黄色)按钮。小实验箱与大实验箱不同,黄色按钮可以轻轻按压产生单次脉冲,也可以彻底按下锁定脉冲。彻底按下时,按一次,其保持为高(低)电平,然后需要手动复位按下松开,之后再按下松开其保持为低(高)电平,或者轻按松开产生
8、单次脉冲。单次脉冲输出端在单次脉冲黄色按钮左侧5厘米处。实验连线如图:大实验箱单次脉冲.小实验箱的单次脉冲(高电平,低电平)接口如下图最左侧中间位置:高电平 低电平程序流程:实验六 外部中断实验1 熟悉外部中断的硬件电路,中断技术的基本使用方法。2 熟悉外部中断的软件设计。利用实验箱上的单脉冲按键和发光二极管实现:用单次脉冲申请中断,在中断服务程序中对输出信号进行翻转(对每当输出一个单次脉冲时(产生低电平一个脉冲),发光二极管(L0)亮灭变化)。小实验箱单次脉冲按钮在显示屏下的黄色按钮。与大实验箱不同,黄色按钮可以轻轻按压产生单次脉冲,也可以彻底按下锁定脉冲。彻底按下时,按一次,其保持为高(低
9、)电平,然后需要手动复位按下松开,之后再按下松开其保持为低(高)电平。与大实验箱不同,按一次其保持为高(低)电平,然后需要手动复位按下,之后再按下其保持为低(高)电平。微机、WAVE6000编程环境,实验箱连线: P1.0连接L0 INT0连接低电平单次脉冲。实验电路及连线如下:小实验箱低电平脉冲见上页图示。注意中断服务程序(ISR)关键:1 保护进入中断时的现场,并在退出中断之前恢复现场;中断重入的设置中断相关寄存器的设置:中断寄存器IE,中断触发罚方式的设置。本例中保护CPU状态寄存器PSW等。2 中断程序和子程序的区别。中断程序不是程序调用的,中断发生时,CPU就执行相应中断服务程序。程
10、序流程图:LED equ P1.0LEDBuf equ 0 ljmp Start org 3Interrupt0: push PSW ; 保护现场 cpl LEDBuf ; 取反LED mov c, LEDBuf mov LED, c pop PSW ; 恢复现场 retiStart: clr LEDBuf clr LED mov TCON, #01h ; 外部中断0下降沿触发 mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA)8086实验1 设备使用及简单示例程序验证1 熟悉软件编程环境和硬件设备资源2 熟悉工程创建的步骤,其中各个文件作用3 掌握软件菜单的使用
11、,掌握程序的调试基本步骤。以课本例4-1为源文件创建工程进行工程的调试,查看程序运行过程和结果文件不要用中文名称,保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。调试过程:窗口-数据窗口-MEMORY,观察或者修改MEMORY内容。3 查看CPU寄存器:窗口-CPU窗口,CPU寄存器ASSUME CS:CSEG , DS:DSEG , ES:ESEG SUM DW 2 DUP(?) DUP (duplicate) 含义如下:定义变量(数组)SUM,类型为字(DW),大小为2,内容不定(?) 编译器设置:编译器将用户定义的数据段分配
12、在0400H(0040H16)开始的存储器中。数据段段基址寄存器DS(0040H)。查看数据的方法:窗口-数据窗口- MEMORY -0400的位置就是你定义的数据段的数据:物理地址=段基址(DS)16+段内偏移参考程序及流程图:见课本例4-18086实验2 简单程序设计-存储块移动1 熟悉86汇编语言程序结构2 熟悉循环结构程序的编写,进一步熟悉指令系统寻址方式3 熟悉编程环境和程序的调试将指定源地址和长度(100字节)的存储块移动到目的地址。三实验仪器:微机、WAVE6000软件,实验箱注意:1 源数据块和目的数据块自己在数据段中定义。2 要查看移动后结果,定义时对源和目的块赋不同的值S db 25 dup(11h) 含义?
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1