admin 管理员组

文章数量: 1086019


2024年12月22日发(作者:linux在子进程执行shell)

实验1 BCD码转换成十六进制码

1. 实验目的

(1) 熟悉编码转换程序

(2) 掌握编写和运行子程序的技巧

2实验设备

计算机一台

硬件配置:pentium2及以上配置,存为128MB,硬盘剩余空间100MB,配置有串口,并口,

和USB口

操作系统:Windows98/2000/xp

应用软件:KeilC51

3实验容

将片RAM 20H单元中两位BCD码转换成相应的十六进制码,转换结果保存于22H单元

4实验原理提示

常用BCD码转十六进制码的方法为“乘十加数”法。例如,将BCD码10010010(表示十

进制数92)转换成十六进制编码表示形式,算法为:

Y

H

=(09*0A+02)

H

=5CH。其中Y

H

转换后的十六进制数。再二进制运算中乘法可以用移位(左移)实现,*0A可以写成*08+*02,

其中*08是将被乘数左移3为,*02是将被乘数左移1为。则(09*0A+02)

H

=(09+08+09*02+02)

D

=(01001000+00010010+00000010)

B

=(01011100)

B

=5CH。

码转换成十六进制码的实验程序流程图如图

6.实验参考程序

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV R0,#12H

MOV R1,#06H

MOV R2,#08H

MOV R3,#11H

MOV A,R0

ADD A,R2

DA A

MOV R2,A

ANL A,#0FH

MOV R0,A

MOV A,R2

ANL A,#0F0H

SWAP A

ADD A,R1

ADD A,R3

DA A

MOV R3,A

ANL A,#0FH

MOV R1,A

MOV A,R3

MOV R3,#0H

ANL A,#0F0H

SWAP A

MOV R2,A

RET

END

7.实验要求

(1)掌握编码转换程序的编写方法

(2)根据实验任务要求,编制源程序

(3)上机调试程序,记录相关调试信息

(4)写出实验报告

实验2 排列程序

1. 实验目的

(1) 熟悉MCS-51指令系统,掌握程序设计方法。

(2) 掌握排序程序算法

(3) 掌握循环程序实现数据排序的基本方法。

2. 实验设备

计算机一台,配置同上

3. 实验容

编写并调试一个通用排序子程序,其功能为将RAM的40H~4FH单元16个子字节无符

号二进制整数按从小到大顺序排列,将排序后数据存储于RAM的50H~5FH单元中。

4. 实验原理提示

从40H单元的第一个数开始依次和相邻单元的另一个数比较,如果顺序对,则不作任

何操作;如果顺序不对,则将这两个数交换位置。这样,在完成第1遍n-1次比较后,最大

的数到了最后,所以第2遍比较只是比较n-2次,最多作n-1遍比较就可完成排序。在比较

中设立一个标志位flag=1说明排序未完成,进入外循环;若flag=0,说明排序已完成,程序

结束。

实验程序:

ORG 0

LJMP MAIN

ORG 40H

MAIN: MOV R5,#10H

MOV R0,#40H

MOV A,#0H

MOV R1,#0H

MOV R2,#10H

LOOP0: ACALL LOOP

INC R0

INC R1

DJNZ R5,LOOP0

LOOP1: MOV R0,#40H

MOV B,#0FH

LOOP2: MOV A,R0

MOV 10H,A

INC R0

MOV 11H,R0

LOOP3: CJNE A,11H,LOOP4

LOOP4: JC LOOP5

MOV A,R0

MOV R0,10H

DEC R0

MOV R0,A

INC R0

LOOP5: DJNZ B,LOOP2

DJNZ R2,LOOP1

SJMP $

LOOP: MOV DPTR,#TAB

MOV A,R1

MOVC A,A+DPTR

MOV R0,A

RET

TAB: DB 3,5,4,1,7,9,3,4,6,1,12,45,23,17,34,12

END

实验3 定时器

1. 实验目的

(1)、加深对MCS-51单片机定时器部结构,工作原理和工作方式的理解

(2)、掌握定时器工作在定时器状态下的编程方法

(3)、掌握中断服务程序的设计方法

2.实验设备

计算机,单片机实仪,KeilC51和Proteus软件。

3、实验容

定时器实验

在使用12MHz晶振的条件下,用T1产生50ms定时,两个7段LED数码管从

“00”开始显示,每1s加1,到达“59”后,再从“00”开始,完成60s定时

功能。

4、实验原理提示

定时/计数器实际上是加1计数器,当它对具有固定时间间隔的部机器周期进行

计数时,它是定时器;当它对外部事件进行计数时,它是计数器。MCS-51单

片机部包括T0和T1两个定时/计数器。每个定时/计数器有4种工作方式。

一、定时器计数初值的确定

在定时工作状态下,输入的时钟脉冲是由晶体振荡器的输出经12分频取得的,

因此,定时器可看作是对单片机机器周期的计数器。若晶振频率为12MHz,则

定时器的加1计数器每隔

1

s

加1。加1计数器满溢出时才申请中断,所以在

给加1计数器赋计数初值时,输入的是加1计数器计数的最大值与这一计数的

差值。设加1计数器计数的最大初值为M,计数值为N,计数初值为Count,

则Count的计算方法如下。

定时状态:Count=M-定时时间/T,T=12/fosc

若单片机的时钟频率为12MHz,T1工作在定时方式1,定时时间为50ms,则

其计数初值Count为:

Count=M-定时时间/T=2

16

-50000/1=65536-50000=15536=3CB0H

所以,定时器的计数初值为TH1=3CH,TL1=0B0H。

二、定时器初始化程序

定时器包括两个控制寄存器TMOD和TCON,向TMOD和TCON写入相

应的值来设置各个定时器的操作模式和控制功能。

启动定时器的步骤如下:

(1)、设定TMOD的值:TMOD=10H,设置T1工作于定时方式1(16位

方式)

(2)、设定IE的值:启动中断SETBET1。

(3)、设定TL1和TH1的值:TL1=0B0H,TH1=3CH。

(4)、启动T1定时:SETBTR1。

实验电路图

实验程序流程图

实验程序:

ORG 0000H

AJMP START

ORG 001BH

AJMP TIME1

ORG 0030H

START: MOV SP, #60H

MOV TMOD, #10H

SETB EA

SETB ET1

MOV R3, #60

MOV R0, #0

MOV R1, #0

MOV TH1, #3CH

MOV TL1, #0B0H

SETB TR1

AJMP $

TIME1: PUSH ACC

PUSH PSW

INC R0

MOV A, R0

CJNE A, #20, T_LP2

MOV A, R1

MOV B, #10

DIV AB

SWAP A

ADD A,B

MOV P1, A

INC R1

CJNE R1, #60, LP0

MOV R1, #00H

LP0: MOV R0,#00H

T_LP2: MOV TH1, #3CH

MOV TL1, #0B0H

POP PSW

POP ACC

RETI

END

试验要求

(1) 画出实验程序流程图:编写汇编语言和C51程序。

(2) 上级调试该程序。

实验四-基本输入/输出

1.实验目的

(1) 掌握MCS-51单片机I/O口的基本输入/输出功能。

(2) 学习延时子程序的编写和使用。

2.实验设备

计算机一台;单片机试验仪一台;Keil C51和Proteus软件。

3.实验容

(1)P0作为输出口,接8只发光二极管,编写程序使发光二极管实现“单灯左移”。

(2)P0作为输出口,接8只发光二极管,P2作为输入口,P2.0和P2.1接两个按键

PB

0

PB

1

;当按下

PB

0

时P0口上连接的8只发光二极管全亮;当按下

PB

1

时P0口上连接的8

只发光二极管全灭。

4.实验原理提示

(1)P0口为双向I/O口,具有较大的负载能力,除作为地址、数据复用口外,还可以用作

通用I/O口。P2口味准双向口,常作为通用I/O使用。当某一口线作为输入口线时,必须向

锁存器相应位写入“1”,该位才能作为输入。

(2)常用延时方法

常用循环指令来实现延时,设晶振为12MHz,因此1个机器周期为1us。

DELAY: MOV R5,#250 ;

T

1

=1个机器周期,设定外循环次数为250次

D1: MOV R6,200 ;

T

2

=1个机器周期,设定循环次数为250次

DJNZ R6,$ ;

T

3

=2个机器周期,本次执行200次

DJNZ R5,D1 ;

T

4

=2个机器周期,本次执行250次

RET ;

T

5

=2个机器周期,返回子程序

T=

T

1

+(

T

2

+(

T

3

*200)+

T

4

)250+

T

5

=1+(1+(2*200)+2)*250+2=100753个机器周期

共延时 100753*1us=100753us=0.1us

5.实验电路图

I/O实验电路图如下图所示

6.实验程序流程图

实验容(1)的输出实验程序流程图如下图a所示。

实验容(2)的输入实验程序流程图如下图b所示。

7.实验程序

ORG 0000H

MOV P0,#0FFH

MOV A,#0FEH

START:MOV P0,A

ACALL DELAY

RL A

AJMP START

DELAY:MOV R5,#250

D1: MOV R6,#200

DJNZ R6,$

DJNZ R5,D1

RET

END

ORG 0000H

MOV P2,0FFH

START:JB P2.0,LP0

MOV P0,#00H

LP0: JB P2.1,START

MOV P0,#0FFH

AJMP START

END

8实验要求

(1) 编写相应的程序。

(2) 上机调试通过的程序。

(3) 写出实验报告。


本文标签: 实验 程序 掌握