16_3_2.c

来自「单片机学习的例程.rar 学习单片机要从最基本的学起。对于初学者来说很适合的单片」· C语言 代码 · 共 67 行

C
67
字号
//电子栏杆发射部分C51程序
#include <AT892051.h>
#include <intrins.h>

void dlb(void);			//延时程序1
void dlc(void);			//延时程序2

main()
{
unsigned char data t1;
a1:	for (i=0;i<=800;i++)//检测高电平长脉冲
		if (P3_0==0) goto a1;
	do					//等待下一个应答信号
		_nop_();
	while (P3_0!=0);
	do
		{
		P3_5=0;			//DS4发红外线信号
		P1_1=0;			//DS3发红外线信号
		dlb();			//低电平延时
		P3_5=1;			//DS4停止发红外线信号
		P1_1=1;			//DS3停止发红外线信号
		dlc();			//高电平延时
		}
	while (P3_0==0);
	do					//等待下一个应答信号
		_nop_();
	while (P3_0!=0);
	do					//有应答信号
		{
		P1_6=0;			//DS2发红外线信号
		P1_1=0;			//DS3发红外线信号
		dlb();			//低电平延时
		P1_6=1;			//DS2停止发红外线信号
		P1_1=1;			//DS3停止发红外线信号
		dlc();			//高电平延时
		}
	while (P3_0==0);
	do					//等待应答信号
		_nop_();
	while (P3_0!=0);
	do					//有应答信号
		{
		P1_6=0;			//DS2发红外线信号
		P1_7=0;			//DS1发红外线信号
		dlb();			//低电平延时
		P1_6=1;			//DS2停止发红外线信号
		P1_7=1;			//DS1停止发红外线信号
		dlc();			//高电平延时
		}
	while (P3_0==0);
	goto a1;
}

void dlb(void)			//延时程序1
{
	_nop_();
}

void dlc(void) 			//延时程序2
{
	_nop_();
	_nop_();
	dlb();
	dlb();
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?