C语言版实验五:P3.3口输入、P1口输出详解

实验五 P3.3口输入、P1口输出

(设计性实验)

一、实验目的

  1. 掌握P3口、P1口的使用。
  2. 学习延时程序的编写和使用。
  3. 学会判断开关是否接通及开关抖动的消除方法。

二、实验原理

硬件接线方法:

将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;}
			}
		}
	}
}
物联沃分享整理
物联沃-IOTWORD物联网 » C语言版实验五:P3.3口输入、P1口输出详解

发表评论