单片机课程报告

更新时间:2023-09-30 17:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

中 南 大 学

微控制器技术实验报告

年 级: 大 三 学 号: ***** 姓 名: *** 专业班级: 自动化0706 指导老师: ****

二零一零年五月

第1章 实验目的及要求

1、学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试

与脱机运行间的切换方法;

2、熟悉TD-51单片机系统板及实验系统的结构及使用;

3、进行MCS51单片机指令系统软件编程设计与硬件接口功能设计;

4、学习并掌握Keil C51与Proteus仿真软件联机进行单片机接口电路的设

计与编程调试;

5、完成指定MCS51单片机综合设计题。

第2章 实验内容

本实验分为软件与硬件两大部分,软件部分只需要尽心软件编程调试即可,硬件部分既可以利用实验室提供的设备器材进行联机调试,也可以应用虚拟软件若Proteus进行模拟仿真。要求做实验前需进行充分的准备,软件部分先写好程序、硬件部分编号线路图,或者用虚拟软件运行成功后在到实验室利用单片机等设备进行在线调试运行。

第3章 软、硬件环境

软件环境:KEIL uv3,PROTEUS7.4 硬件环境:PC机,TD-51系统板

第4章

4.1 实验内容

软件编程设计实验

实验一 清零程序与拆字程序设计

根据实验指导书之“第二章 单片机原理实验”(P17~P23页)内容,熟悉实验环境及方法,清零程序:把 7000H –7FFFH 的内容清零。 实验二 拼字程序与数据传送程序设计 1、折字程序:把 7000H 的内容拆开,高位送 7001H 低位,低位送 7002H 低位。7001H,7002H高位清零。

2、拼字程序:把 7000H,7001H 的低位相拼后送人 7002H,一般本程序用于把显示缓冲区的 数据取出拼装成个字节。

3、数据传输子程序:把(R2,R3)源 RAM 区首址内的(R6,R7)个字节数据,传送到(R4,R5) 目的 RAM 区。 实验三 排序程序与散转程序设计 1、 编写并调试一个排序子程序,其功能为用冒泡法将内部 RAM 中几个单元

字节无符号的正整数,按从小到大的次序重新排列。 2、 编写散转程序,根据 8032 片内 20H 中的内容(00 或 01 或 02 或 03)

进行散转。

4.2 实验程序流程图及算法

1、 清零程序清单:

ORG 0000H START: MOV R0,#00H MOV R1,#10H ;循环次数 MOV DPTR,#7000H D0: MOV A,#00H MOVX @DPTR,A ;清零 INC DPTR ;地址加一 INC R0 CJNE R0,#00H,D0 DJNZ R1,D0 END

图4-1清零程序流程图

为了验证程序的结果,可以将清零先改成置一,这样就可以看这个程序是否正确。

2. 折字程序:

拆字流程图如图二所示:

ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV DPTR,#7000H MOV A,#33H ;7000H中送33H MOVX @DPTR,A MOVX A,@DPTR SWAP A ANL A,#0FH ;屏蔽高四位 MOV DPTR,#7001H MOVX @DPTR,A ;送7000H高位至7001H MOV A,#01H

MOVX

A,@DPTR

MOV

DPTR,#7000H

图4-2拆字程序流程图

ANL MOV A,#0FH DPTR,#7002H ;送7000H低位至7002H

MOVX @DPTR,A

END

3. 拼字程序:

拆字程序流程图见右图4-3。 程序清单:

ORG 0000H LJMP MAIN ORG 0100H MOV DPTR,#7000H MOV A,#05H MOVX @DPTR,A MOVX A,@DPTR ANL A,#0FH SWAP A MOV R0,A MOV DPTR,#7001H MOV A,#01H MOVX @DPTR,A MOVX A,@DPTR ANL A,#0FH ORL A,R0 MOV DPTR,#7002H MOVX @DPTR,A

END

4.数据传输子程序

程序流程图见图4-4。

图4-4数据传输指令

图4-3 拼字程序流程图

图4-5 散转指令流程图

传输指令清单:

;(R2,R3)->(R4,R5) ;(R6,R7)个字节

;(R0,R1)作为计数值,与6、7相等时,传送完毕 ORG 0000H AJMP MAIN MAIN:

MOV R2,#1 ;设置各 初始值 MOV R3,#2 MOV R4,#1 MOV R5,#2AH MOV R6,#0 MOV R7,#6 MOV R0,#00H

MOV R1,#0 ;R0R1 计数初值 CJNE R6,#0,S CJNE R7,#0,S LJMP E

S: MOV DPH,R2 ;源地址数据给A MOV DPL,R3

MOVX A,@DPTR INC DPTR MOV R2,DPH MOV R3,DPL

MOV DPH,R4 ;A给目的地址 MOV DPL,R5

MOVX @DPTR,A INC DPTR MOV R4,DPH MOV R5,DPL

MOV DPH,R0 ;计数值R0R1+1 MOV DPL,R1 INC DPTR MOV R0,DPH MOV R1,DPL

MOV A,R1 ;R1异或R7,若A=0,R1=R7 XRL A,R7 JNZ S MOV A,R0

XRL A,R6;若R1=r7且R0=R6,传送完毕 JNZ S E:

END

5. 散装程序流程图见图4-5。

程序清单 ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV A,20H RL A ADD A,20H

MOV DPTR,#TABLE JMP @A+DPTR TABLE:

LJMP PM0 ;散转入口 LJMP PM1 LJMP PM2 LJMP PM3

PM0: MOV R0,#00H ; 子程序0 MOV R3,#10H MOV R1,#30H L1: MOV A,R0 MOV @R1,A INC R0 INC R1

DJNZ R3,L1 LJMP EXIT

PM1:MOV DPTR,#7000H ; 子程序1 MOV A,#33H

MOVX @DPTR,A MOVX A,@DPTR INC DPTR MOV R0,A ANL A,#0FH MOVX @DPTR,A MOV A,R0 SWAP A ANL A,#0FH INC DPTR

MOVX @DPTR,A LJMP EXIT

PM2: MOV 11H,#0FH ; 子程序2 AJMP EXIT

PM3: MOV 12H,#0FEH ; 子程序3 AJMP EXIT EXIT:NOP END

本文来源:https://www.bwwdw.com/article/g7fd.html

Top