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

更新时间:2024-05-01 00:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

(1) 熟悉编码转换程序

(2) 掌握编写和运行子程序的技巧 2实验设备 计算机一台

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

操作系统:Windows98/2000/xp 应用软件:KeilC51 3实验内容

将片内RAM 20H单元中两位BCD码转换成相应的十六进制码,转换结果保存于22H单元 4实验原理提示

常用BCD码转十六进制码的方法为“乘十加数”法。例如,将BCD码10010010(表示十进制数92)转换成十六进制编码表示形式,算法为:YH=(09*0A+02)H =5CH。其中YH为转换后的十六进制数。再二进制运算中乘法可以用移位(左移)实现,*0A可以写成*08+*02,其中*08是将被乘数左移3为,*02是将被乘数左移1为。则(09*0A+02)

H=(09+08+09*02+02)D=(01001000+00010010+00000010)B=(01011100)B=5CH。

5.BCD码转换成十六进制码的实验程序流程图如图 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-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

16 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接两个按键PB0和

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

只发光二极管全灭。 4.实验原理提示

(1)P0口为双向I/O口,具有较大的负载能力,除作为地址、数据复用口外,还可以用作通用I/O口。P2口味准双向口,常作为通用I/O使用。当某一口线作为输入口线时,必须向锁存器相应位写入“1”,该位才能作为输入。 (2)常用延时方法

常用循环指令来实现延时,设晶振为12MHz,因此1个机器周期为1us。 DELAY: MOV R5,#250 ;T1=1个机器周期,设定外循环次数为250次 D1: MOV R6,200 ; T2=1个机器周期,设定内循环次数为250次 DJNZ R6,$ ; T3=2个机器周期,本次执行200次 DJNZ R5,D1 ; T4=2个机器周期,本次执行250次 RET ; T5=2个机器周期,返回子程序

T=T1+(T2+(T3*200)+T4)250+T5=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) 写出实验报告。

本文来源:https://www.bwwdw.com/article/salg.html

Top