当前位置:文档之家› 单片机实验指导书

单片机实验指导书

§4单片机应用系统实验
§4.1软件实验(使用软件仿真设置)
软件实验一数据传送实验
一、实验内容:
1.编写程序,将内部RAM中30H-5FH中的数据设置为55H。
2.编写程序,将内部RAM中30H-5FH中的内容传送到90H开始的内部RAM中去。
3.编写程序,将内部RAM中30H-5FH中的内容传送到200H开始的外部RAM中去(注意实际系统中为扩展的内部RAM)。
2.如何统计数据区中某一个数字出现的次数(例如0)?
软件实验八数据排序实验
一、实验内容:
1.编写程序,首先将内部RAM中30H-5FH中的数据设置为随机数值。然后编写程序将该数据区内的数据按从小到大的顺序排序。
2.编写程序将该数据区内的数据按从大到小的顺序排序。
3.编写程序将该数据区内的数据按正数和负数分别排序。
四、实验程序流程图:
(5次采样中值滤波)
N
五、思考题:
1.尝试编写去极值滤波的程序。
2.软件滤波程序的作用是什么?
§4.2硬件实验(须使用硬件仿真设置)
硬件实验一P3口输出控制实验
编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。有关位的内容也可以输出到P1口直接观看结果。
四、实验程序流程图:
(计算X*10)
五、思考题:
1.有什么简单的办法计算一个多字节数据除以256的结果?
2.如果Y=X*16的运算结果为双字节,如何编程?
软件实验六数制转换实验
3.编写2字节除以2字节子程序。除数位于R2R3,被除数位于R4R5。结果存放于R4R5,余数存放于R6R7内。
二、实验目的与要求:
1.学习与掌握常用基本子程序的编写方法。
2.学习与掌握多字节算术运算程序的编写方法。
3.学习与掌握主程序调用子程序的方法。
三、实验说明:
将常用的基本子程序编写出来,以后直接调用,可以提高编程的效率。商业软件中都提供这些基本子程序库,自己编写可以进一步了解其功能与使用方法。
软件实验二数据分类与校验实验
一、实验内容:
1.编写程序,将内部RAM中30H-5FH中的数据设置为1-48。
2.编写程序,将内部RAM中30H-5FH中的奇数传送到90H开始的内部RAM中去。
3.编写程序,将内部RAM中30H-5FH中的数据按照奇校验设置最高位。
二、实验目的与要求:
1.学习与掌握判断数据奇偶性的方法。
一、实验内容:
1.编写程序,计算Z=X+Y+30。X、Y为位于内部RAM 30H、31H单元的单字节BCD变量。Z位于32H33H,高位放低地址。
2.编写程序,计算Z=X*10+Y/5-10。X、Y为位于内部RAM 30H、31H单元的单字节变量,Z位于32H33H,高位放低地址。
3.编写程序,计算1~100的累加和。结果存放于内部RAM的30H、31H中。高位放低地址。
程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM中的转换结果是否正确。
四、实验程序流程图:
(二进制到十进制数据转换)
五、思考题:
1.二进制数据转换为十进制数据还有其它方法吗?
2.多位十进制ASC码如何转换为数字?
软件实验七数据统计实验
一、实验内容:
1.编写程序,首先将内部RAM中30H-7FH中的数据设置为50-9FH。然后编写程序统计该数据区内大于80H的个数,结果存放在寄存器B中。
二、实验目的与要求:
1.学习与掌握算术运算指令的使用方法。
2.学习与掌握BCD数据运算的处理方法。
3.学习与掌握多字节数据的运算方法。
三、实验说明:
MCS-51单片机的算术运算指令比较简单,因此功能也比较差。所有的算术运算必须使用累加器进行。如果数据和运算结果都是8位,则处理要简单得多。如果数据和结果高于8位,则必须做多字节运算的处理。
2.编写程序,统计该数据区内的奇数个数和正数个数,并存放在R6、R7中。
3.编写程序,找出该数据区内作为无符号数据的最大值和最小值。
二、实验目的与要求:
1.学习与掌握数据统计程序的基本技巧与编写方法。
2.学习与掌握如何区分数据的符号。
3.学习与掌握如何在数据区内寻找最大值和最小值。
三、实验说明:
MCS-51单片机没有数据比较指令,比较数据的大小只能用减法指令。单字节数据的比较可以使用CJNE指令。要特别注意对于有符号数和无符号数的处理方法是不一样的。
编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。
注意主程序的最后应该加一条SJMP $指令,以避免由于连续执行时无法停机而造成无法预料的后果。
四、实验程序流程图:
五、思考题:如果源与目的数据块
均为外部RAM,应该如何编程?
二、实验目的与要求:
1.学习与掌握基本的数制转换程序的编写方法。
2.学习与掌握ASCII码数据的处理方法。
3.学习与掌握多字节二进制数据的转换方法。
三、实验说明:
数据在各种不同数制与编码之间的转换是经常要使用的处理过程。不同数制之间的转换有多种方法,也有一定的技巧,可以参考教材中的程序例子。应该使用不同的数据对程序进行检验。在第一个程序中,可以令所转换的数据为10,99,250。在第二个程序中,应该令数据为0-15。在第三个程序中,可以令所转换的数据为10,255,2000,65535等。
2.编写程序,用查表的方法计算X的立方(X为单字节数据)。
3.编写程序,根据A中的内容(1-5)分别执行不同的程序(程序入口分别为PR1,PR2,PR3,PR4,PR5)。
二、实验目的与要求:
1.学习与掌握查表程序的编写方法。
2.学习与掌握分支程序的编写方法。
三、实验说明:
查表程序一般需要使用指针DPTR实现,有关程序可以参考教材中的例子。可以将查表计算程序作为一个子程序编写,然后由主程序进行调用。编写程序时需要注意X平方和立方需要多个字节才能容纳。
二、实验目的与要求:
1.学习与掌握针对不同区域RAM的操作方法。
2.学习与掌握指针的使用与循环程序的编写方法。
3.学习与掌握如何查看各个部分存储器的内容。
三、实验说明:
对于不同区域的RAM操作需要使用不同的寻址方式与指令。对于内部RAM的低128字节,可以使用直接寻址也可以使用间接寻址;对于内部RAM的高128字节,只能使用间接寻址;对于外部RAM,只能使用指针DPTR进行间接寻址。对于数据块的操作一般使用循环程序完成。
四、实验程序流程N
五、思考题:
1.N字节乘以M字节的运算结果应该为几个字节?
2.如何编写4字节除以2字节的算术运算程序?
软件实验五逻辑运算实验
一、实验内容:
1.编写程序,计算Z=X∧Y、Z=X∨Y和Z=X⊕Y。X、Y、Z为位于内部RAM中30H、31H和32H中的字节变量。
2.编写程序,计算Z=X∨Y⊕F0。X、Y、Z为位于内部RAM中20H中的位变量。F0为位于PSW中的位变量。
一、实验内容:
1.编写程序,将内部RAM中30H中的二进制数据转换为十进制数据并存放在31H(百)、32H(十)、33H(个)中。
2.编写程序,将内部RAM中30H-3FH中的16进制数据(0-F)转换为ASCII码并存放在40H-4FH中。
3.编写程序,将内部RAM中30H31H中的双字节二进制数据转换为十进制BCD码并存放在40H开始的单元中。
程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查排序结果是否正确。
四、实验程序流程图:
(简化的冒泡排序)
Y
N
N
五、思考题:
1.对于双字节数据排序,应该如何处理?
2.尝试使用其它排序方法编写程序。
软件实验九查表与程序散转实验
一、实验内容:
1.编写程序,用查表的方法计算X的平方(X为单字节数据)。
二、实验目的与要求:
1.学习与掌握数据排序程序的基本技巧与编写方法。
2.学习与掌握如何进行复杂数据的处理。
三、实验说明:
数据排序是经常使用的数据处理过程。数据排序有几种不同的方法,单片机中常用的方法是冒泡排序法。其原理和程序可以参考有关教材和书籍。
按正数和负数分别排序时可以先分类,再排序。也可以直接进行插入排序。
应该使用不同的数据对程序进行检验。在第一个程序中,可分别令X=10、Y=20和X=100、Y=200。在第二个程序中,可分别令X=10、Y=30和X=100、Y=200。
编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。
四、实验程序流程图:
(数据累加)
N
五、思考题:
1.如果X、Y均为两字节的变量,应该如何编程?
2.BCD运算结果为负数时(如-1),其读数是多少?
软件实验四定点数算术运算实验
一、实验内容:
1.编写4字节加法和减法子程序。加数与被加数由指针R0和R1定位。结果存放于固定的内部RAM地址RESULT。
2.编写2字节乘2字节子程序。乘数位于R2R3,被乘数位于R4R5。结果存放于R4R5R6R7内。
2.学习与掌握分支程序的编写方法。
3.学习与掌握如何给存储器中的数据增加校验位。
三、实验说明:
汇编语言中判断数据的奇偶性很简单,数据的最低位为1为奇数,否则为偶数。分支处理是程序设计中的基本技巧,是根据某一条件是否成立执行或不执行规定操作的方法。数据的奇偶校验不是判断数据的奇偶性,而是判断数据中有奇数个1还是偶数个1。如果是奇校验,则增加校验位后的数据应该具有奇数个1。
相关主题