您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页单片机原理实验 报告

单片机原理实验 报告

来源:五一七教育网


实 验 报 告

课程名称: 单片机原理实验 姓 名: 学 号: 专 业: ___ 学 期:

任课教师:

实验(1)名称:置数、拆字及拼字

指导老师:

实验人员:实验地点: 实验时间:

实验内容(实验要求、实验原理、程序设计、现象及结果):片外RAM置数,以及拆字与拼字 程序设计包括:程序流程图、源代码以及必要的说明(对流程图和源代码的说明)

一、实验要求 (1)置数

将70-8FH和2000-20FFH单元内容置数。 (2)拆字程序

把2000H内容拆开,高4位送2001H低4位,低4位送2002H地4位,2001H、2002H、高位清零。 (3)拼字

把2000H、2001H的低4位分别送入2002高4位和低4位。 二、实验原理 (1) 置数

置数1 程序开始 R1赋值70H,R2赋值32(循环次数) 0FFH赋给R1指向 的内部RAM存储单 元 R1自增1 R1=0? N R1=R1-1 Y 程序结束 置数2 程序开始 R1赋值2000H,R2赋值00(循环次数) 第 1 页

0FFH赋给R1指向 的内部RAM存储单 元 R1自增1 R1=0? N R1=R1-1 Y 程序结束 (2)拆字程序 开始 2000H内容送A 高地位交换 屏蔽高4位后送2001H A内容送2000H 屏蔽高四位后送2001H 结束

(3)拼字

开始

2000H内容送A,屏蔽高4 第 2 页

高低位交换,送B

三、程序设计 (1)置数(1)

MOV R0,#70H MOV R1,#20H

LOOP: MOV @R0,#0FFH

INC R0

DJNZ R1,LOOP

END 置数(2)

MOV DPTR, #2000H MOV R1,#00H

LOOP: MOV A,#0FFH

MOVX @DPTR,A INC DPTR

DJNZ R1,LOOP

END

(2)拆字程序 ORG 00H AJMP MAIN ORG 0030H

MAIN: MOV DPTR,#2000H MOV A,#12H

MOVX @DPTR,A CLR A

MOVX A,@DPTR SWAP A

ANL A,#0FH

第 3 页

INC DPTR

MOVX @DPTR,A MOV DPTR,#2000H MOVX A,@DPTR ANL A,#0FH

MOV DPTR,#2002H MOVX @DPTR,A

END

(3)拼字 ORG 000H AJMP MAIN ORG 30H

MAIN: MOV DPTR,#2000H MOV A,#12H MOVX @DPTR,A INC DPTR MOV A,#34H MOVX @DPTR,A

PINZI: MOV DPTR,#2000H MOVX A,@DPTR ANL A,#0FH SWAP A MOV B,A INC DPTR

MOVX A,@DPTR ANL A,#0FH ORL A,B INC DPTR

MOVX @DPTR,A END

四、现象及结果

第 4 页

置数:1.程序编译通过后,70-8FH单元的内容全部显示为

0FFH。

2.程序编译通过后,2000-20FFH单元的内容全部显

示为0FFH。

拆字:程序运行编译通过后,2000H单元显示12,2001H单元

显示2,2002H单元显示1。

拼字:程序运行编译通过后,2000H单元显示12,2001H单元

显示34,2002H单元显示24。

实验(2)名称:数据传送、排序与查找

实验内容:数据传送、排序与相同数据的查找 一、 实验要求 (1)数据传送

现将0000-1FFFH单元置数,再将0000-1FFFH单元内的内容传送到3000-4FFFH单元. (2)数据排序

将50H-5AH的数用冒泡排序法排序后结果依然放入50-5AH中。

(3)查找相同数

查找2000-200FH中为零的数的个数,把个数放在2001H中。

二、 实验原理 (1) 数据传送

第 5 页

(2)数据排序

开始 字节数送R0,查找字节送R1` 相同否? R1+1 第 6 页

DPTR+1 查找相同

(3)数

三、 程序设计 (1)数据传送

MOV DPTR,#0000H MOV A,#11H MOV R3,#00H MOV R0,#20H LOOT: LOOP:

MOVX @DPTR,A INC DPTR INC R3

CJNE R3,#00H,LOOP DJNZ R0,LOOT MOV R1,#00H MOV R2,#20H

MOV DPTR,#3000H LOOA: LOOB:

MOV A,DPH SUBB A,#30H MOV DPH,A

第 7 页

MOVX A,@DPTR MOV R7,A MOV A,DPH ADD A,#30H MOV DPH,A

MOV A,R7

MOVX @DPTR,A INC DPTR

INC R1

CJNE R1,#00H,LOOB DJNZ R2,LOOA END

(2)数据排序

MOV R0,#50H

MOV R7,#0AH LOOP2:

MOV A,R0 MOV R1,A MOV A,R7 MOV R2,A LOOP:

MOV 40H,@R0 INC R1

MOV A,@R1 MOV 41H,A CLR C

SUBB A,40H JNC LOOP1 MOV @R1,40H MOV @R0,41H LOOP1:

DJNZ R2,LOOP INC R0

DJNZ R7,LOOP2

第 8 页

END

(3)查找相同数

MOV DPTR,#2000H MOV R0,#20H MOV R1,#0H LOOP:

MOVX A,@DPTR CJNE A,#0H,LOOP1 INC R1 LOOP1:

INC DPTR

DJNZ R0,LOOP MOV DPTR,#2100H MOV A,R1

MOVX @DPTR,A AJMP $ END

四、现象及结果

(1)数据传送

当程序运行通过后,查看0000-1FFFH单元时内容被置数0FFH,此时3000-4FFFH单元内容为空,当数据传送完毕,0000-1FFFH单元内容为空,而3000-4FFFH内容为0FFH,数据传送成功。 (2) 数据排序

当程序编译通过后,在50-5AH单元内输入任意十个数据,运行后50-5AH单元内数据会按照从小到大依次排序。

(3)查找相同数

当程序编译通过后,在2000-200FH单元内输入16个任意数(包括0),然后运行后,在2001H中会显示在2000-200FH单元内输入的0的个数。

第 9 页

实验(3)名称:I/O控制

实验内容:外部中断的使用,以及Timer定时器的使用 一、实验要求

(1)外部中断的使用

八个灯,当输入外部中断时,中断一次亮一个,依次亮完后,再来中断时有反向依次亮回去,无限循环下去。

(2)Timer定时器的使用

八个灯,中断一次八个灯依次亮(中间相隔一秒),再来中断,八个灯同灭同亮三次,再来中断时,八个灯反向逐一亮(中间相隔一秒),再来中断时八个灯同灭同亮三次,无限循环下去。

二、实验原理

(1)外部中断的使用

在主程序开始前设置INT0 ORG 0003H

AJMP INT

主程序中设置

SETB EA 开总中断 SETB EX0 允许外部中断

SETB PX0 外部中断设置为高优先级 SETB IT0 边沿触发方式 INT:中断子程序

(2)Timer定时器的使用 延时子程序开始 R7赋20 初始化定时器T1工作方式1 赋计数初值3CB0H,启动定时

第 10 页

TF1=1?

N 原地等待 Y

清零TF1

R7=0 ? N r7-1 Y

RETI

三、程序设计

(1)外部中断的使用 ORG 0000H

AJMP START ORG 0003H LJMP INT START:

SETB EA SETB EX0 CLR PX0 SETB IT0

MOV A,#0FEH MOV R1,#0H MOV R0,#0H MOV P1,#0FFH AJMP $ INT:

CJNE R0,#0H,LOOP MOV P1,A RL A DEC A

第 11 页

INC R1

CJNE R1,#7H,LOOP1 INC R0 LOOP1: RETI LOOP: MOV P1,A INC A RR A

CJNE R1,#0H,LOOP2 DEC R0 LOOP2: DEC R1 RETI END

(2)Timer定时器的使用 ORG 0000H AJMP MAIN ORG 000BH AJMP INT ORG 0003H AJMP INTI ORG 0030H MAIN:

MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 CLR PX0 SETB IT0 SETB EX0 SETB EA

MOV A,#0FFH MOV R1,#0H MOV R0,#0H

第 12 页

MOV P1,A MOV R5,A AJMP $ INT:

DJNZ R7,LOOP5 CJNE R5,#0H,LOOP4 CPL A MOV P1,A

DJNZ R6,LOOP3 AJMP OUT LOOP4:

CJNE R0,#0H,LOOP RL A DEC A MOV P1,A INC R1

CJNE R1,#8H,LOOP3 INC R0 AJMP OUT LOOP:

DEC A RR A

MOV P1,A

CJNE R1,#0H,LOOP2 DEC R0 LOOP2:

DEC R1

CJNE R0,#0H,LOOP3 OUT:

MOV R5,A CLR TR0 SETB EX0 MOV A,0FFH RETI LOOP3:

MOV R7,#20

第 13 页

LOOP5:

MOV TH0,#3CH MOV TL0,#0B0H RETI INTI:

MOV R7,#20 MOV R6,#7H CLR EX0 SETB TR0 RETI END

四、现象及结果

中断:当程序编译通过后,将程序导入MONITOR当中,与试

验箱相连接,当外部中断时,中断一次亮一个,依次亮完后,再来中断时又反向依次亮回去(中断一次亮一个),无限循环下去。

定时器:当程序编译通过后,将程序导入MONITOR当中,与

试验箱相连接,当外部中断时,中断一次,八个灯依次亮(中间相隔1秒),再来中断时,八个灯同灭同亮三次,再来中断时,八个灯反向逐一亮(中间相隔一秒),再来中断时八个灯同灭同亮三次,无限循环下去。

实验(4)名称:串口通讯

第 14 页

实验内容:单片机与PC机通讯方法

一、实验要求

利用串行通信将程序当中的一串数字或字母送入MONITOR当中 ,再由MONITOR送给计算机,并显示出来。 二、实验原理

MCS-51单片机串行口发送接受数据时,通过两个穿行缓冲器SBUF进行,这2个缓冲器采用一个地址(98H),但在物理上是的。其中接收缓冲器只能读出不能写入,发送缓冲器只能写入不能读出。 1. 发送过程

由MOV SBUF,A启动,此时待传送的数据由累加器传入串行发送缓冲器SBUF,由硬件自动在发送字符的始末加上起始位、停止位及其他控制位,而后在移位脉冲控制下低位在前高位在后诸位从TXD端发出。 2接收过程:

串行口接受与否受制于REN状态,当REN被置1后,允许接受,当接收完停止位时,控制电路使中断标志R1的值置为1,此时程序可通过MOV A ,SBUF指令将接收到的字符从送入累加器A,从而完成一帧数据的接收工作。

三、程序设计

ORG 0000H

AJMP MAIN ORG 0023H AJMP INT

ORG 0030H MAIN:

MOV TMOD,#20H

MOV TH1, #0F4H MOV TL1, #0F4H MOV SCON,#50H MOV R0, #30H SETB EA SETB ES

SETB TR1 AJMP $

第 15 页

INT: CLR RI

MOV A, SBUF MOV SBUF,A JNB TI, $ CLR TI MOV @R0, A ajmp out OUT: RETI END

四、现象及结果

程序编译通过后,将程序导入MONITOR当中,打开DPFLASH串口通行窗口,从键盘上输入任意一串数字、字符或字母等,按下发送后,在串口通行窗口下会显示相同的一串数字、字符或字母。

第 16 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务