C语言版实验五:P3.3口输入、P1口输出详解
实验五 P3.3口输入、P1口输出
(设计性实验)
一、实验目的
- 掌握P3口、P1口的使用。
- 学习延时程序的编写和使用。
- 学会判断开关是否接通及开关抖动的消除方法。
二、实验原理
硬件接线方法:
将F5区的发光二极管排针JP65用8芯排线连接到A3区的JP51排针上;将F5区的K8插孔用香蕉插头线连接到A3区的 插孔(P3.3)。
软件设计思路:
拨动开关每拨动一次向P3.3输入一个由高到低再到高的负脉冲,在开关动作过程中,会产生抖动,可以利用软件延时10~20ms(系统晶振频率为11.0592MHz,一个机器周期为1.085μS)来避过抖动,防止出现误计数。程序设计中不断读取P3.3的状态,当其按照由高到低再到高的规律变化时,将累加器A的内容加1,同时将累加器A的内容从P1口输出,在八个发光二极管上以二进制方式显示出来(LED点亮表示1)。
三、主要仪器及耗材
星研SUN ES59PA单片机实验仪和PC机。
四、实验内容与步骤
实验内容:
P3.3口做输入口,外接一个拨动开关S28,每拨动开关一次输入一个脉冲,单片机对输入的脉冲个数进行计数,并通过接在P1口上的8个发光二极管(DS35~DS42)将输入脉冲个数以二进制方式显示出来。
实验步骤:
①根据实验原理接好相关信号线;②在星研集成环境下新建项目文件,然后新建源程序文件,注意源程序文件的扩展名应该是ASM。输入源程序并存盘;③对源程序进行编译、链接形成目标代码,同时排除源程序中的错误;④将编译、链接形成的调试文件(.DOB)下载到单片机实验仪中;⑤利用单步、运行到光标所在行等方式进行程序调试;⑥ 使程序连续运行,拨动开关S28,检查LED显示的结果是否正确并进行分析。
五、实验注意事项
在调试过程中,一旦出现单片机实验仪死机的情况,可以在星研集成环境中点击“复位”图标对实验仪进行复位。然后重新将调试文件下载到实验仪中,继续调试。另外,在连接信号线时务必关闭实验仪的电源。同时,在提交的实验报告中绘制出实验的电路原理图。
六、思考题
1、在读入引脚状态前为什么需要先将相应的接口置1?不置1可以吗?
2、利用软件延时来消除开关的抖动,如果将延时时间成倍加大(如1s)会出现什么现象?
七、参考文献
本课程理论课的授课教材。
八、代码
#include<reg51.h>
#define uint unsigned int
sbit P3_3=P3^3;
void delay(uint a)
{
uint b,c;
for(b=0;b<200;b++)
for(c=0;c<a;c++);
}
void main();
{
uint i;
i=0;
while(1)
{
if(P3_3)
{
delay(200);
if(P3_3==0)
{
delay(200);
if(P3_3)
{i++;P1=~i;}
}
}
}
}