双管寻迹.c

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

C
48
字号
/********************************************************************************/
/*
                     广州双龙电子
                     WWW.SL.COM.CN
	 接线方法:
          两个光电管并排在小车前方中间,即PC.7,PC.5控制信号线
     功能:
          两个红光电对管寻迹
          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(;;)
  {
  switch(PINC&0xA0)
    {
	case 0xA0:PORTD=0xAF ;PORTA=0xE7; delay(1);break;       //直行,点亮前进指示灯
	case 0x80:PORTD=0x60 ;PORTA=0x1F; delay(1);break;       //转左,点亮左转指示灯
	case 0x20:PORTD=0x90 ;PORTA=0xF8; delay(1);break;       //转右,点亮右转指示灯
	case 0x00:PORTD=0xAF ;PORTA=0xff; delay(1);break;       //熄灭全部LED
	}   
  }
} 

⌨️ 快捷键说明

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