单片机实验报告

  • 格式:docx
  • 大小:221.76 KB
  • 文档页数:11

单片机实验报告

一、实验目的

1. 纯熟使用 Keil、Protues 两款软件

2. 通过上机操作,增强个人动手实践能力

3. 加深对理论知识的理解

4. 培养运用汇编语言进行初步编写程序的能力

二、实验内容

1. 将片外 RAM3050-306FH 中数据转移至片内 70-8FH 中。规定:能够从 Keil 或 Protues 上看到 RAM 的数据转移成果。

2. 设计一种外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令 P2 口的

LED 轮流循环点亮。

规定:开发板或 Prrotues 演示

3. 将片内存储器 80H 中寄存的 BCD 码转换为 ASCII 码,规定使用表格查询技术。规定:在 Keil 或 Protues 上看到数据转换成果。 4. 各使用中断方式和查询方式设计一种方波发生器,频率为 50HZ。规定:Protues 使软件间示波器显示方波。

三、实验程序

1. \\将片外 RAM3050-306FH 中数据转移至片内 70-8FH 中

ORG 0000H

AJMP MAIN \\上电,转向主程序

ORG 0030H \\主程序入口

MAIN: MOV DPTR,#3050H \\数据指针指向地址 3050H

MOV A,#04H \\将立刻数 04H 送 A 寄存器

MOV R0,#20H

NEXT: MOVX @DPTR,A

INC DPTR \\数据指针 DPTR 自加一

DJNZ R0,NEXT \\判断与否跳转到 NEXT 或继续向下执行 MOV DPTR,#3050H

MOV R0,#70H

MOV R2,#20H

NEXT1:

MOVX A,@DPTR

MOV @R0,A

INC DPTR

INC R0

DJNZ R2,NEXT1

SJMP $ \\等待

END

2. \\设计一种外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令 P2 口的 LED 轮流循环点亮

ORG 0000H SJMP MAIN \\上电,转向主程序

ORG 0003H \\外部中断 0 向量入口

AJMP INSER

ORG 0030H \\主程序入口

MAIN: SETB EX0 \\允许外部中断 0 中断

SETB IT0 \\选择边沿触发方式

SETB EA \\CPU 开中断

HERE: SJMP HERE \\等待中断

ORG 0200H

INSER: MOV R2,#08H \\设立循环次数

MOV A,#01H \\赋初值,设立高电平亮

NEXT: MOV P2,A \\将初值送往 P2 口

LCALL DELAY \\ 延时 RL A \\左移一位

DJNZ R2,NEXT \\判断循环次数,与否跳转到 NEXT 或继续向下执行

RETI \\中断返回

DELAY: MOV R3,#0FFH \\延时程序

DEL2: MOV R4,#0FFH

DEL1: NOP

DJNZ R4,DEL1

DJNZ R3,DEL2

RET

END

3. \\将片内存储器 80H 中寄存的 BCD 码转换为 ASCII 码,规定使用表格查询技术

ORG 0000H LJMP MAIN

ORG 0030H\\主程序起始地址

MAIN:

MOV 80H,#05H \\将立刻数 50H 转送内存单元 80H

MOV A,80H \\将内存单元 80H 中的内容送寄存器 A

MOV DPTR,#TAB

MOVC A,@A+DPTR \\A 寄存器内容加指针偏移量后送 A 寄存器

MOV 80H,A

RET

TAB: DB 30H,31H,32H,33H,34H

DB 35H,36H,37H,38H,39H

4.1 \\中断方式产生 50HZ 方波

ORG 0000H AJMP MAIN

ORG 0030H \\主程序入口

MAIN: MOV TMOD,#10H \\设立定时器工作模式为模式 1

MOV TH1,#0D8H \\装入 T1 计数初值

MOV TL1,#0F0H

SETB ET1 \\开中断

SETB EA \\CPU 开中断

SETB TR1 \\启动定时器 T1

HERE: SJMP HERE \\等待中断

ORG 001BH \\T1 中断向量地址

CLR TF1 \\将 TF1 清零

CPL P2.0 \\P2.0 取反输出

MOV TH1,#0D8H \\重装初值 MOV TH0,#0F0H

RETI;中断返回

END

4.2 \\查询方式产生 50HZ 方波

ORG 0000H

AJMP MAIN

ORG 0030H \\主程序入口

MAIN: MOV TMOD,#10H \\设立定时器的工作模式为模式 1

SETB TR1 \\启动定时器 T1

LOOP: MOV TH1,#0D8H \\装入 T1 计数初值

MOV TH0,#0F0H

JNB TF1,$ \\T1 没有溢出则等待

CLR TF1 \\产生溢出,清标志位 CPL P2.0 \\P2.0 取反输出

SJMP LOOP \\循环

END

四、实验成果截图

1.

2

3.

4.1

4.2