51单片机是一种简单的单片机系统,由英特尔公司推出。该芯片采用哈弗二合一结构,包含ROM、RAM、I/O、中断、定时/计数器等基本功能。
总体来说,它是一种8位微型计算机,有40个引脚,其中第9脚是P3.5引脚,也是单片机的I/O口之一。
基本上说,第9脚就是P3.5口。它有双重功能,即可以作为普通的输入/输出口,也可以与Timer 1的输入捕获功能相结合。
如果将其设置为I/O口,则可以用来控制LED的点亮与熄灭,也可以通过它连接传感器采集数据。而当它与Timer 1相结合时,就可以实现定时器的输入捕获功能,用于测量脉冲信号等特定时间事件。
将第9脚设置为I/O口时,需要先对其进行初始化。具体方法如下:
首先要设定P3口的模式,即将P3口中的位3设为0。然后将P3口中的位5设定为1,这样就将其设置为输出模式。
初始化完成后,我们就可以在程序中直接使用P3.5口了。例如控制LED的点亮与熄灭:
unsigned char led = 0x20;void main()
P3 = led; //点亮LED
while (1)
{
//do something
}
}
Timer 1的输入捕获功能可以测量脉冲的时间。使用该功能时,第9脚需要设置为“捕获特殊功能模式”。具体方法如下:
首先,将P3口的位3设为1,即将其设置为“捕获特殊功能模式”;然后,将计数器/定时器控制寄存器中的TMOD设置为12,即选择了Timer1的普通8位计数器模式,并打开了Timer1的输入捕获功能。
在程序中使用Timer1输入捕获功能的示例如下:
void main() unsigned int start, end, t;
TR1 = 1; //启动Timer1
while (1)
{
while (P3.5 == 0); //等待输入脉冲
start = TH1; //记录开始时间
start = start << 8 | TL1;
while (P3.5 == 1); //等待输入脉冲结束
end = TH1; //记录结束时间
end = end << 8 | TL1;
t = end - start; //计算总时间
//do something
}
}