文档库 最新最全的文档下载
当前位置:文档库 › MCS-51单片机复习要点

MCS-51单片机复习要点

MCS-51单片机复习要点
MCS-51单片机复习要点

MCS-51单片机

8051单片机是8位单片机,有40个管脚,8根数据线,16根地址线。

单片机的八大组成部分:CPU 、ROM 、RAM 、I/O 、定时/计数器、串口、SFR 、中断服务系统

一、MCS-51机的内存结构 (如图1所示)

0FFFH FFH

80H 7FH

0000H 00H 0000H

程序存储器 内部数据存储器 外部数据存储器

图1 MCS-51机的内存结构

物理上分为:4个空间, 片内ROM 、片外ROM

片内RAM 、片外RAM

逻辑上分为;3个空间, 程序内存(片内、外)统一编址 MOVC 数据存储器(片内) MOV 数据存储器(片外) MOVX

1、程序内存

寻址范围:0000H ~ FFFFH 容量64KB

EA = 1,寻址从内部ROM ;EA = 0,寻址从外部ROM

地址长度:16位 存储器地址空间为64KB 作用: 存放程序及程序运行时所需的常数。

8051 单片机6个具有特殊含义的单元是:0000H —— 系统复位,PC 指向此处; 0003H —— 外部中断0入口 000BH —— T0溢出中断入口 0013H —— 外中断1入口 001BH ——T1溢出中断入口

0023H ——串口中断入口

2、内部数据存储器

物理上分为两大区:00H ~ 7FH即128B内RAM 和SFR区。如图2所示。

7FH

资料缓冲区

堆栈区80字节数据缓冲器用

工作单元

30H

2FH

位地址:16字节

00H~7FH 128 可位寻址位

20H

1FH 3区

2区

1区32字节4组R0~R7工作寄存器

0区

00H

图2 内部数据存储器

二、殊功能寄存器SFR

寻址空间离散分配在:80H ~ FFH ,

注意PC不在此范围内。地址末尾为0或8的SFR具有位寻址功能

1、C PU是运算器加控制器

2、算术运算寄存器

(1)累加器A(E0H)

(2)B寄存器:乘、除法运算用

(3)程序状态字PSW寄存器:包含程序运行状态信息。

PSW CY AC FO RS1 RS0 OV —P

CY(PSW.7)——进位/借位标志;位累加器。

AC (PSW.6)——辅助进/借位标志;用于十进制调整。

F0 (PSW.5)——用户定义标志位;软件置位/清零。

OV (PSW.2)——溢出标志;硬件置位/清零。

P (PSW.0)——奇偶标志;A中1的个数为奇数P = 1;否则P = 0。

RS1、RS0 ——寄存器区选择控制位。

0 0 :0区R0 ~ R7

0 1 :1区R0 ~ R7

1 0 :2区R0 ~ R7

1 1 :3区R0 ~ R7

2、指针寄存器

(1)程序计数器PC

PC的内容是指明即将执行的下一条指令的地址,16位,寻址64KB范围,

复位时PC = 0000H具有自动加1功能不可寻址即不能通过指令访问。

(2)堆栈指针SP

指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H

(3)数据指针DPTR

@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB 。DPTR = DPH + DPL,也可单独使用。没有自动加1功能通过软件INC DPTR 内容加1

时序

单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序。

执令周期:即从取指到执行完,所需时间。

不同机器指令周期不一样;即使相同机器,不同的指令其指令周期也不一样。

机器周期:机器的基本操作周期。

一个指令周期含若干机器周期(单、双、四周期)

状态周期:一个机器周期分6个状态周期Si

每个状态周期含两个振荡周期,即相位P1、P2。

振荡周期:由振荡时钟产生。

振荡周期Tosc = 1/fosc

一个机器周期= 12个振荡周期= 12×1/fosc 。

例如,若fosc = 12MHz,则一个机器周期= 1μs。

时钟的产生:

通过XTAL1(19)、XTAL(18)。这两个管脚外部加石英晶体和电容组成振荡器

系统复位

通过给RST管脚加高电平理论上大于两个机器周期,实际大于10ms,系统复后

除了SP=07H ,P0、P1、P2、P3为FFH外,所有的寄存器均为00H,PC=0000H,PSW=00H 工作寄存器组R0~R7工作在0组。

并行I/O端口

并行I / O端口

四个8位I/O口P0、P1、P2、P3

作为通用I / O使用,是一个准双向口:

“读管脚在输入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态,可作高阻抗输入”MOV P1.#0FFH

MOV A,P1

读端口数据方式是一种对端口锁存器中数据进行读入的操作方式,CPU读入的这个数据

并非端口引脚的数据。(对端口进行读-修改-写类指令列如CPL P1.0是读端口锁存器而不是管脚)

一、P0口地址80H系统复位后P0=FFH

(1)P0口可作通用I / O口使用,又可作地址/数据总线口;

(2)P0既可按字节寻址,又可按位寻址;

(3)P0作为输入口使用时:是准双向口;

(4)作通用I / O 口输出时:是开漏输出;(外部管脚必须接上拉电阻)

(5)作地址/数据总线口时,P0是一真正双向口,分时使用,提供地址线A0~A7由ALE 控制信号锁存,数据线D0~D7

二、P1口地址90H地址90H系统复位后P1=FFH

2、特点

(1)无地址/数据口功能

(2)可按字节寻址,也可按位寻址

(3)作I / O输入口时:是一准双向口,不是开漏输出(无需外接上拉电阻)。

三、P2口地址A0H系统复位后P2=FFH

2、特点

(1)当P2口作为通用I / O时,是一准双向口。

(2)从P2口输入数据时,先向锁存器写“1”。

(3)可位寻址,也可按字节寻址

(4)可输出地址高8位A8~A15。

四、P3口地址B0H系统复位后P3=FFH

2、特点

(1)作通用I / O时,是一准双向口,不是开漏输出(无需外接上拉电阻)。

(2)P3口具有第二功能

1、P0口:地址低8位与数据线分时使用端口,

2、P1口:按位可编址的输入输出端口,

3、P2口:地址高8位输出口

4、P3口:双功能口。若不用第二功能,也可作通用I / O 口。

5、按三总线划分:

地址线:P0低八位地址,P2高八地址;

数据线:P0输入输出8位数据;

控制线:P3口的8位(RXD、TXD、INT0、INT1、T0、T1、WR*、RD*加上PSEN*、ALE、EA组成制总线。)

中断系统

五个中断源,两个优先级

一、中断请求源(“五源中断”)

五个中断源:入口地址

外部中断0(/INT0)0003H

T0溢出中断000BH

外部中断1(/INT1)0013H

T1溢出中断001BH

串口中断0023H

有了中断请求,如何通知CPU?

通过中断请求标志位来通知CPU。

外部中断源、定时/计数器的中断请求标志位分布在TCON中;

串口中断标志位分布在SCON中。

TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

SCON TI RI

中断请求标志位

IE0(INT0)IE1(INT1)TF0(T0)TF1(T1)TI/RI(串口)

TF1——T1的溢出中断标志。

硬件置1,硬件清0(也可软件清0)。

TF0——T0的溢出中断标志。(同TF1,只是针对T0的)

IE1 ——外部中断1(/INT1)请求标志。

外部有中断请求时,硬件使IE1置1,硬件清0。

IE0 ——外部中断0(/INT0)请求标志。

IT1 ——外部中断1(/INT1)触发类型控制位。

IT1 = 0 ,低电平触发。

IT1 = 1 ,下降沿触发。

IT0 ——外中断0(/INT0)触发类型控制位,用法同IT1。

外部中断INT0、INT1 触发方式有电平触发和跳变触发

TI ——串口发送中断标志位。

发送完数据,硬件使TI置1,软件清0(CLR TI)

RI ——串行口接收中断标志位。

硬件置1,软件清0。

二、中断控制(两级管理)

1、中断屏蔽

在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关,

第二级为五个分开关,由IE控制。

IE EA ES ET1 EX1 ET0 EX0

EA ——总控制位

ES ——串口控制位若为“1”,允许(开关接通)

ET1——T1中断控制位若为“0”,不允许(开关断开)

EX1——/INT1控制位例如,SETB EA

ET0——T0中断控制位CLR IE.7

EX0——/INT0控制位

2、中断优先级

为什么要有中断优先级?

CPU按中断申请时间先后顺序响应中断,同一时间只能响应一个中断请求。

若同时来了两个或两个以上中断请求CPU响应高级别中断。为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。同时同级的中断源申请中断CPU按优先顺序响应中断。IP PS PT1 PX1 PT0 PX0

以上各位与IE的低五位相对应,为“1”时为高级。初始化编程时,由软件确定。

例如,SETB PT0 或SETB IP.1

CLR PX0等。

同一级中的5个中断源的优先顺序是:(注意是同级)

/INT0中断高

T0中断厂家出厂时已固化好顺序

/INT1中断——事先约定

T1中断

串口中断低

中断嵌套 同级或低级中断不能打断正在响应的中断的服务程序,高级中断能够打断低级中断服务程序而形成中断嵌套

定时/计数器

定时 / 计数器 两个定时器/计数器T0 、T1 四种工作方式 中断方式定时器程序初始化主要部分如下

MOV TMOD,#DATA ;设置定时器工作方式 MOV TH0(TH1),# DATA ;给定时器计数器装入初值 MOV TL0(TL1),# DATA

SETB EA ;开中断 SETB ET0(ET1) ;开中断

SETB TR0(TR1) ;启动定时器计数器

一、定时 / 计数器的结构

T0、T1均为16位加1计数器。

TH0

TL0

1、工作方式控制寄存器 TMOD

T1 T0

TMOD GATE C//T M1 M0 GATE C//T M1 M0 GATE —— 门控位。

GATE = 0 软件启动,仅由软件置TR0(TR1)为1启动定时器/计数器;置0停止定时/计数

GATE = 1 硬件启动,软件置TR0(TR1)为1后 .INT0 管脚或 /INT1管脚高

电平启动定时器/计数器。

C//T —— 外部计数器 / 定时器方式选择位 C//T = 0 定时方式;

C //T = 1 计数方式。 M1M2 —— 工作模式选择位。

M1 M0 模式 说明

0 0 0 13位定时/计数器八位TH(7 ~ 0)+ 低五位TL(4 ~ 0)

0 1 1 16位定时/计数器TH(7 ~ 0)+ TL(7 ~ 0)

1 0

2 8位计数初值自动重装TL(7 ~ 0)TH(7 ~ 0)

1 1 3 T0工作在两个8位定时/计数。运行,而T1只能工作方式2,TCON TR1 TR0

TR0 ——定时/ 计数器0运行控制位。

软件置位,软件复位。

与GATE有关,分两种情况:

GATE = 0 时,若TR0 = 1,开启T0计数工作;

若TR0 = 0,停止T0计数。

GATE = 1 时,若TR0 = 1 且/INT0 = 1时,开启T0计数;

若TR0 = 1 但/INT0 = 0,则不能开启T0计数。

若TR0 = 0,停止T0计数。

TR1 ——定时/ 计数器1运行控制位。

用法与TR0类似。

C//T = 0 ——定时

C//T = 1 ——对外计数。

定时:fosc / 12 = 1 /(12/fosc)= 1 / Tcy

等间隔,次数已定,时间确定

即对机器周期进行计数。

左图定时时间为n×Tcy。

n

计数:脉冲不等间隔。

外部管脚输入(T0 P3.4、T1 P3.5 )每个下降沿计数一次

确认一次负跳变需两个机器周期,(要求计数脉冲的高、低

电平要大于一个机器周期)所以,计数频率最高为fosc / 24。定时器初值计算

计数脉冲的个数N=t(定时时间)/Tcy(机器周期

计数初值X=M(定时计数器的模)-N

方式0 X=213-N =8192-N

方式1 X=216-N=65536-N

方式2 X=28-N=256-N

推荐工作方式1 和方式2

例1、设计一个P1.0能产生t=1ms的周期信号发生器,主频试编程。

解:选T0;C//T=0,GATE= 0定时时间0.5ms

N = t / Tcy= t /(12×(1/fosc))= 500 所以,X = M -500 ,问:M取多少?模式0、模式1均可,取模式1,M=216

X = 65536-500=65036 = FE0CH

TH0 0FEH

TL0 0CH

程序:

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP INSE1

ORG 1000H

MAIN:MOV SP,#60H

MOV TL0,#0CH

MOV TH0,#0FEH

MOV TMOD,#01H

SETB TR0;

SETB ET0;

SETB EA

SJMP $

INSE1:MOV TL0,#0CH

MOV TH0,#0F0H

CPL P10

RETI

单片机串行接口

8051单片机有一个异步全双工串行通讯口通过RXD(P3.0)接收,通过TXD(P3.1)发送,(串行通信有单工、半双工、全双工) ,8051单片机串行口有4种工作方式。

异步通信一帧数据的格式如下

空闲位起始位 5 ~ 8位数据奇偶校验位停止位空闲位

3、串行通信方向

A B

发半双工发

收收

A 全双工 B

4、波特率

即串行通信速率。b/s 、bps

举例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为

240个字符。求波特率。

解:

(1+8+1)×240 = 2400 b/s = 2400波特。

5、串行通信接口

发送:CPU 通过指令MOV SBUF,A 来启动发送发送一帧数据完毕后TI置1,通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0 (CLR TI)

D7 D6 D5 D4 D3 D2 D1 D0 发送数据寄存器

SBUF(99H)

1 D7 D6 D5 D4 D3 D

2 D1 D0 0 发送数据

发送时钟

接收:必须置位寄存器SCON, REN位为1才能启动串口接收数据,当接收一帧数据后,RI置1 ,CPU通过查询RI=1或中断方式,通过指令MOV A.SBUF 来取走接收的数据,并软件复位RI=0(CLR RI)

接收时钟

0 D0 D1 D2 D3 D4 D5 D6 D7 1 接收数据

D0 D1 D2 D3 D4 D5 D6 D7 接收数据寄存器

SBUF(99H)

CPU

二、MCS-51机串行接口

单片机内有:通用异步接收/发送器UART

全双工,4种工作方式,波特率可编程设置,可中断。

1、串口的组成

从编程角度讲来看主要由以下寄存器组成。

PCON SMOD

SCON SM0 SM1 SM2 REN TB8 RB8 TI RI

SBUF D7 D6 D5 D4 D3 D2 D1 D0 SBUF发

SBUF收

SM0、SM1:工作方式选择位

SM2:多机通信控制位,常与RB8配合,决定是否激活RI

REN:允许接收

TB8:发送的第九位数

RB8:接收的第九位数

TI :中断标志

RI

SMOD:波特系数选择位,0 ——20 = 1

1 ——21 = 2

2、串行口的工作方式

(1)SM0、SM1=00;方式0:是8位同步移位寄存器方式,波特率固定为fosc / 12

RXD ——接收/发送数据

TXD ——产生同步移位脉冲

接收/发送完,置位RI / TI ,(要求SM2 = 0)

方式0 发送

接收

(2)SM0、SM1=01方式1:8位UART,波特率为(2SMOD×T1的溢出率)/ 32

停止位D7 D6 D5 D4 D3 D2 D1 D0 起始位发送位TXD

接收位RXD

1帧信息,10位。送RB8位

波特率可变:2SMOD / 32 ×(T1的溢出率)

发送完置位TI。

接收完数据置位RI。

置位RI是有条件的。即:

REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位为1。

此时,数据装载SBUF,停止位进入RB8,RI置1。

(3)方式2(SM0、SM1=10)、方式3 (SM0、SM1=11):9位UART,多机通信。多机通信只能工作在方式2、方式3

方式2波特率:(固定)2SMOD / 64 ×fosc

方式3波特率:2SMOD / 32 ×(T1溢出率)

数据发送

串口方式2、3发送第九位数据必须通过软件置事先写入寄存器SCON的TB8位,把要发送的数据发送到SBUF(MOV SUBF,A)启动数据发送,发送完数据置位TI。CPU通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0 (CLR TI)

数据接收

接收:必须置位寄存器SCON REN位为1才能启动串口接收数据,当接收一帧数据后此时,数据装载SBUF,接收到的第9位数据(TB8)送SCON寄存器RB8位,RI置1。,CPU通过查询RI=1或中断方式,通过指令MOV A.SBUF 来取走接收的数据,并软件复位RI=0(CLR RI)

3、波特率的设置

方式0、方式2固定。

方式1,方式3可变。波特率= 2SMOD / 32 ×(T1的溢出率)

T1溢出率= 单位时间内溢出次数= 1 /(T1的定时时间)

而T1的定时时间t就是T1溢出一次所用的时间。此情况下,一般设T1工作在模式2(8位自动重装初值)。

N = 28-t / T,t = (28-N)T =(28-N)×12 / fosc

所以,T1溢出率= 1/t = fosc / 12(28-N),

故,波特率= 2SMOD / 32 ×fosc / 12(256-N)。

若已知波特率,则可求出T1的计数初值:

y = 256-2SMOD×fosc / (波特率×32×12)

例、若fosc = 6MHz,波特率为2400波特,设SMOD = 1,则定时/计数器T1的计数初值为多少?并进行初始化编程。

解:y = 256-2SMOD×fosc / (2400×32×12)= 242.98≈243 = F3H

同理,fosc = 11.0592MHz,波特率为2400,设SMOD = 0,则

y = F4H

初始化编程:

MOV TMOD,#20H

MOV PCON,#80H

MOV TH1,#0F3H

MOV TL1,#0F3H

SETB TR1

MOV SCON,#50H

指令系统

指令按寻址方式分有7种寻址方式,直接寻址(direct)、立即寻址(#20H)、寄存器寻址(Rn)、寄存器间接寻址(@Ri)、相对寻址(rel)、寄存器变址寻址(@A+PC)、位寻址(ACC.1)

指令按功能上分有5种,传送类指令、算术运算类指令、逻辑运算及移位类指令、控制转移类指令、位操作类指令

指令三大属性。功能属性、空间属性(指令站用的字节数)、时间属性(指令执行的机器周期数)

传送类指令有四种寻址方式对A的数据传送只影响状态标志位P

访问片内RAM和SFR 指令格式MOV

唯一的一条16位传送指令MOV DPTR,#DATA16

访问片外RAM 4条指令

MOVX A,@Ri MOVX A,@DPTR( 这两条指令是读片外RAM的数据伴随着控制信号RD*有效)

MOVX @Ri,A MOVX @DPTR,A ( 这两条指令是写片外RAM的数据伴随着控制信号WR*有效)

访问程序存储器ROM 2条指令

MOVC A,@A+PC MOVC A,@A+DPTR ( 这两条指令是读程序ROM的数据伴随着控制信号PSEN*有效)

2、栈操作指令

PUSH direct

POP direct

不影响任何标志位。Direct 可以是内存RAM 128个单元任意一个单元也可以特殊功能寄存器这里注意PUSH ACC ( ACC是直接地址,不能写A) PUSH direct 指令执行中,机器自动进行两步操作:

(1)(SP)(SP)+ 1

(2)((SP))(direct)

例1、设分析:

执行PUSH DPL

PUSH DPH

后,各单元中的内容。(0AH)=23H (0BH)=01H (SP)=0BH

POP direct 指令执行中,机器也自动进行两步操作:

(1)(direct)((SP))

(2)(SP)(SP)- 1

例2、设(SP)= 40H,(40H)= 12H,(3FH)= 34H

执行POP DPH

POP DPL

后,各单元中的内容。(SP)= 3EH,(DPTR)= 1234H,

结论:1)PUSH 与POP 操作过程刚好相反;

2)进、出栈规则:

先进后出,后进先出。应注意指令书写先后顺序;

3)可用于“保护现场,恢复现场”

3、字节交换指令

XCH A,Rn

XCH A,direct 整字节交换

XCH A,@Ri

XCHD A,@Ri

SWAP A 半字节交换

不影响任何标志位。

算术运算类指令

包括:加、减、乘、除;加一、减一。

一、加法指令

ADD A,Rn ;(A)(A)+ (Rn)以下类同。

ADD A,direct

ADD A,@Ri

ADD A,#data

无符号数相加时:若C = 1,说明有溢出(其值> 255)。

带符号数相加时:若OV = D7c⊕D6c = 1,说明有溢出。

影响C OV AC这三个标志位奇偶标志P由累加器A的值决定

INC A ;(A)(A)+1 ,以下类同。

INC Rn

INC direct

INC @Ri

INC DPTR

不影响C OV AC这三个标志位奇偶标志P由累加器A的值决定

逻辑操作类指令

共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。

一、单字节逻辑操作指令

CLR A ;(A)0

CPL A A中8位按位求反。

循环左移、右移指令:

RL A

RLC A

RR A

RRC A

二、双字节逻辑操作指令

“与操作”:

ANL A,Rn ;(A)(A)∧(Rn),以下类同。

ANL A,direct

ANL A,@Ri

ANL A,#data

ANL direct,A

ANL direct,#data

例1、(P1)= 35H,使其高4位输出0,低4位不变。

解;ANL P1,#0FH

此做法称为“屏蔽”位。

“或操作”:

ORL A,Rn ;(A)(A)∨(Rn),以下类同。

ORL A,direct

ORL A,@Ri

ORL A,#data

ORL direct,A

ORL direct,#data

例2、将A中的低3位送入P1中,并且保持P1中高5位不变。

ANL A,#07H

ANL P1,#0F8H

ORL P1,A ;(P1)= P17P16P15P14P13A2A1A0

这称为“数位组合”。

“异或操作”:

XRL A,Rn ;(A)(A)⊕(Rn),以下类同。

XRL A,direct

XRL A,@Ri

XRL A,#data

XRL direct,A

XRL direct,#data

例3、设(P1)= 0B4H = 10110100B,执行:

XRL P1,#00110001B

结果按# 0 0 1 1 0 0 0 1 取反,即:

(P1)= 1 0 0 0 0 1 0 1 B = 85H

这称为“指定位取反”。

在上述ANL、ORL、XRL操作中,用于端口操作时,无论P0 ~ P3是第一,还是第二操作数,都遵循“读—修改—写”端口锁存器的操作。

§3-5 控制转移类指令

作用:改变程序计数器PC的值,从而改变程序执行方向。

分为四大类:无条件转移指令;条件转移指令;调用指令;返回指令。

一、无条件转移指令

LJMP addr16

AJMP addr11

SJMP rel

JMP @A + DPTR

LJMP addr16 ;长跳转

转移目的地址addr16 (PC);0000H ~ FFFFH,64KB

AJMP addr11 ;绝对转移

转移目的地址的形成:先(PC)(PC)+ 2;

后PC15 ~ 11不变,PC10 ~ 0 addr10 ~ 0 64KB = 216 =25×211 = 32×2KB

转移目的地址与(PC)+ 2在同一个2KB范围内。

SJMP rel ;短转移,相对寻址。

转移目的地址= (PC)+ 2 + rel,

所以rel = 转移目的地址-(PC)-2

但,实际使用中常写成SJMP addr16,汇编时会自动转换出rel。

JMP @A + DPTR ;间接转移,散转移指令。

转移目的地址= (A)+ (DPTR)

二、调用指令

LCALL addr16 ;长调用

ACALL addr11 ;绝对调用

LCALL addr16 ;转移范围64KB,不影响标志位。执行中自动完成如下过程:(PC)(PC)+ 3

(SP)(SP)+ 1

((SP))(PC7 ~ 0),保护断点地址低字节;

(SP)(SP)+ 2

((SP))(PC15 ~ 8),保存断点地址高字节;

(PC)addr16 ,目的地址送PC,转子程序。

例2、设(SP)= 07H,(PC)= 2100H,子程序首地址为3456H,执行:

LCALL 3456H

MOV A,20H

······

执行结果:(SP)= 09H,(09H)= 21H,(08H)= 03H,(PC)= 3456H

ACALL addr11 ;转移范围与(PC)+ 2在同一个2KB内。不影响任何标志位,执行中机器自动完成下列过程:

(PC)(PC)+ 2

(SP)(SP)+ 1

((SP))(PC7 ~ 0)

(SP)(SP)+ 2

((SP))(PC15 ~ 8)

(PC10 ~ 0)addr10 ~ 0

三、返回指令

从子程序返回主程序。

RET ;调用子程序返回;(子程序不能缺少的指令)

RETI ;中断子程序返回。(中断程序不能缺少的指令)

(PC15 ~ 8)((SP))

(SP)(SP)-1

(PC7 ~ 0)((SP))

(SP)(SP)-2

例3、设(SP)= 0BH,(0AH)= 23H,(0BH)= 01H

单片机实验7学习资料

单片机实验7

实验七直流数字电压表设计 姓名:田坤学号:200912512 专业:电子信息科学与技术 1.实验目的: 掌握LED动态显示和A/D 转换接口设计方法。 2.实验原理: 实验电路原理图如图A..94所示。图中显示器采用4位共阴极数码管,并按动态显示方式接线。A/D转换结束标志采用查询法检查,启动信号由软件模拟产生,时钟信号由Proteus的DClock信号发生器产生,频率为5kHz。电位器的输出电压送到A/D转换器中转换,转换结果以十进制形式显示在数码管上。调节电位器可使数码管的显示值发生相应变化。 图A.94 实验7的电路原理图 3.实验内容: (1)、学习使用Proteus软件,掌握原理图绘图方法; (2)、学习使用Keil C软件,掌握C51程序编写与调试方法;(3)、理解动态显示与A/D转换工作原理,完成单片机电压采集与显示程序的编写与调试。 4.实验步骤: (1)、在Proteus中绘制电路原理图,按照表A.9将元件添加到编辑环境中; (2)、在Keil中编写C51程序,并使之编译通过;

(3)、在Proteus中加载程序,观察仿真结果。 5.实验要求: 提交的实验报告中应包括电路原理图、含注释内容的源程序及实验结果分析。 表A.9 实验7的元器件清单 1)源程序如下: #include // 头文件 #include unsigned int tmp; //定义一个整形中间变量 sbit START=P2^5; //定义ADC0808启动位 sbit ad_busy=P2^6; //定义ADC0808转换结束标志位 sbit OE=P2^7; //定义ADC0808输出使能标志位 sbit P2_0=P2^0; //定义四个数码管 sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; char led_mod[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //LED字模

单片机实验讲义

实验一流水灯 实验目的: 1、熟悉用单片机产生流水灯的效果; 2、掌握循环移位的工作原理和操作方法; 3、学会使用C51 封装好的函数库C51LIB,延时函数的时间估算。 实验仪器: 电脑,TX-1C单片机实验板,万用表USB-232线,USB线。 实验原理: 实验内容: P1.0~P1.8对于Led1~Led8八个发光二极管,要求来回循环点亮,停顿时间为0.5秒。显示效果如下: Led1 Led2 Led3 Led4 Led5 Led6 Led7 Led8 亮暗暗暗暗暗暗暗 暗亮暗暗暗暗暗暗 暗暗亮暗暗暗暗暗 暗暗暗亮暗暗暗暗 暗暗暗暗亮暗暗暗 暗暗暗暗暗亮暗暗 暗暗暗暗暗暗亮暗 暗暗暗暗暗暗暗亮 亮暗暗暗暗暗暗暗 暗亮暗暗暗暗暗暗 暗暗亮暗暗暗暗暗 暗暗暗亮暗暗暗暗 ………………………………………………………… 实验步骤: 1、编程,调试,下载; 2、记录实验现象; 3、举一反三:编写3/4/5/6/7个灯循环点亮的程序。

实验二利用定时器控制数码管的显示 实验目的: 1、学会利用单片机的定时器; 2、熟悉数码管显示原理; 3、了解蜂鸣器发声原理。 实验仪器: 电脑,TX-1C单片机实验板,万用表,USB-232线,USB线。实验原理: 2、记录实验现象。

实验三矩阵键盘检测 实验目的: 1、学会矩阵键盘的检测 2、掌握数码管静态显示原理 实验仪器: 电脑,TX-1C单片机实验板,万用表,USB-232线,USB线。 实验原理: 静态数码管显示原理:本开发板数码管为共阴极,所以要想点亮数码管,则给阳极加高电平。 实验内容: 依次按下4*4 矩阵键盘上从第1 到第12个键,同时在六位数码管上依次显示0、1、2、3、4、5、6、7、8、9、A、B。 实验步骤: 1、编程,调试,下载; 2、记录实验现象; 3、举一反三:第13个键到第16个键C、D、E、F。

嵌入式实验报告(51单片机)

实验报告内容 实验题目:P口输出实验 实验目的:通过实验了解P口做为输入输出方式使用时,CPU对P口的操作方式 实验要求:控制8个LED灯,完成从左到右然后再从右到左再从左到右依次的循序流水 实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 程序源代码: #include "reg52.h" #include typedef unsigned int u16; typedef unsigned char u8; #define led P2 void delay(u16 i) { while(i--); } void main() { u8 i; led=0x7f; delay(50000); while(1) { for(i=0;i<7;i++) { led=_cror_(led,1); delay(50000); } for(i=0;i<7;i++) { led=_crol_(led,1); delay(50000); } } } 实验结果分析:

实验日期:2017.10.24

成绩评定: □优秀(100-90分) □良好(89-80分) □中等(79-70分) □及格(69-60分) □不及格(60-0分) 教师签名: 年月日

实验报告内容 实验要求:利用动态扫描和定时器0在数码管上显示出从200开始以1/10秒的速度往下递减直至100并保持此数,以此同时利用定时器1以500MS速度进 行流水灯从上至下移动,当数码管上数减到停止时LED灯全亮。 实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 程序源代码: #include #include #define uint unsigned int #define uchar unsigned char sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; uchar t0=0,t1,temp; uchar temp,bai,shi,ge; uint shu=200; uchar code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39 ,0x5e,0x79,0x71}; void delay(uint i) {while(i--);} void xianshi(uchar bai,uchar shi,uchar ge) {LSA = 0;LSB=0;LSC=0; P0=smgduan[ge]; delay(250); P0=0x00; LSA=1;LSB=0;LSC=0; P0=smgduan[shi]; delay(250); P0=0x00; LSA=0;LSB=1;LSC=0; P0=smgduan[bai]; delay(250); P0=0x00; }

C51单片机实验指导书

单片机原理与接口技术实验讲义 目录 第一章开发环境安装使用说明 (3) 第二章基于51单片机系统资源实验 (12)

实验1 IO开关量输入实验 (12) 实验2 IO输出驱动继电器(或光电隔离器)实验 (13) 实验3 IO输入/输出---半导体温度传感器DS18B20实验 (14) 实验4 外部中断----脉冲计数实验 (15) 实验5 计数器实验 (16) 实验6 秒时钟发生器实验 (17) 实验7 PC机串口通讯实验 (18) 实验8 RS485通讯实验 (19) 实验9 PWM发生器(模拟)实验 (20) 实验10 蜂鸣器实验 (21) 第一章开发环境安装使用说明 一、KeilC51集成开发环境的安装 1.Keil u Vision2的安装步骤如下

将安装文件拷贝到电脑根目录下,然后双击图标,如图1-1所示:注意:去掉属性里的只读选项。 图1-1 启动安装环境对话框 2.选择Eval Version。然后一直next直至安装完成,如图1-2所示: 二.在Keil uVision2中新建一个工程以及工程配置 1.打开Keil C环境,如图1-3所示。

图1-3打开工程对话框 2.新建工程或打开工程文件:在主菜单上选“Project”项,在下拉列表中选择“New Project”新建工程,浏览保存工程文件为扩展名为“.Uv2”的文件。或在下拉列表中选择“Open project”打开已有的工程文件。如 图1-4所示: 图1-4 新建工程 3.环境设置:新建工程文件后,在工具栏中选择如下图选项设置调试参数及运行环境,或从主菜单“Project”项中 选择“Options for Target ‘Target1’”,打开如下图1-5设置窗口。

单片机实验讲义

单片机实验讲义

DVCC单片机实验系统简介 本科目实验使用的平台为启东公司的DVCC-52JH单片机仿真实验仪(带有配套试验软件)。可基本满足MCS-51(80C51)系列单片机课程(本/专科)的实验要求。 实验平台资源: 1、AT89C52单片机(6MHz晶体振荡器、256B片内RAM、8KB程 序存储器(FLASH)、3个定时/计数器、6个中断源(T2))。2、实验平台带有总线扩展有64BK片外RAM,用户可使用范围 0000H~0FEFFH;64KB片外ROM,用户可使用范围

0000H~0FEFFH。 3、实验平台的主要芯片有:1片8255可编程通用并行界面芯片、1 片8155芯片、1片译码芯片74138、1片74393芯片、1片D/A 转换芯片0832、1片A/D转换芯片0809、2片串/并转换芯片74164、若干辅助芯片74240、74373等和常用逻辑门电路芯片。 4、实验平台上的主要外设包括:K1~K10滑动开关、L1~L12发光二 极管(有3种颜色)、2个LED七段数码管、1个单脉冲发生器、1个时钟频率选择器、1个步进电机(带驱动电路)、1个直流电机(带驱动电路)、2个电位器、1个继电器、1个扬声器驱动、1个双踪模拟示波器、带有总线扩展区、带有EPROM烧录区。 实验系统的使用步骤: 1、在计算机、实验仪关闭时,使用实验平台自带的RS-232通用串口 线连接计算机的COM口和实验箱的J2串行口。

2、启动计算机,运行“DVCC52JH实验系统”。 3、在计算机上编写并调试实验程序,在实验箱中联接实验所需连线。 4、打开试验箱电源,点击实验箱上的“复位”按钮,再点击实验箱 上键盘区的“PCDBG”按钮。 5、在计算机上的“DVCC实验系统”软件中,左键单击工具栏上的 “联接”按钮(或选择“动态调试”菜单下的“联接DVCC实验系统选项”)。 6、如果联接正常将弹出若干小窗口。如果联接失败重新执行步骤3、 4。 7、在计算机上的“DVCC实验系统”软件中,选择“编译”菜单下 的“编译连接并传送”选项,将实验程序传送到实验箱。 8、在计算机上的“DVCC实验系统”软件中,左键单击工具栏中的 “运行”按钮,设置PC起始地址,观察实验现象,验证实验结果。 9、实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并 放回原处。 软件实验 实验一清零实验 一、实验目的:

89C51单片机实验指导书

目录 实验一系统认识实验 (2) 实验二多字节加、减运算实验 (3) 实验三多字节乘、除法运算实验 (4) 实验四代码转换实验 (5) 实验五布尔操作实验 (6) 实验六中断系统实验 (7) 实验七定时器/计数器实验 (9) 实验八串行通讯接口实验 (12) 实验九串并转换实验 (16) 实验十存储器扩展实验 (18) 实验十一8155键盘及显示接口实验 (20) 实验十二ADC0809(模/数转换) (24) 实验十三 DAC0832(数/模转换) (26) 实验十四步进电机实验 (29) 实验十五直流电机调速控制实验 (32) 附录Windows版Wmd51 3.0使用说明 (34)

实验一系统认识实验 一.实验目的和要求 1.学习和掌握本实验系统的基本操作; 2.总结汇编程序的形成和调试过程; 3.掌握循环程序的设计; 4.画出程序流程图,编制程序并上机调试通过。 二.实验内容 1.软件延时 若系统时钟为6MHZ,要求实现每隔250毫秒将P1.0口取反。 2.无符号数加法 计算N个数据的和,即Y=∑Xi (i=1--6)。若六个数据放在片 内RAM的50H——55H地址单元中,求和的结果Y放在内部RAM的03H(高位)、04H (低位)地址单元中。 1).32H+41H+01H+56H+11H+03H 2).95H+01H+02H+44H+48H+12H 3).54H+0F6H+1BH+20H+04H+0C1H 3.数据排序 将内部RAM地址单元30H—3FH中的16个数据按小到大的顺序重新排序。

实验二多字节加、减运算实验 一.实验目的和要求 1.掌握多字节数的加、减法运算; 2.进一步熟悉实验系统的使用方法; 3.进一步熟悉汇编程序的调试过程; 4.画出程序流程图,编制程序并上机调试通过。 二.实验内容 1.多字节无符号数的加法 2.多字节无符号数减法 入口:被减数低字节地址在R0,减数低字节数地址在R1,字节数在R2; 出口:差的低字节地址在R0。字节数在R3。 3.多字节十进制BCD码减法 入口:被减数低字节地址在R1,减数低字节地址在R0,字节数在R2。 出口:差(补码)的低字节地址在R0,字节数在R3(07H为符号位。“0”为正,“1”为负)。

单片机实验指导书2

MCS51单片机原理及应用 实验指导书 唐山学院信息工程系 单片机实验室 2008年9月

实验一 P1口实验 一、实验目的 1.学习P1口的使用方法; 2.学习延时子程序的编写和使用; 3.学习单片机实验系统的使用方法和程序的调试方法。 二、实验题目 1.P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。 2.P1口低四位接四只发光二极管L1-L4, P1口高四位接开关K1-K4,编写程 序,将开关的状态在发光二极管上显示出来。 三、实验原理说明 P1口为准双向口,P1口的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来往口锁存器写入过“0”,再作为输入时,需要向口锁存器对应位写入“1”。 延时程序的编写可以用两种方法,一种是用定时器来实现,一种使用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。 如果系统晶振为6.144MHz,则一个机器周期为12/6.144μs即1/0.512μs。 现要编写一个延时0.1s的程序,可以大致写出如下: MOV R7, #200 DE1: MOV R6, #X DE2: DJNZ R6, DE2 DJNZ R7, DE1 上面 MOV、DJNZ指令均为两个机器周期,所以执行一条指令需要1/0.256us, 现求出X值:(X*1÷0.256+1÷0.256+1÷0.256)*200+1÷0.256=0.1*106 指令3 指令2 指令4 指令1 计算出X=126,代入上式可知实际延时约为0.100004s。 四、连线方法 题目1:8031的P1.0—P1.7分别接发光二极管L1—L8 题目2:P1口的P1.0—P1.3接L1-L4, P1口的P1.4—P1.7接K1-K4 五、实验电路

单片机实验指导书

实验一KEIL 51软件实验 实验目的: 1、掌握KEIL集成开发环境的使用 2、掌握算术运算程序 实验设备:计算机、KEIL51软件 实验内容: 编程实现把片人RAM30H单元和40H单元两个16字节数相加,结果放于30H单元开始的位置处。在KEIL51编译、连接、仿真调试。 实验步骤: 一、运行KEIL51软件,出现图1所示KEIL 51主界面。 图1 KEIL 51主界面 首先用Project菜单下的New Project命令建立项目文件,过程如下。 (1) 选择Project菜单下的New Project命令,弹出如图2所示的Create new Project对话框。 图2 Create New Project对话框 (2) 在Create New Project对话框中选择新建项目文件的位置(最好一个项目建立一个文件夹如E:\project), 输入新建项目文件的名称,例如,项目文件名为example,单击【保存】按钮将弹出如图3所示的Select Device for Target ‘Target 1’对话框,用户可以根据使用情况选择单片机型号。Keil uVision2 IDE几乎支

持所有的51核心的单片机,并以列表的形式给出。选中芯片后,在右边的描述框中将同时显示选中的芯片的相关信息以供用户参考。 图3 Select Device for Target ‘Target 1’对话框 (3) 这里选择atmel公司的AT89c51。单击【确定】按钮,这时弹出如图4所示的Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框,C语言开发选择【是】,汇编语言开发选择【否】。 单击后,项目文件就创建好了。项目文件创建后,在主界面的左侧的项目窗口可以看到项目文件的内容。 这时只有一个框架,紧接着需向项目文件中添加程序文件内容。 图4 Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框 二、给项目添加程序文件 当项目文件建立好后,就可以给项目文件加入程序文件了,Keil uVision2支持C语言程序,也支持汇编语言程序。这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,这里我们新建的汇编程序文件后再添加。 (1) 选择文件菜单上的new命令,出现新建文本窗口,如图5所示。

单片机实验指导书(PROTUES实用)

单片机原理与接口技术实验指导书 2009.10.28

目录 软件部分 (1) 实验一赋值程序 (1) 一实验目的 (1) 二实验内容 (1) 三程序流程图 (1) 四实验步骤 (1) 五参考程序 (1) 实验二数据区传送程序 (3) 一实验目的 (3) 二实验内容 (3) 三程序流程图 (3) 四实验步骤 (3) 五参考程序 (3) 硬件部分 (5) 实验一P1口亮灯实验 (5) 一实验目的 (5) 二实验内容 (5) 三程序流程图 (5) 四仿真电路 (6) 五硬件实现电路 (6) 六实验步骤 (7) 七参考程序 (7) 实验二P1口转弯灯实验 (8) 一实验目的 (8) 二实验内容 (8) 三程序流程图 (8) 四仿真电路 (8) 五实验电路 (9) 六实验步骤 (9) 七参考程序 (9) 附录一Keil Vison2使用入门 (11) 附录二Protues使用入门 (13) 附录三KeilC与Proteus连接调试 (15)

软件部分 软件实验中,涉及外部数据存储器扩展寻址操作,须按下图连接实验线路。 说明: 1 将存储器单元的D0-D7与数据总线单元D0-D7相连;存储器单元的A0-A12与地址总线单元A0-A12相连。 2 存储器单元的WE/PGM与六位LED左下方单元的WR或IOWR相连。 3 存储器单元的CS1与六位LED右下方单元A15相连。 4 存储器单元的OE与六位LED左下方单元的RD或IORD相连

实验一赋值程序 一实验目的 1 熟悉汇编指令 2 掌握汇编语言程序设计的一般方法 二实验内容 编写程序实现存储块(2000H---20FFH)的赋值操作(如全为0FFH)。三程序流程图 图1 流程图 四实验步骤 1 编写程序并调试。 2 在实验箱上运行程序,并查看对应存储器和寄存器的内容。。 五参考程序 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R0,#00H MOV DPTR,#2000H MOV A,#0FFH LOOP0:MOVX @DPTR,A INC DPTR INC R0

单片机原理实验指导书(2012.10)

《单片机原理》实验指导书 计算机科学与技术系2012年8月

目录 第一部分单片机仿真实验 (1) 实验一:流水灯实验 (1) 实验二:中断实验 (4) 实验三:定时器中断实验 (6) 实验四:串行口实验 (9) 实验五:矩阵式键盘输入识别 (13) 实验六:LCD循环显示设计 (19) 第二部分单片机硬件实验............................错误!未定义书签。第一章试验箱系统概述 ...................................错误!未定义书签。 一、系统地址分配........................................... 错误!未定义书签。 二、系统接口定义........................................... 错误!未定义书签。 三、通用电路简介........................................... 错误!未定义书签。第二章实验指导...............................................错误!未定义书签。实验七P1口亮灯和P1口加法器实验........... 错误!未定义书签。实验八简单I/O口扩展(选作).................. 错误!未定义书签。实验九8255控制交通灯................................ 错误!未定义书签。实验十128*64LCD液晶显示 .......................... 错误!未定义书签。

第一部分单片机仿真实验 实验一:流水灯实验 一、实验目的: 通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的存储器。 二、实验原理图 实验参考电路图如下: 三、参考实验程序 //流水灯实验 #include //包含单片机寄存器的头文件 sfr x=0xb0; //P3口在存储器中的地址是b0H,通过sfr可定义8051内核单片机 //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的

单片机实验-伟福仿真指导书

第一章认识51系列单片机存储空间 计算机的应用是一个系统,这个系统应由两部分组成――硬件和软件。硬件是指具体的元器件、电路等,软件则是指程序和数据。如果説硬件是计算机应用系统的基础的话,那么软件则是计算机应用系统的灵魂。计算机原理告诉我们程序和数据是被“装载”在计算机存储器中的,从某种意义上讲,认识一个计算机的存储器系统是开发软件所必须的。 为了全面认识51系列单片机的存储空间,本章列出四个实训单元。在进行完本章列出的四个实训单元后,要求读者应全面了解51系列单片机的程序存储器(ROM)、片内随机存储器(片内RAM)和片外随机存储器(片外RAM)空间的范围、用途和使用方法等。 1.1认识51系列单片机的程序存储器(ROM) 第一部分教学要求 一、目的要求 1.认识51系列单片机的程序存储器(ROM)的空间范围; 2.认识汇编指令编码在ROM中存储形式; 3.掌握指令编码和指令编码所在地址的概念; 4.了解51系列单片机的程序存储器(ROM)固定地址的用途。 二、实训平台 1.PC机,台/人; 2.伟福V 3.2版仿真软件或其它51系列单片机仿真软件 四、成绩评定 (注:成绩评定等级:优良、及格、不及格) 第二部分教学内容 一、预备知识 1.ROM存储器 ROM(Real Only Memory)即只读存储器之意,其特点是在计算机正常运行的情况下CPU对ROM 存储器只能进行读操作且断电后信息不会丢失,通常用来存储固定不变的程序和数据,如引导程序、

基本输入输出系统程序等。ROM按其性能可分为以下几类: (1)掩模工艺ROM 它是由芯片制造厂根据ROM要求存储的信息,制造成固定的半导体掩模版生产的。一旦制出成品后,其存储的信息只能读出,不能改变。这种ROM适用于存储固定不变的程序和数据,批量生产时,成本较低。 (2)可一次编程PROM 允许用户对ROM进行一次编程。 (3)可擦除的EPROM 允许用户对ROM进行多次编程,即可擦除。按擦除的方法不同,可分为紫外线擦除的可擦除可编程序只读存储器EPROM(Erasable Programmable Read Only Memory)和电擦除的电可擦除编程序只读存储器EEPROM(Electrically Erasable Programmable Read Only Memory)。 (4)Flash存储器 Flash存储器是在20世纪80年代末逐渐发展起来的一种新型不挥发性半导体存储器,它结合了以往EPROM结构简单、密度高和EEPROM在系统的电可擦除性的一些优点,实现了高密度、低成本和高可靠性。Flash存储器和传统存储器的最大区别在于它是按块(Sector)擦除,按位编程,从而实现了快闪擦除的高速度。目前它广泛应用于PCBIOS、数字蜂窝电话、汽车领域和微控制器等许多领域。 EPROM、EEPROM、Flash存储器需通过专用的编程器将程序和数据写入其中。 2.51系列单片机ROM空间 由于5l系列单片机的程序计数器PC是16位的,所以能寻址64KB的程序存储器地址范围。允许用户程序调用或转向64KB的任何存储单元。在5l系列单片机中根据不同的型号,其程序存储器的形式也有所不同。例如:8051单片机在芯片内部设置了4 KB掩模版的ROM, 8751单片机在芯片内部设置了4 KB的EPROM,89C52单片机在芯片内部设置了8 KB的Flash存储器,而8031单片机在芯片内部没有设置程序存储器,需要在单片机外部配置EPROM。 51系列单片机的EA引脚为访问内部或外部程序存储器的选择端。接高电平时,CPU将首先访问内部存储器,当指令地址超过内部存储器的最大地址时,自动转向片外ROM去取指令。当EA引脚接低电平时(接地),CPU只能访问外部程序存储器。对于8031单片机,由于其内部无程序存储器,故只能采用这种接法。 51系列单片机程序存储器的地址从0000H开始编址。程序存储器低端的一些地址被固定地用作特定程序的入口地址: 0000H 0000H:单片机复位后的程序入口地址; 0001H 0003H:外部中断0的中断服务程序入口地址; 000BH:定时器0的中断服务程序入口地址; : : 0013H:外部中断l的中断服务程序入口地址; : : 001BH:定时器1的中断服务程序入口地址; 0023H:串行端口的中断服务程序入口地址; 002BH:定时器2的中断服务程序入口地址。 FFFFH 图 1.1 ROM空间示意编程时,通常在这些入口地址开始的2、3个单元中,放入一条转移指令,以使相应的服务与实际分配的程序存储器区域中的程序段相对应(仅在中断服务程序较短时,才可以将中断服务程序直接放在相应的入口地址开始的几个单元中)。 3.源程序汇编与程序定位伪指令 将汇编语言源程序转换为计算机能执行的机器码形式的目标程序的过程叫汇编。汇编常用的方法有两种:一是手工汇编,二是利用计算机汇编。

单片机实验资料大全

一、熟悉学习工具开发板 二、点亮LED 1.单片机及最小系统电路

1)电源电路 2)晶振电路 3)复位电路

2.74HC245和74HC138 74HC245的输入: DB_0 即P0.0 DB_1 即P0.1 DB_2 即P0.2 DB_3 即P0.3 DB_4 即P0.4 DB_5 即P0.5 DB_6 即P0.6 DB_7 即P0.7 U3 74HC138的输入: ADDR0即P1.0 ADDR1即P1.1 ADDR2即P1.2 ADDR3即P1.3 E3 ENLED即P1.4 E1 E2 3.跳线

4.LED 三极管基极端输入LEDS6是U3 74HC138的输出Y6 8个LED小灯阴极端的8个输入是74HC245的8个输出:DB 0 也就是P0.0 DB 1 也就是P0.1 DB 2 也就是P0.2 DB 3 也就是P0.3 DB 4 也就是P0.4 DB 5 也就是P0.5 DB 6 也就是P0.6 DB 7 也就是P0.7 5.点亮一个LED的程序 新建工程,添加.c文件,编辑编译,生成hex文件 编译成功会出现reg2.h,,双击可以打开 STP-ISP下载程序到板子,小灯被点亮 1)点亮第1个小灯,熄灭第1个小灯 2)点亮第2个小灯,熄灭第2个小灯 3)点亮第3个小灯,熄灭第3个小灯 4)点亮第1、2小灯,熄灭第1、2小灯 5)点亮第1、3、5、7小灯,熄灭第1、3、5、7小灯

三、闪烁LED 修改小灯闪烁的时间:低于20ms,大于50HZ,小灯的闪烁人眼看到是连续的 四、流水灯 1、用P0点亮小灯 2、依次点亮每个小灯,依次要赋给P0 的数值就是:0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F。 ?左移<<右移>> ?左移,最低位填0补充;右移,最高位填0补充 ?0xf0 11100000 01111000 流水灯程序

单片机导论实验讲义(章专)

第一章单片机软件实验 实验一内存操作 1.实验目的 ①掌握数据传送指令; ②掌握各种数据传送指令的寻址方式; ③熟练运用keil 环境对汇编程序进行调试; ④掌握数据传送、复制等程序的设计与调试方法。 2.预习要求 ①理解数据传送指令和循环指令的使用; ②理解如何对内部寄存器、内部RAM、外部RAM的读写; ③理解各种寻址方式,尤其是较为抽象的变址寻址及相对寻址的方式; ④认真预习本实验内容,自行编写程序,填写实验报告。 3.实验设备 计算机1台; 4.基础型实验内容 ①下列程序的功能是给外部RAM8000~80FFH的256个单元的内容赋值,赋值的内 容取决于程序中A的赋值。在Keil环境运行该程序,并观察寄存器及内存单元的变化。 设置块起始地址 设置块长度 当前地址内容清零 地址加1 否 是否清除完? 是 结束 ORG 0000H START EQU 8000H MAIN: MOV DPTR, #START ;起始地址 MOV R0,#0 ;设置256字节计数值 MOV A,#1H

Loop: MOVX @DPTR,A INC DPTR ;指向下一个地址 DJNZ R0,Loop ;计数值减1 NOP SJMP $ END ②下列程序将3000H起始的256个字节存储块移动到4000H起始的256个字节存储块, 在Keil环境运行如下程序,观察寄存器及存储单元的变化。 设置块的源地 设置块的目标地址 设置移动长度 从源地址取数 保存到目标地址 源地址加1 目标地址加1 是否移动完? 结束 ORG 0000H MOV DPTR,#3000H MOV A,#01H MOV R5,#O LOOP: MOVX @DPTR,A INC DPTR DJNZ R5,LOOP MOV R0,#30H MOV R1,#00H MOV R2,#40H MOV R3,#00H MOV R7,#0 LOOP1: MOV DPH,R0 MOV DPL,R1 MOVX A,@DPTR MOV DPH,R2

51单片机蜂鸣器奏乐实验汇编代码

LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5:NOP MOV R6,A INC DPTR MOV A,#0 MOVC A,@A+DPTR MOV R7,A SETB TR0 MUSIC2:NOP CPL P3.2 MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 MOV 20H,#00H INC DPTR LJMP MUSIC1 MUSIC3:NOP CLR TR0 MOV R2,#0DH

MOV R2,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1 END0:NOP MOV R2,#0FFH MUSIC6:MOV R3,#00H LJMP MUSIC0 DEL:NOP DEL3:MOV R4,#02H DEL4:NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: DB 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H DB 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H DB 30H, 1CH, 10H , 18H DB 20H, 15H, 20H , 1CH DB 20H, 20H, 20H , 26H DB 40H, 20H , 20H , 2BH DB 20H, 26H, 20H , 20H DB 20H, 30H , 80H , 0FFH DB 20H, 20H, 1CH , 10H DB 18H, 10H, 20H , 20H DB 26H, 20H , 2BH , 20H DB 30H, 20H , 2BH , 40H DB 20H, 20H , 1CH , 10H DB 18H, 10H, 20H, 20H DB 26H, 20H , 2BH, 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H DB 26H, 40H, 20H , 20H

单片机原理实验报告(详细)

湖南城市学院 实验报告 2018-2019 学年上学期 姓名:*** 班级学号:****** 实验课程:单片机原理及应用 实验室名称:电子工程实验室 湖南城市学院信息与电子工程学院实验中心印制

实验项目名称:实验一指示灯和开关控制器实验 一、实验目的及要求 1、学习51单片机I/O基本输入/输出功能,掌握汇编语言的编程与调试方法; 2、熟悉proteus软件,了解软件的结构组成与功能; 3、学会在ISIS模块中进行汇编程序录入、编译和调试; 4、理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。 二、实验原理 实验电路原理图如图1所示,图中输入电路由外接在P3口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。此外,还包括时钟电路、复位电路和片选电路。 图1 实验原理图

在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的灯亮状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。软件编程原理为:(1)8只发光二极管整体闪烁3次 亮灯:向P2口送入数值0; 灭灯:向P2口送入数值0FFH; 闪烁3次:循环3次; 闪烁快慢:由软件延时时间决定。 (2)根据开关状态控制灯亮或灯灭 开关控制灯:将P3口(即开关状态)内容送入P2口; 无限持续:无条件循环。 程序流程图如图2所示。 图2 实验程序流程图

三、实验仪器设备及装置 (1)硬件:电脑一台; (2)仿真软件:Proteus; (3)编程软件Keil uVision4。 其中,仿真软件ISIS元件清单如表1所示。 表1 仿真软件ISIS元件清单 四、实验内容和步骤 (一)实验内容: (1)熟悉ISIS模块的汇编程序编辑、编译与调试过程; (2)完成实验的汇编语言的设计与编译; (3)练习ISIS汇编程序调试方法,并最终实现实验的预期功能。 (二)实验步骤: (1)提前阅读与实验相关的阅读材料; (2)参考指示灯/开关控制器的原理图和实验的元件清单,在ISIS中完成电路原理的绘制; (3)参考程序流程图在Keil uVision4中编写和编译汇编语言程序; (4)利用ISIS的汇编调试功能检查程序的语法和逻辑错误; (5)观察仿真结果,检验与电路的正确性。

单片机实验讲义

实验一软件实验 1.1 实验目的 通过实验熟悉DAIS软件仿真环境和MCS-51系列单片机指令系统。掌握程序编制、调试方法和技巧。 1.2 实验内容 1、把R1中内容传送至R0中。 2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中。 3、把外部数据存储器2000H单元中的内容传送至内部数据存储器20H单元中。 4、把外部程序存储器2000H单元中的内容传送至内部数据存储器20H单元中。 5、应用MOVC A,@A+PC指令求累加器A的平方值Y(设Y<=255),并把结果送至R7中保存。 6、将(R2R3)和(R4R5)中的双字节无符号数相加,结果存放在40H和41H单元中。 7、设自变量X为一无符号数,存放在内部数据存储器的V AX单元,函数Y存放在FUNC 单元,请编写满足如下关系的程序: 当x>=50时y=x; 当x<50时y=5x。 8、在外部数据存储器从2000H到2030H地址单元中存放有一数据块,请将它们分别传送至3000H单元到3030H单元中。 9、将8051片内的数据存储器20H单元中存放的单字节二进制数,转化为ASCII码,存放在30H31H单元中,(要求将ASCII码转换部分设计为子程序)。 汇编语言程序如下 ;1、把R1中内容传送至R0中。 ;2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中。 ;3、把外部数据存储器2000H单元中的内容传送至内部数据存储器20H单元中。 ;4、把外部程序存储器2000H单元中的内容传送至内部数据存储器20H单元中。 org 0000h mov r1,#22h mov a,r1 ;1、把R1中内容传送至R0中 mov r0,a mov 20h,#33h mov 30h,20h ;2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中 mov dptr,#2000h ;3、把外部数据存储器2000H单元中的内容传送至内部数据存储器20H单元中 mov a,#66h movx @dptr,a clr a

单片机实验指导书

实验一8051简单编程与调试实验目的 通过简单小程序的输入和调试,熟悉并掌握Keil 的使用。学会Proteus与Keil的整合调试。 实验基本要求 建立三个项目,分别输入存储块清零、二进制BCD码及二进制ASCII码转换的汇编源程序,并进行仿真调试。画出实验程序的流程框图。 实验步骤 采用Keil Cx51 开发8051单片机应用程序一般需要经过下面几个步骤: 1、在 Vision2集成开发环境中创建一个新项目(Project),并为该项目选定合适的单片机CPU器件。 在菜单栏中选择“Project”→“New Project”,弹出“Create New Project”对话框,选择目标路径,在“文件名”栏中输入项目名后,单击“保存(S)”按钮,弹出“Selecte Device for Target”对话窗口。在此对话窗口的“Data base”栏中,单击“Atmel”前面的“+”号,或者直接双击“Atmel”,在其子类中选择“AT89C51”,确定CPU类型。如图所示。 点击“确定”按钮后,弹出如下的对话框

如果是进行汇编语言编程选择“否”。 2、利用μVision2的文件编辑器编写C语言(或汇编语言)源程序文件,并将文件添加到项目中去。一个项目可以包含多个文件,除源程序文件外还可以有库文件或文本说明文件。 在μVision2的菜单栏中选择“File”→“New”命令,新建文档,然后在菜单栏中选择“File”→“Save”命令,保存此文档,这时会弹出“Save As”对话窗口,在“文件名(N)”一栏中,为此文本命名,注意要填写扩展名“.asm”。单击“保存(S)”按钮,这样在编写汇编代码时,Keil会自动识别汇编语言的关键字,并以不同的颜色显示,以减少输入代码时出现的语法错误。程序编写完后,再次保存。 在Keil中“Project Workspace”子窗口中,单击“Target 1”前面的“+”号,展开此目录。在“Source Group 1”文件夹上单击鼠标右键,在右键菜单中选择“Add File to ‘Group Source 1’”,弹出“Add File to Group”对话窗口,在此对话窗口的“文件类型”栏中,选择“Asm Source File”,并找到刚才编写的.asm文件,双击此文件,将其添加到Source Group 中,此时“Project Workspace”子窗口如图所示。

单片机实验指导书——带答案

《单片机原理及应用》 实验指导书 姓名: 学号: 专业班级: 所在学院:成人教育学院 2012年5月日 单片机实验指导书

目录 实验一系统认识实验 (2) 实验二程序调试 (4) 实验三外部中断实验 (6) 实验四串口实验 (8) 实验一系统认识实验 一、实验目的 1.掌握SICElab-G2200实验/仿真系统的结构与使用方法; 2.熟悉单片机系统开发软件WAVE6000。

二、实验设备 1.G2200/2100 实验平台 1 台 2.仿真器/ 仿真板 1 台 3.连线若干根 4.计算机 1 台 三、实验内容 P1端口接发光二极管,加1点亮。 四、连线方案: 实验箱 内部已 连好 五、实验步骤 1.连接Lab51CPU板。(已由实验师连好) 2.仿真器与实验平台的连接 将Lab51板的DC34芯插座与G6W仿真器上的DC34插座用扁平电缆连接起来。(已由实验师连好) 3.仿真器与计算机的连接 用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2均可。 特别注意:在仿真器与计算机连接串口电缆时,两台机器必须都断电,否则易损坏计算机和仿真器。 4.实验连线 按连线方案,用随机配带的实验连线插入孔后,轻轻转动一下锁紧插头,保证良好接触。拆线时,应先回转一下,不要硬拨,以免损坏线路板。不管是拆线还是插线,都应在断电的情况下进行。实验中“连线方案”的粗线即为需用户动手接连的线。 5.检查接线是否有误,确信没有接错后,接上电源,打开电源开关。 6.在计算机上打开“WAVE6000集成调试环境”,界面如下图所示: 7.建立新程序(如果程序已编好,直接跳到第9步) 选择菜单[文件 | 新建文件]功能。 出现一个文件名为NONAME1的源程序窗口,在此窗口中输入以下程序 ORG 0 MOV P1,#0 ;熄灭发光二极管 LOOP: INC P1 CALL Delay SJMP LOOP Delay: MOV R2,#3 ;延时程序 MOV R1,#0

相关文档