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) 写出实验报告。
版权声明:本文标题:实验1_BCD码转换成十六进制码 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1734954604a1614094.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论