当前位置:文档之家› 微机原理及应用实验报告

微机原理及应用实验报告

微机原理及应用实验报告班级:机械1301班姓名:黄佳清学号:0801130117座位号:中南大学机电工程学院实验一单片机仿真开发机操作和MCS-51指令系统应用一.实验目的1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整;2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编;3、掌握程序的调试和运行的各种方法。

三.实验内容及步骤(完成分值:60分)本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真1.新建工程项目2.设置工程文件参数3.编写新程序事例4.调试程序直至能够运行出结果。

四.实验程序AJMP MAINORG 0030HMAIN: MOV R0,#20HMOV R2,#0FHMOV A,#00HA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0,#20H ;暂停,观察并记录!MOV DPTR,#7000HMOV R2,#0FHA2: MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R2,A2MOV R0,#030H ;断点,观察并记录!MOV DPTR,#7000HMOV R2,#0FHA3: MOVX A,@DPTRMOVX @R0,AINC R0INC DPTRDJNZ R2,A3DO: LJMP DOEND ;内部存储器数据块赋值,搬运数据块到外部存储器,再搬运回内部数据存储器。

五、附加题1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元内容3.4.修改程序,实现新功能实现倒序数据转移程序AJMPMAINORG 0030HMAIN: MOV R0,#40HMOV R2,#0FHMOV A,#00HA1: MOV @R0,ADEC R0INC ADJNZ R2,A1MOV R0,#30HMOV DPTR,#7000HMOV R2,#0FHA2: MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R2,A2MOV R0,#030HMOV DPTR,#7000HMOV R2,#0FHA3: MOVX A,@DPTRMOVX @R0,AINC R0INC DPTRDJNZ R2,A3DO: LJMP DOEND实验二程序设计一、实验目的1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。

二、实验内容及步骤(完成分值:30分/单个程序)题目1、编写排序程序并上机调试通过。

已知8031内部RAM60H~69H单元中,依次存放了0FH,09H,07H,0CH,03H,0DH,08H,0BH,04H,01H共10个字节无符号数,编程将它们规律排序,最大数放在60H中,最小数放在69H中。

结果应该是0FH,0DH,0CH,0BH,09H,08H,07H,04H,03H,01H。

题目2、编写多字节加法程序并上机调试通过。

8031内部RAM22H、21H、20H单元中,分别存放了3字节无符号被加数0FFH、0FFH、0FFH(低字节在低地址),在32H、31H、30H单元中分别存放3字节无符号加数22H、22H、22H(低字节在低地址),求两数之和,并将结果存入内部RAM23H 、22H 、21H 、20H单元中(低字节在低地址)。

结果应该是01H、22H、22H、21H。

四、参考实验程序题目1ORG 0000HLJMP mainORG 0100Hmain:...将10个随机数送入内部RAM的50~59H单元NOP;可在此处设置断点ACALL SELSORT;调用排序子程序HERE:AJMP HERE ;可在此处设置断点,观察每次排序结果NOP;排序子程序DAT EQU 60H ;排序数据首地址N EQU 10 ;排序个数SELSORT: MOV R0,#DATMOV R2,#N-1LOOP: MOV B,@R0MOV A,R0MOV R3,AINC AMOV R1,A MOV A,R2MOV R4,ALOOP1: MOV A,@R1CLR CSUBB A,BJC LOOP2 ;改为JNC即可逆序排列MOV B,@R1MOV A,R1MOV R3,ALOOP2: INC R1DJNZ R4,LOOP1MOV A,R3MOV R1,AMOV A,@R1XCH A,@R0XCH A,@R1INC R0DJNZ R2,LOOPRETEND题目2ORG 0000H LJMP mainORG 0100Hmain: MOV R0,#20HMOV @R0,#0FFHINC R0MOV @R0,#0FFHINC R0MOV @R0,#0FFHMOV R0,#30HMOV @R0,#22HINC R0MOV @R0,#22HINC R0MOV @R0,#22HACALL MULTADD;调用多字节加法子程序HERE:AJMP HERE ;可在此处设置断点,观察结果NOP;N字节无符号数加法子程序([R0]+[R1])=([R0]);入口 :R0,R1,R2;占用资源:ACC,B;堆栈需求:2字节;出口 :R0存放结果高地址MULTADD:MOV R0,#20H ;地址1 MOV R1,#30H ;地址2MOV R2,#03H ;加法字节数NSUB: CLR CNSUB1: MOV A,@R0ADDC A,@R1MOV @R0,AINC R0INC R1DJNZ R2,NSUB1CLR AADDC A, #00H ; 把进位位C加到高8位去MOV @R0, ARETEND五、附加题1. 画出题目1的程序流程图。

2.将题目1的排序算法进行改变,采用另一种排序算法进行排序。

ORG 0000HLJMP mainORG 0100HMAIN:...;将10个随机数送入LOOP2: MOV A,@R0MOV 50H,@R1CJNE A,50H,BIG ;做减法。

BIG: JNC LESS ;是0则跳转LJMP LOOP3LESS: XCH A,@R1 ;交换60与61中的内容XCH A,@R0 LOOP3: INC R1CJNE R1,#6AH,LOOP2 ;INC R0MOV 51H,R0MOV R1,51HINC R1CJNE R0,#69H,LOOP2 ;以此类推,直到剩最后两个数比较完。

SJMP $END3.画出题目2的程序流程图。

4. 改为编写多字节减法程序。

ORG 0000HLJMP mainORG 0100Hmain: MOV R0,#20HMOV @R0,#0FFHINC R0MOV @R0,#0FFHINC R0MOV @R0,#0FFHMOV R0,#30HMOV @R0,#22HINC R0MOV @R0,#22HINC R0MOV @R0,#22HACALL MULTADD;调用多字节加法子程序HERE:AJMP HERE ;可在此处设置断点,观察结果NOP ;N字节无符号数加法子程序([R0]+[R1])=([R0]);入口 :R0,R1,R2;占用资源:ACC,B;堆栈需求:2字节;出口 :R0存放结果高地址MULTADD:MOV R0,#20H ;地址1 MOV R1,#30H ;地址2MOV R2,#03H ;加法字节数NSUB: CLR CNSUB1: MOV A,@R0ADDC A,@R1MOV @R0,AINC R0INC R1DJNZ R2,NSUB1CLR AADDC A, #00H ; 把进位位C加到高8位去MOV @R0, ARETEND实验三 定时/计数器实验一、实验目的1、掌握MCS-51单片机内部定时/计数器的功能与特点,工作方式选择和编程方法,中断功能的使用和中断服务程序的设计;2、 了解和熟悉MCS-51单片机实验板的功能。

二、实验内容及步骤(完成分值:60分/单个程序)本实验需要用到单片机最小应用系统(F1区)和十六位逻辑电平显示模块(I4区)。

用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。

三、参考流程图、电路图、参考程序程序:Tick equ 5000 ;100us 记数次数,5000 x 100us = 0.5s,十六进制#1388HT100us equ 156 ; 100us 时间常数(12MHz) C100us equ 5h ; 100us 记数单元,05H 、06Horg 0000H ljmp Start org 000BH LJMP T0Int;---------------------------------------- ORG 0100H Start:mov TMOD, #02h ; 方式2, 定时器mov TH0, #T100us ; 100us 时间常数(12MHz) mov TL0, #T100us ; 100us 时间常数(12MHz) mov IE, #10000010b ; EA=1, IT0 = 1 setb TR0 ; 开始定时 mov p1,#0FEH ;由于电路原因,输出高电平为灭灯。

mov C100us, #HIGH(Tick);05H<-#13H,初始化100us 记数单元 mov C100us+1, #LOW(Tick);06H<-#88H,初始化100us 记数单元 Loop: ljmp Loop;----------------------------------------100ORG 0300HT0Int:push PSWmov a, C100us+1; 100us高位记数单元06Hjnz Goondec C100us; 100us低位记数单元05HGoon:dec C100us+1mov a, C100us; 100us低位记数单元05Horl a, C100us+1jnz Exit ; 100us 记数单元不为0, 返回mov C100us, #HIGH(Tick);05H<-#13H,100us 记数单元为0则初始化100us记数单元mov C100us+1, #LOW(Tick);06H<-#88H,100us 记数单元为0则初始化100us记数单元MOV A,P1 ; 100us 记数单元为0, 位移!RL AMOV P1,AExit:pop PSWreti;----------------------------------------End五、附加题1.修改程序,实现新功能奇数偶数交换点亮Tick equ 5000T100us equ 156 C100us equ 5horg 0000Hljmp Startorg 000BHLJMP T0Int;----------------------------------------ORG 0100HStart:mov TMOD, #02h mov TH0, #T100us mov TL0, #T100us mov IE, #10000010b setb TR0 mov p1,#0AAHmov C100usmov C100us+1Loop: ljmp Loop;----------------------------------------ORG 0300H T0Int:push PSWmov a, C100us+1jnz Goondec C100usGoon:dec C100us+1mov a, C100usorl a, C100us+1jnz Exitmov C100us, #HIGH(Tick) mov C100us+1,#LOW(Tick)MOV A,P1RL AMOV P1,AExit:pop PSWreti;----------------------------------------End2.用MCS-51单片机的内部定时器定时中断,编写一段电子秒表程序,在静态数码管上实现显示。

相关主题