单片机实验指导书

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM中的转换结果是否正确。
四、实验程序流程图:
(二进制到十进制数据转换)
五、思考题:
1.二进制数据转换为十进制数据还有其它方法吗?
2.多位十进制ASC码如何转换为数字?
软件实验七数据统计实验
一、实验内容:
1.编写程序,首先将内部RAM中30H-7FH中的数据设置为50-9FH。然后编写程序统计该数据区内大于80H的个数,结果存放在寄存器B中。
二、实验目的与要求:
1.学习与掌握数据排序程序的基本技巧与编写方法。
2.学习与掌握如何进行复杂数据的处理。
三、实验说明:
数据排序是经常使用的数据处理过程。数据排序有几种不同的方法,单片机中常用的方法是冒泡排序法。其原理和程序可以参考有关教材和书籍。
按正数和负数分别排序时可以先分类,再排序。也可以直接进行插入排序。
2.编写程序,统计该数据区内的奇数个数和正数个数,并存放在R6、R7中。
3.编写程序,找出该数据区内作为无符号数据的最大值和最小值。
二、实验目的与要求:
1.学习与掌握数据统计程序的基本技巧与编写方法。
2.学习与掌握如何区分数据的符号。
3.学习与掌握如何在数据区内寻找最大值和最小值。
三、实验说明:
MCS-51单片机没有数据比较指令,比较数据的大小只能用减法指令。单字节数据的比较可以使用CJNE指令。要特别注意对于有符号数和无符号数的处理方法是不一样的。
四、实验程序流程图:
(数据累加)
N
五、思考题:
1.如果X、Y均为两字节的变量,应该如何编程?
2.BCD运算结果为负数时(如-1),其读数是多少?
软件实验四定点数算术运算实验
一、实验内容:
1.编写4字节加法和减法子程序。加数与被加数由指针R0和R1定位。结果存放于固定的内部RAM地址RESULT。
2.编写2字节乘2字节子程序。乘数位于R2R3,被乘数位于R4R5。结果存放于R4R5R6R7内。
程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查排序结果是否正确。
四、实验程序流程图:
(简化的冒泡排序)
Y
N
N
五、思考题:
1.对于双字节数据排序,应该如何处理?
2.尝试使用其它排序方法编写程序。
软件实验九查表与程序散转实验
一、实验内容:
1.编写程序,用查表的方法计算X的平方(X为单字节数据)。
二、实验目的与要求:
1.学习与掌握算术运算指令的使用方法。
2.学习与掌握BCD数据运算的处理方法。
3.学习与掌握多字节数据的运算方法。
三、实验说明:
MCS-51单片机的算术运算指令比较简单,因此功能也比较差。所有的算术运算必须使用累加器进行。如果数据和运算结果都是8位,则处理要简单得多。如果数据和结果高于8位,则必须做多字节运算的处理。
软件实验二数据分类与校验实验
一、实验内容:
1.编写程序,将内部RAM中30H-5FH中的数据设置为1-48。
2.编写程序,将内部RAM中30H-5FH中的奇数传送到90H开始的内部RAM中去。
3.编写程序,将内部RAM中30H-5FH中的数据按照奇校验设置最高位。
二、实验目的与要求:
1.学习与掌握判断数据奇偶性的方法。
编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。
四、实验程序流程图:
(传送奇数)
Y
N
五、思考题:
1.如果只传送正数或负数应该如何编程?
2.如果只传送大于某个规定数值的数据应该如何编程?
软件实验三简单算术运算实验
二、实验目的与要求:
1.学习与掌握基本的数制转换程序的编写方法。
2.学习与掌握ASCII码数据的处理方法。
3.学习与掌握多字节二进制数据的转换方法。
三、实验说明:
数据在各种不同数制与编码之间的转换是经常要使用的处理过程。不同数制之间的转换有多种方法,也有一定的技巧,可以参考教材中的程序例子。应该使用不同的数据对程序进行检验。在第一个程序中,可以令所转换的数据为10,99,250。在第二个程序中,应该令数据为0-15。在第三个程序中,可以令所转换的数据为10,255,2000,65535等。
3.编写2字节除以2字节子程序。除数位于R2R3,被除数位于R4R5。结果存放于R4R5,余数存放于R6R7内。
二、实验目的与要求:
1.学习与掌握常用基本子程序的编写方法。
2.学习与掌握多字节算术运算程序的编写方法。
3.学习与掌握主程序调用子程序的方法。
三、实验说明:
将常用的基本子程序编写出来,以后直接调用,可以提高编程的效率。商业软件中都提供这些基本子程序库,自己编写可以进一步了解其功能与使用方法。
一、实验内容:
1.编写程序,将内部RAM中30H中的二进制数据转换为十进制数据并存放在31H(百)、32H(十)、33H(个)中。
2.编写程序,将内部RAM中30H-3FH中的16进制数据(0-F)转换为ASCII码并存放在40H-4FH中。
3.编写程序,将内部RAM中30H31H中的双字节二进制数据转换为十进制BCD码并存放在40H开始的单元中。
在计算机中一般均采用补码表示数据。汇编语言中判断数据的符号很简单,数据的最高位为1为负数,否则为正数。
程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM中的内容及对应的统计结果是否正确。
四、实验程序流程图:
(寻找最大值)
Y
N
五、思考题:
1.数据为无符号数和有符号时的程序编写有何不同?
应该使用不同的数据对程序进行检验。在第一个程序中,可分别令X=10、Y=20和X=100、Y=200。在第二个程序中,可分别令X=10、Y=30和X=100、Y=200。
编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。
§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.编写程序将该数据区内的数据按正数和负数分别排序。
2.查表程序还能用来做什么?
软件实验十数字滤波实验
一、实验内容:
1.编写程序,计算Yi+1=a×Yi+b×Xi。其中a、b为常数,Xi为一个采样数据队列。可以用30H-3FH中的数据来代替。
2.编写程序,对30H-7FH中的数据进行5次采样中值滤波。结果存放在30H开始的单元中。
二、实验目的与要求:
一、实验内容:
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中。高位放低地址。
四、实验程序流程图:
(多字节除法)
Y
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中的位变量。
2.学习与掌握分支程序的编写方法。
3.学习与掌握如何给存储器中的数据增加校验位。
三、实验说明:
汇编语言中判断数据的奇偶性很简单,数据的最低位为1为奇数,否则为偶数。分支处理是程序设计中的基本技巧,是根据某一条件是否成立执行或不执行规定操作的方法。数据的奇偶校验不是判断数据的奇偶性,而是判断数据中有奇数个1还是偶数个1。如果是奇校验,则增加校验位后的数据应该具有奇数个1。
3.利用移位指令完成Y=X*10的运算,结果为单字节。
二、实验目的与要求:
1.学习与掌握逻辑运算指令的使用方法。
2.学习与掌握位运算指令的使用方法。
3.学习利用移位指令进行算术运算的方法。
三、实验说明:
逻辑运算指令有3种,一般情况下也需要使用累加器进行处理。
位操作指令是MCS-51单片机的一个特色。所有的位操作必须使用进位位进行。要特别注意SFR中的位操作有些属于“读-修改-写”的类型。
1.学习与掌握软件滤波程序的基本技巧与编写方法。
2.进一步学习与掌握基本数据处理程序的编写方法。
三、实验说明:
各种数据处理方法均有多种相应的程序,可以参考教材和有关的书籍。用汇编语言编写这类程序虽然比较复杂,但是编得好可以提高程序的效率。
程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否与事先计算的结果吻合。应该使用几组不同的数据进行检验。
散转程序的编写需要一定的技巧,具体可以参考教材中的例子。散转也可以用多重分支的方法实现,但这样做的效率要低一些。
程序编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序检查运算结果是否正确,通过设置断点检查散转结果是否正确。
四、实验程序流程图:
(计算X的平方)
五、思考题:
1.尝试编写Y=LgX的程序。
编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连续执行程序并检查RAM内容是否正确。有关位的内容也可以输出到P1口直接观看结果。
四、实验程序流程图:
(计算X*10)
五、思考题:
1.有什么简单的办法计算一个多字节数据除以256的结果?
2.如果Y=X*16的运算结果为双字节,如何编程?
软件实验六数制转换实验
多字节的加减法程序比较容易编写,只是要注意进位问题。多字节乘法可以利用单字节乘法来实现,有关教材中已经有所介绍。多字节除法不能用单字节除法实现,只能用移位相减的方法实现。进行除法前必须进行除0检验。
编译通过后进入调试环境,单步执行程序并检查程序的正确性。最后连续执行程序并检查RAM中运算是否正确。应该多使用几组数据进行检验,以确保程序的正确性。
二、实验目的与要求:
1.学习与掌握针对不同区域RAM的操作方法。
2.学习与掌握指针的使用与循环程序的编写方法。
3.学习与掌握如何查看各个部分存储器的内容。
三、实验说明:
对于不同区域的RAM操作需要使用不同的寻址方式与指令。对于内部RAM的低128字节,可以使用直接寻址也可以使用间接寻址;对于内部RAM的高128字节,只能使用间接寻址;对于外部RAM,只能使用指针DPTR进行间接寻址。对于数据块的操作一般使用循环程序完成。
编写程序并编译(build)检查语法错误。编译通过后进入调试环境,单步执行程序检查程序的正确性。最后连wenku.baidu.com执行程序并检查RAM内容是否正确。
注意主程序的最后应该加一条SJMP $指令,以避免由于连续执行时无法停机而造成无法预料的后果。
四、实验程序流程图:
五、思考题:如果源与目的数据块
均为外部RAM,应该如何编程?
四、实验程序流程图:
(5次采样中值滤波)
N
五、思考题:
1.尝试编写去极值滤波的程序。
2.软件滤波程序的作用是什么?
§4.2硬件实验(须使用硬件仿真设置)
硬件实验一P3口输出控制实验
2.编写程序,用查表的方法计算X的立方(X为单字节数据)。
3.编写程序,根据A中的内容(1-5)分别执行不同的程序(程序入口分别为PR1,PR2,PR3,PR4,PR5)。
二、实验目的与要求:
1.学习与掌握查表程序的编写方法。
2.学习与掌握分支程序的编写方法。
三、实验说明:
查表程序一般需要使用指针DPTR实现,有关程序可以参考教材中的例子。可以将查表计算程序作为一个子程序编写,然后由主程序进行调用。编写程序时需要注意X平方和立方需要多个字节才能容纳。
相关文档
最新文档