当前位置:首页 > 单片机实验指导书 - 图文
实验一 清零程序的设计与调试(验证性实验)
一、 实验目的
1. 熟悉MCS-51汇编语言指令系统
2. 掌握MCS-51汇编语言程序的设计和调试方法、过程
二、 实验内容
编写一个把7000H-70FFH的内容清零的程序,在实验机上调试、运行,打开寄存器或内存窗口(地址及内容均可修改)来观察程序运行结果。
三、 实验步骤
1、 启动MCS51的 ASM语言(或C51语言)调试环境,输入源程序 并保存(如T1.ASM)。注意在该环境下,8051的源程序开头应包含下列语句: CSEG AT 0000H LJMP START
CSEG AT 4100H;注意用户可使用的存储区为4000H以后 START:MOV SP,60H 末尾应有 END 结束语句
2、 打开编译菜单进行汇编,并阅读提示信息,如果有错误,查看.LIT文件中的错误信息(错误的行号及原因),然后选中“文件”菜单中的“编辑文件”选项,对T1.ASM进行修改,修改后返回主界面,存盘后重新汇编,直到无错为止。
3、如果编译无误,则进入链接,链接如果有错误,则应查看.M51文件中的错误信息,错误修改同2,如果没有错误,则进入下一步。
4、选中“运行”菜单中的“单步运行”选项,运行程序。
5、利用“运行”菜单中各种调试手段对源程序进行运行调试,同时可打开寄存器或内存窗口(地址及内容均可修改)来观察程序运行结果。
R0=FF n DPTR+1 ,R0+1 00送7000 R0=00 开 始
四、 要求
做图)及程序清单。
结 束 实验完成后,写出实验报告,要求有实验步骤、结果、心得,详细的流程框图(尺规
实验二 数据块传送程序设计与调试(操作性实验)
一、 实验目的
1.进一步掌握MCS-51单片机基本程序调试方法
2.掌握RAM中的数据传送方法一:P2口锁存高8位法 3、掌握RAM中的数据传送方法二:DPTR作指针传送法
二、 实验内容
编程将首址为1000H的源区50H个字节数据块,传送到首地址为3045H目的RAM区。经调试运行后观察寄存器及存储单元的内容。
开 始 三、 实验程序框图
如图所示(为法1的流程)。
四、 实验步骤
按照实验程序框图编制程序,启动MCS51
的 ASM语言(或C51语言)调试环境,输入源程序并保存(如T2.ASM)。注意在该环境下,8051的源程序开头应包含下列语句:
CSEG AT 0000H LJMP START
CSEG AT 4100H;注意用户可使用的存储区为4000H以后
START:MOV SP,60H
P2口、R0、R1、R2赋初值 1000H内容送3045H R0+1、R1+1、R2+1 末尾应有END结束语句
R2=50H? 然后按照实验一介绍的汇编步骤一步一步进行。
N 五、编程提示:
MCS-5l单片机外部RAM的地址空间为64K,地址总线为16位,访问外接RAM可执行如下指结 束 令:
MOVX A,@DPTR
MOVX @DPTR,A 或者用
MOVX A,@Ri MOVX @Ri,A 1、其中DPTR为16位地址寄存器,地址高8位存于DPH,地址低8位存于DPL,Ri(i=0,1)是8位寄存器,作为地址指针时仅存低8位地址. 2、 可以用R0和R1对64K外接RAM空间的任意一个单元进行间接寻址。这样就使MCS51单片机外接RAM的地址指针由1个变成3个,大大方便了程序设计。
五、 要求
实验完成后,写出实验报告,要求有实验步骤、结果、心得,详细的流程框图(尺规做图)及程序清单。
Y 实验三 循环彩灯控制实验(操作性实验)
一、实验目的
1、学习P1口作为一般I/O口的使用方法。 2、学习延时子程序的编写和使用方法。 3、8031内部定时/计数器的使用方法 4、掌握中断处理程序的使用方法
一、实验内容(两个自选一个)
内容一:软件延时法控制循环彩灯循环:
① P1口做输出口,用导线将P1.X与八只发光二极管相连,编写循环控制程序,使发
光二极管循环点亮。
②自行设计变换花样,如:L1、L2?L8依次点亮---依次熄灭---全亮---全灭 ③调整延时时间,观察彩灯循环时间快慢的变化 内容二:硬件定时控制循环彩灯循环:
①将P1口接8个发光二极管编写程序模拟一循环彩灯,8031内部定时器T1设为方式1,每隔0.1秒钟溢出中断一次。
②变换花样为:L1、L2?L8依次点亮---依次熄灭---全亮---全灭。各时间间隔均为0.5秒钟
三、实验提示
内容一提示:P1口为准双向口,P1口的每—位都能独立地定义为输入位或输出位。作
为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。
延时程序的实现常用的有两种方法,—是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后—种方法。
本实验系统晶振为6.144MHZ,则—个机器周期为12÷6.144us即1÷0.512us.现要写一个延时0.1s的程序,可大致写出如下: MOV R7,#200 (1) DEL1:MOV R6,#X (2) DEL2:DJNZ R6,DEL2 (3) DJNZ R7,DEL1 (4)
上面MOV、DJNZ指令均需两个机器周期,所以每执行—条指令需要1÷0.256us,现求 1÷0.256+ (1÷0.256 +X x1÷0.256+1÷0.256)X 200=0.1X1E6 指令(1) 指令(2) 指令(3) 指令(4) 所需时间 所需时间 所需时间 所需时间 算得X二126,代入上式可得延时时间约为0.100004S
四、连线方法
执行实验内容1程序时:P1.0一P1.7接发光二极管L1-L8
执行实验内容2程序时:P1.0一P1.7接按钮开关K1一K8:74LS273的S00-S07接发光二极管L1-L8,74LSS273的片选端CSU8接CS0,(地址:CFA0-CFA7H) 五、硬件电路图
六、参考流程图
内容二提示:
定时常数的确定
定时计数器的输入脉冲周期与机器周期一样, 为振荡频率的l/12.本实验中时钟 频率6.144MHZ,现要采用中断方法来实现0.5秒延时,要使定时器1每隔0.1秒产一次中断.CPU响应中断后将R0中计数值减—,令RO=05H即可。 定时器时间常数可按下述方法确定:
-6
机器周期=12÷晶振频率=1.9531X10s
设计数初值为X,则(2E+16-X)X1.9531X10E-6=0.1,可求得X=14336 即X=3800H,故初始值为TH1=38H,TLl=OOH
共分享92篇相关文档