单管寻迹.c

来自「AVR单片机应用开发指南及实例,包含许多实例,挺不错」· C语言 代码 · 共 64 行

C
64
字号
/*******************************************************************/
/*                     广州双龙电子
                       WWW.SL.COM.CN
   接线方法:
        光电管安装在小车前方中间,PC.6控制信号线
   功能:
        单个红光电对管寻迹
        LED4~5是前进指示灯;LED1~3是左转弯指示灯;LED6~8是右转弯指示灯
   Chip type       :   ATMEGA16 
   Clock frequency :   8MHz

*/
/********************************************************************/
#include <iom16v.h>
#include <macros.h>
#define xtal 8
void delay_1ms(void)   //1ms延时
  {
  unsigned int i;
  for(i=1;i<(unsigned int)(xtal*143-2);i++) 
  ;
  }
void delay(unsigned int n)
  {
  unsigned int i;
  for(i=0;i<n;i++)
  delay_1ms();
  }  
void main(void)
{
DDRA=0xff;      //初始化端口
PORTA=0xff;    
DDRD=0xf0;
PORTD=0x0f;    
DDRC=0x00;
PORTC=0xff; 
for(;;)
  {
  if (PINC&=0x40)
    {
    PORTD=0xAF;    //直行
    PORTA=0xE7;    //点亮LED4,LED5
    delay(1);       //延时1微秒
    }
  else  
    {
    PORTD=0x60;    //左转
    PORTA=0x1F;    //点亮左边LED
    delay(1);       //延时1微秒
    }
  if (PINC&=0x40)
    {
	PORTD=0xAF;    //直行
    PORTA=0x00;    //点亮LED4,LED5
	delay(1);       //延时1微秒
	}
  else
    {
	PORTD=0x90;    //右转
    PORTA=0xF8;    //点亮右边LED
    delay(2);       //延时2微秒
	}
  }
}  

⌨️ 快捷键说明

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