南昌大学单片机实验报告上交稿.doc
《南昌大学单片机实验报告上交稿.doc》由会员分享,可在线阅读,更多相关《南昌大学单片机实验报告上交稿.doc(25页珍藏版)》请在冰豆网上搜索。
![南昌大学单片机实验报告上交稿.doc](https://file1.bdocx.com/fileroot1/2022-10/15/b8e55990-adbe-456c-ac9f-e1a2a1381dbd/b8e55990-adbe-456c-ac9f-e1a2a1381dbd1.gif)
实验报告
实验课程:
单片机原理与应用实验
学生姓名:
刘路平
学号:
5502211040
专业班级:
电力系统及其自动化111班
2013年12月16日
南昌大学实验报告
学生姓名:
刘路平学号:
5502211040专业班级:
电力系统111班
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
实验一I/O口输入、输出实验
一、实验目的
掌握单片机P1口、P3口的使用方法。
二、实验内容
以P1口为输出口,接八位逻辑电平显示,LED显示跑马灯效果。
以P3口为输入口,接八
位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当
P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,
故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是
不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模
块(B5区),八位逻辑电平输出电路原理图参见图1-1。
八位逻辑电平显示电路原理图参见图1-2。
五、实验预习要求
学习教材的相关内容,根据实验要求画出程序流程图,写出实验程序。
六、实验步骤
1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);
用8位数据线连接八位逻辑电平显示模块的JD4B到CPU模块的JD8(P1口)。
2)启动PC机,打开THGMW-51软件,输入源程序,并编译源程序。
编译无误后,下载程序
运行。
3)观察发光二极管显示跑马灯效果,拨动K0可改变跑马灯的方向。
七、实验程序
本实验程序
;//******************************************************************
;文件名:
PortforMCU51
;功能:
I/O口输入、输出实验
;接线:
用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);
;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
;//******************************************************************
实验程序一:
DIRBITP3.1
ORG0000H
LJMPSTART
ORG0200H
START:
Output1:
movA,#0fEH;把11111110二进制赋给A变量
movR5,#8;把8送到R5寄存器中
loop1:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JCOutput2;K0的状态为1则跳转到Output2
movP1,A;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rlA;把A进行循环左移,相当于把0进行左移,由此二极管从右到左依次点亮向左的跑马灯
AcAllDelay;调用延时子程序
djnzR5,loop1;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output1,否则继续loop1
SjmpOutput1
Output2:
movA,#07fH;把01111111二进制赋给A变量
movR5,#8;把8送到R5寄存器中
loop2:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JNCOutput1 ;K0的状态为0则跳转到Output1
movP1,A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rrA ;把A进行循环右移,相当于把0进行左移,由此二极管从左到右依次点亮向右的跑马灯
AcAllDelay ;调用延时子程序
djnzR5,loop2 ;判断R5中的值是否为0,来判断是否重新置数,为0就跳到Output2,否则继续loop2
SjmpOutput2
Delay:
;0减1后为-1其补码为11111111
movR6,#0;该延时为双重循环,总延时约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us=0.264456s这个值与实验现象很匹配
DelayLoop1:
movR7,#0
DelayLoop2:
NOP ;空指令
NOP
djnzR7,DelayLoop2 ;R7中值为0则跳转
djnzR6,DelayLoop1;R6中值为0则跳转
ret
end
实验程序二:
DIRBITP3.1
ORG0000H
LJMPSTART
ORG0200H
START:
Output1:
movA,#0fEH;把11111110二进制赋给A变量
loop1:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JCloop2;K0的状态为1则跳转到loop2
movP1,A;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rlA;把A进行循环左移,相当于把0进行左移,由此二极管从右到左依次点亮向左的跑马灯
AcAllDelay;调用延时子程序
Sjmploop1
loop2:
CLRC;把标志位清零
movC,DIR;读入开关K0的值
JNCloop1 ;K0的状态为0则跳转到loop1
movP1,A ;从P1口输出A的值并显示在二极管上,该位为0则相应的二极管点亮
rrA ;把A进行循环右移,相当于把0进行左移,由此二极管从左到右依次点亮向右的跑马灯
AcAllDelay ;调用延时子程序
Sjmploop2
Delay:
;0减1后为-1其补码为11111111
movR6,#0;该延时为双重循环,总延时约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us=0.264456s这个值与实验现象很匹配
DelayLoop1:
movR7,#0
DelayLoop2:
NOP ;空指令
NOP
djnzR7,DelayLoop2 ;R7中值为0则跳转
djnzR6,DelayLoop1;R6中值为0则跳转
ret
end
八、结果分析:
运行程序1后,拨动开关K0,可以实现两种流水灯方式的选择,即可以实现左移和右移,这主要是由语句JCOutput2和JNCOutput1 语句实现的,当K0拨到下面时,其状态为0跳转到Output1所以跑马灯为从右向左一次点亮,间隔大约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us= 0.264456s,当K0拨到上面时,其状态为1,跳转到Output2,所以跑马灯为从左向右一次点亮,间隔大约为(1+1+(1+1+2)*257+2+(1+(1+1+2)*257)*256)us= 0.264456s。
综合分析,本实验主要有3个模块:
左移模块,右移模块和延时模块构成。
运行程序2后,拨动开关K0,可以实现两种流水灯方式的选择,即可以实现左移和右移,这主要是由语句JCloop1和JNCloop2 语句实现的,和实验程序1的主要差别就是当拨动开关后,直接进行方向的改变,而不是像程序1那样返回到始端在进行方向的反转。
九、实验心得
从这个实验中我们了解到如何用P1口输出来点亮二极管,也学会了如何根据具体的单片机的原理图进行编写程序,及线路的连接。
通过这次实验我了解了单片机芯片的结构及编程方法。
巩固了汇编语言编程的能力。
进一步加深了对汇编语言的认识。
对延时程序进一步的应用,对编程的能力有了提高通过实验还学会了流水灯的实现方法和实现延时的程序编写方法,这为下面的实验做好了充分的准备。
南昌大学实验报告
学生姓名:
刘路平学号:
5502211040专业班级:
电力系统111班
实验类型:
□验证□综合□设计□创新实验日期:
实验成绩:
实验二外部中断实验
一、实验目的
学习外部中断技术的基本使用方法。
二、实验内容
INT0端接单次脉冲发生器。
按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转。
三、实验要求
根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图
1)外部中断的初始化设置共有三项内容:
中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。
中