单片机实验.docx
- 文档编号:282044
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:11
- 大小:14.43KB
单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(11页珍藏版)》请在冰豆网上搜索。
单片机实验
实验一、MCS51单片机基本开发环境
1.实验目的:
1)熟悉软件的集成开发环境
2)掌握单片机软件设计流程
3)掌握单片机存贮器结构及各窗口之间的联系
2.实验内容:
1)用三种方法实现将累加器A内容改为20H
方法1--MOVA,#20H
方法2—MOVR0,#20H
MOVA,R0
方法3—MOVR0,#20H
XCHA,R0
心得:
越往下做实验时就越感觉这题根本不能说是题目,但不得不说在没接触过编程软件,刚开始学的汇编,第一次做的实验就光这道题都觉得不知道做什么.所以凡是总有开始,不了解情况的多简单的都会觉得难.
2)将58H位单元置为1,观察内部RAM中2BH内容的变化
代码:
SETB2BH.0
JMP$
END
心得:
这是关于内部存储中对单元和字节了解,不理解很容易做错.比如开始写的指令为
MOVR0,#58H;MOV@R0,#1
这是错误的指令。
这就需要认真去了解单片机中的字节地址与位地址的关系。
80C51中有位寻址区和字节寻址区。
题目中58H为位地址,2BH为字节地址,且58H为2B字节的最低位。
由于58H属于位寻址区,可用位操作指令SETB进行置位,SETB2BH.0执行后,2BH中内容变为01
3)如果当前状态为有进位、工作寄存器使用区2,请用3种方法设置这种状态
代码:
ANLPSW,#01H
MOVA,PSW
CJNEA,#01,LAB2
LAB1:
JMPLAB1
LAB2:
SETBPSW.4MOVP0,#01HMOVR0,#18H
CLRPSW.3MOVC,P0.0MOVPSW,R0
MOVPSW.4,C
CPLC
MOVPSW.3,C
END
心得:
以上LAB2写了三段代码,可分别完成题目要求。
不过实验时只是对代码进行了错误调试,没有对结果进行检验。
其中值得注意的是对于布尔(位)操作指令的用法,比如传送指令必须经累加器C,如第二段中MOVP0,#01H;MOVC,P0.0,以及对于位寻址的方式(如需用到“.”隔开)的应用。
4)编一个小程序将内部RAM中的20H单元的内容送到21H单元并调试
代码:
MOVR0,#20H
MOV@R0,#10H
MOVR1,#21H
MOV@R1,20H
JMP$
END
5)用程序将堆栈指针指向60H,然后在堆栈中依次压入01,02,03,04,05五个数,观察哪些单元内容发生了变化,各变为多少?
从哪些窗口可以发现这些变化?
顺序将堆栈中的五个数放入30H~34H五个单元中,编程实现之。
代码:
MOVR1,#60H
MOVSP,R1
MOVDPL,#1H
LAB1:
PUSHDPL
INCDPL
MOVA,DPL
CJNEA,#6,LAB1
POP34H
POP33H
POP32H
POP31H
POP30H
JMP$
END
6)将外部数据存贮器1000H~100FH16个单元中存放00H~0FH
代码:
MOVDPTR,#1000H
MOVR1,#10H
LOOP:
MOVX@DPTR,#1234H
MOVXA,@DPTR
MOV@R1,A
INCDPTR
INCR1
CJNER1,#40H,LOOP
JMP$
END
心得:
此处需要访问片外存储空间,需要借助寄存器DPTR,需注意其为16位的寄存器,在使用时若与八位寄存器进行数据交换时需分为高八位DPH与低八位DPL来用。
7)若要求程序从0010H单元开始运行,可用两种方法实现?
方法一ORG0010H
方法二AJMP0010H
3.选做实验内容:
数据传送
目的:
1)掌握8051单片机内部数据存贮器、外部数据存贮器的数据传送特点和应用
2)掌握MOV,MOVX和MOVC类指令的用法及区别
内容:
1)将片内RAM数据区20H为首地址的十六个字节传送到30H为首地址的数据区,即:
20H~2FH送30H~3FH
代码:
ORG0000H
JMPMAIN
ORG0030H
MAIN:
MOVR0,#20H
MOVR1,#30H
LOOP:
MOV@R0,#1234H
MOVA,@R0
MOV@R1,A
INCR0
INCR1
CJNER1,#30H,LOOP
JMP$
END
2)将外部数据存储器2000H~200FH单元的十六个数传送至内部数据存储器的30H~3FH
代码:
ORG0000H
JMPMAIN
ORG0030H
MAIN:
MOVDPTR,#2000H
MOVR1,#30H
LOOP:
MOVX@DPTR,#12H
MOVXA,@DPTR
MOV@R1,A
INCDPTR
INCR1
CJNER1,#40H,LOOP
JMP$
END
总体心得体会:
第一次做实验主要是熟悉了解了下单片机编程软件的使用,开始接触时在对其软件不是太了解的情况下实验编程做的确实很乱,不清楚该怎样进行,比如不知如何进行对指令的调试,也不清楚该如何观察结果,没有一个整体的概念,所以在了解其开发环境上花了不少时间。
经过一段时间的摸索后也终于了解了其具体的使用,也能够顺利的对指令的编程运用。
运行指令时遇到的一些问题需要注意的也在上面各题中做了说明。
还有需要注意的是:
进入软件仿真时需要对存储空间进行查看的方法是在Address窗口中输入:
d:
00h显示内部数据存储器从00h开始的单元;x:
1000h显示外部数据存储器从1000h开始的单元;c:
0000H显示程序存储器内容。
还有由于伪指令END定义的原因,在程序末需加一条死循环调转指令(如JMP$)使程序不会进入其他未知空间执行其他指令。
实验二、加、减法实验
1.实验目的
1)正确使用单片机的加减运算指令
2)掌握不同指令对于程序状态字的影响及程序状态字的意义、用处
3)掌握ADD,ADDC,SUBB和DAA等指令的用法
4)学习模块化程序设计方法
2.实验内容
1)编写3字节二进制加法子程序,并用主程序调用不同的加数和被加数来检测该子程序的正确性。
需考虑有进位和无进位情况。
程序入口为:
加数:
22H,21H,20H三字节,22H为最高位
被加数:
32H,31H,30H三字节,32H为最高位
程序出口为:
23H,22H,21H,20H四字节,23H为最高位
例如:
地址:
23222120323130
执行前数据:
012345FF0101
执行后数据:
01002446
代码:
ORG0000H
AJMPMAIN
ORG30H
MAIN:
MOV22H,#01H
MOV21H,#23H
MOV20H,#45H
MOV32H,#0FFH
MOV1H,#01H
MOV30H,#01H
ACALLADDI
HERE:
JMPHERE
ORG100H
ADDI:
PUSHPSW
MOVR0,#20H;加数1地址、和的地址
MOVR1,#30H;加数2地址
CLRC
MOVR2,#3;循环3次
LOOP:
MOVA,@R0;取
ADDCA,@R1;加
MOV@R0,A;存
INCR0
INCR1
DJNZR2,LOOP
CLRA
ADDCA,#0;得到进位
MOV23H,A;保存
POPPSW
RET
END
2)编写三字节二进制减法子程序入口:
被减数:
52H,51H,50H,50H为最低位
减数:
42H,41H,40H,40H为最低位
出口:
差:
外部数据存贮器2003H~2000H(2000H为最低位)
用主程序调用多组数据来调试,需考虑无借位和有借位两种情况。
例如:
执行前:
地址:
525150424140
数据:
908070101010
执行后:
地址:
2003200220012000
数据:
00807060
代码:
ORG0000H
AJMPMAIN
ORG30H
MAIN:
MOV52H,#90H
MOV51H,#80H
MOV50H,#70H
MOV42H,#10H
MOV41H,#10H
MOV40H,#10H
ACALLSUB1
HERE:
JMPHERE
SUB1:
PUSHPSW
MOVR0,#50H;被减数地址
MOVR1,#40H;减数地址
MOVDPTR,#2000H;差的地址
CLRC
MOVR2,#3;循环3次
LOOP:
MOVA,@R0;取
SUBBA,@R1;减
MOVX@DPTR,A;存
INCR0
INCR1
INCDPTR
DJNZR2,LOOP
CLRA
SUBBA,#0;得到借位
MOVX@DPTR,A;存
POPPSW
RET
END
3)编写10位十进制加法子程序(十进制数采用压缩BCD码存放)
入口:
加数:
24H—20H,低地址放低字节
被加数:
29H—25H,低地址放低字节
出口和:
4005H—4000H,低地址放低字节
要求调用多组数据调试,注意观察PSW的变化,理解DAA指令的含义。
例如:
执行前地址:
24232221202928272625
数据:
12345678908899331274
执行后地址:
400540044003400240014000
数据:
010133899164
代码:
ORG0000H
AJMPMAIN
ORG30H
MAIN:
MOV24H,#12H
MOV23H,#34H
MOV22H,#56H
MOV21H,#78H
MOV20H,#90H
MOV29H,#88H
MOV28H,#99H
MOV27H,#33H
MOV26H,#12H
MOV5H,#74H
ACALLADD2
HERE:
JMPHERE
ADD2:
PUSHPSW
MOVR0,#20H;加数1地址
MOVR1,#25H;加数2地址
MOVDPTR,#4000H
CLRC
MOVR2,#5;循环5次
LOOP:
MOVA,@R0;取
ADDCA,@R1;加
DAA;调整为BCD码
MOVX@DPTR,A;存
INCR0
INCR1
INCDPTR
DJNZR2,LOOP
POPPSW
RET
END
THANKS!
!
!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验