51单片机实验代码.docx

上传人:b****1 文档编号:1586905 上传时间:2022-10-23 格式:DOCX 页数:47 大小:173.87KB
下载 相关 举报
51单片机实验代码.docx_第1页
第1页 / 共47页
51单片机实验代码.docx_第2页
第2页 / 共47页
51单片机实验代码.docx_第3页
第3页 / 共47页
51单片机实验代码.docx_第4页
第4页 / 共47页
51单片机实验代码.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

51单片机实验代码.docx

《51单片机实验代码.docx》由会员分享,可在线阅读,更多相关《51单片机实验代码.docx(47页珍藏版)》请在冰豆网上搜索。

51单片机实验代码.docx

51单片机实验代码

实验二清零程序

一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验内容把2000H~20FFH的内容清零。

三、实验程序框图

四、实验步骤用连续或单步的方式运行程序,检查2000~20FF中执行程序前后的内容变化。

五、思考假使把2000H~20FFH中的内容改成FF,如何修改程序。

六、程序清单文件名:

SW01.ASM

ORG0000H

LJMPSE01

ORG0640H

SE01:

MOVR0,#00H

MOVDPTR,#2000H

;(0000H)送DPTR

LOO1:

CLRA

MOVX@DPTR,A

;0送(DPTR)

INCDPTR

;DPTR+1

INCRO

;字节数加1

CJNER0,#00H,LOO1

;不到FF个字节再清

LOOP:

SJMPLOOP

END

实验三拆字程序

一、实验目的掌握汇编语言设计和调试方法

2002H高位

二、实验内容把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、清零,一般本程序用于把数据送显示缓冲区时用。

三、实验程序框图

 

四、实验步骤用连续或单步方式运行程序,检查2000H~2002H中内容变化情况。

五、思考如何用断点方式调试本程序

六、程序清单文件名:

SW02.ASM

ORG0000H

LJMPSE02

ORG0660H

SE02:

MOVDPTR,#2000H

;(2000)tAfB

;交换

;屏蔽高位

MOVXA,@DPTR

MOVB,A

SWAPA

ANLA,#0FH

INCDPTR

MOVX@DPTR,A;送2001H

INCDPTR

MOVA,B

ANLA,#0FH;(2000)内容屏蔽高位

MOVX@DPTR,A;送2002H

LOOP:

JMPLOOP

END

实验四数据区传送子程序

一、实验目的掌握RAM中的数据操作

二、实验内容把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的RAM区。

三、实验程序框图

四、实验步骤在R2、R3中输入源首址(例如0000H),R4、R5中输入的目的地址(例如2000H),

R6、R7中输入字节数(例如1FFFH),运行程序,检查0000H~1FFFH中内容是否和2000H~3FFFH中内容完全一致。

五、程序清单文件名SW04.ASM

ORG0000H

LJMPSE22

ORG07B0H

SE22:

MOVDPL,R3

MOVDPH,R2

;建立源程序首址

MOVXA,@DPTR

MOVDPL,R5

;取数

MOVDPH,R4

;目的地首址

MOVX@DPTR,A

CNER3,#0FFH,LO42

INCR2

;传送

LO42:

INCR3

CJNER5,#0FFH,LO43

INCR4

;源地址加1

LO43:

INCR5

CJNER7,#00H,LO44

;目的地址加1

CJNER6,#00H,LO45;字节数减1LOOP:

SJMPLOOP

NOP

LO44:

DECR7

SJMPSE22

LO45:

DECR7

DECR6

SJMPSE22;未完继续

END

实验五简单I/O口应用

一、实验目的掌握P1口作为I/O口的使用方法,理解读引脚和读锁存器的区别。

二、实验要求运行不同的程序,观察发光二极管的亮灭状态,比较程序的特点,了解汇编语言设计

的基本思路和指令应用。

三、思想描述

流程图:

;程序:

所有发光二极管不停地闪动

程序流程图

LED_PORTEQUP1

ORG0000H程序从地址0000H开始存放

LJMPSTART

ORG0100H

START:

CLREA;关闭所有中断

MOVLED_PORT,#OOH;点亮所有发光二极管

LCALLDELAY涎时

MOVLED_PORT,#OFFH;灭掉所有发光二极管

LCALLDELAY

SJMPSTART;重复闪动

DELAY:

MOVR3,#7FH涎时子程序

DEL2:

MOVR4,#0FFH

DEL1:

NOP

DJNZR4,DEL1

DJNZR3,DEL2

RET

END;程序:

用于关控制发二极管的显示方式

LED_PORTEQUP1

ORG

LJMP

0000H

START

ORG

0100H

START:

CLREA

;关闭所有中断

MOV

P3,#11111111B

;使P3口锁存器置位

MOV

A,P3

;读P3口引脚线信号

ANL

A,#00010000B

;逻辑与操作,屏蔽掉无关位

JZDDPING;判断

P3.4是否接地,若是,跳转到DDPING执行

MOV

LED_PORT,#00H

;否则,P3.4高电平,点亮所有发光二极管

SJMP

START

DDPING:

MOV

LED_PORT,#55H

;P3.4接地,发光二极管交叉亮火

SJMP

START

END

只1

1Kx8

3

2

U1

18

2

9

D5

3

17

74LS240

+5V

a

5.1k

U3B

74ALS00

D2

R3

5.1k

74ALS00

U3A

IB-L12-^°

1

Pp

7

5

D3

5

D4

D7K

*

+5V

1Y1

1A1

1Y2

1A2

1Y3

1A3

1Y4

1A4

2Y1

2A1

2Y2

2A2

2Y3

2A3

2Y4

2A4

1G

2G

4

2

6~

~3~

8

41

11

5

16

15

―8"

1

9

30pF

19

18

U2

P1.0/T

P0.0/AD0

P1.1/T

P0.1/AD1

.P1.2

P0.2/AD2

P1.3

P0.3/AD3

.P1.4

P0.4/AD4

.P1.5

P0.5/AD5

.P16

P06/AD6

.P1.7

P0.7/AD7

P3.3/INT1

P2.0

P3.2INT0

P2.1

P2.2

.P35/T1

P23

P34/T0

P24

P2.5

.TA/vp

P2.6

P2.7

]XLAT1

&XLAT2

P3.0/RXD

P3.1/TXD

.RESET

ALE/P

PSEN

P3.77RD

P3.6/WR

15

14

31

MCU8052

13

120e

39

38

37

36

33

32

21

22

23

25

26

28

10

11

30

Title

Size

A4

Number

Revision

Date:

2-Aug-2004

Sheetof

File:

EJZV2ddb

DrawnBy•

 

实验六P3口输入P1口输出实验

一、实验目的P3口输入P1口输出,实现I/O控制。

二、实验要求撰写实验报告,给出输入输出实现方式,画出实验原理图,给出程序流程及实现的全部代码。

三、思想描述:

系统板上硬件连线

(1.把“单片机系统”区域中的PO.O—P0.7端口用8芯排线连接到“动态静态数码显示模块”区域中

的a—h端口上;要求:

P0.0对应着a,P0.1对应着b,……,P0.7对应着h。

(2.把“单片机系统”区域中的P2.0端口用8芯排线连接到“动态数码显示模块”区域中的任一个公

共端上。

实验原理

AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。

只要通过设置特殊功能寄存器TMOD,即可完

成。

定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。

现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536US,即65.536ms,无法

达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定

时为50ms,即要定时1秒需要经过20次的50ms的定时。

对于这20次我们就可以采用软件的方法来统计了。

因此,我们设定TMOD=00000001B,即TMOD=01H

下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出

TH0=(216—50000)/256

TL0=(216—50000)MOD256

当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能

寄存器中的TF0标志位,如果TF0=1表示定时时间已到。

实验结果

开始

TH山TLU装入初值

 

Second置山数码县示气0"

 

TF0=0

Lj

 

訂ZS^Rt=TCDun.t+l

Second加1,并送出显示

汇编源程序

SECONDTCOUNT

START:

DISP:

WAIT:

NEX:

NEXT:

TABLE:

汇编源程序

SECONDTCOUNT

START:

INT0X:

查询法)

EQU30H

EQU31H

ORG00H

SETBP2.0

MOVSECOND,#00H

MOVTCOUNT,#00H

MOVTMOD,#01H

MOVTH0,#(65536-50000)/256

MOVTL0,#(65536-50000)MOD256

SETBTR0

MOVA,SECOND

ANLA,#0FH

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

JNBTF0,WAIT

CLRTF0

MOVTH0,#(65536-50000)/256

MOVTL0,#(65536-50000)MOD256

INCTCOUNT

MOVA,TCOUNT

CJNEA,#20,NEXT

MOVTCOUNT,#00H

INCSECOND

MOVA,SECOND

CJNEA,#60,NEX

MOVSECOND,#00H

LJMPDISP

LJMPWAIT

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND

中断法)

EQU30H

EQU31H

ORG00H

LJMPSTART

ORG0BH

LJMPINT0X

SETBP2.0

MOVSECOND,#00H

MOVA,SECOND

ANLA,#0FH

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVTCOUNT,#00H

MOVTMOD,#01H

MOVTH

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1