⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main._c

📁 AVR 红外接收源代码,对学习红外的人很有帮助
💻 _C
字号:
/******************************************/
/*             北京MCU学习之家            */
/* 采集红外输入数据的高低电平保持时间程序 */
/*             作者:白如冰                */
/*             2005年10月1日              */
/*  目标MCU:MEGA8   晶振:外部(EXT) 8MHZ   */
/******************************************/
//  1、使用WIN9X/WIN2000/XP的超级终端,进行通信调试。
//  2、通信波特率为9600(8位数据,无校验,1位停止位,无数据流控制)。
//  3、输出高低电平的保持时间,单位是微秒。
#include <iom8v.h>
#include "infrared_measure.h"
#define fosc 8000000 //晶振8MHZ
#define baud 9600	 //波特率

extern void init_infr(void);
unsigned char uia_data[5];  //5位ASC码存储区

void delay_us(unsigned int n)
{
  unsigned int i;
  for(i=n;i>0;i--);
  }
  
void delay_1ms(void)
{ unsigned int i;
 for(i=1;i<(unsigned int)(1144-2);i++)
    ;
}
void delay_ms(unsigned int n)
{
 unsigned int i=0;
   while(i<n)
   {delay_1ms();
    i++;
   }
}  													

unsigned char *uint_asc(unsigned int data)  //字转换为5位ASC码
{
  unsigned char *uia;
  unsigned int temp;
  uia=uia_data;
  
  temp=data;
  uia+=4;
  *uia--=temp%10+0x30;
  temp=data;
  *uia--=(temp/10)%10+0x30;
  temp=data;
  *uia--=(temp/100)%10+0x30;
  temp=data;
  *uia--=(temp/1000)%10+0x30;
  *uia=temp/10000+0x30;
  uia=uia_data;
  return(uia);
}

/*  		字符输出函数 		 */
void putchar(unsigned char c)
	{	 
     while (!(UCSRA&(1<<UDRE)));
	 UDR=c;    
	}

/*			字符串输出函数	   	 */	
int puts(char *s)
	{
	while (*s)
		{
		putchar(*s);
		s++;
		}	
    	return 1;
	}
/*	 	   含回车换行的字符串输出函数 	 */	
void puts_hh(char *s)
	{
	while (*s)
		{
		putchar(*s);
		s++;
		}	
    putchar(0x0a);//换行
	putchar(0x0d);//回车
	}	
/*			UART初始化				*/	
void uart_init(void)
{
 UCSRB=(1<<RXEN)|(1<<TXEN);//允许发送和接收
 UBRRL=(fosc/16/(baud+1))%256;
 UBRRH=(fosc/16/(baud+1))/256;
 UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位停止位
}

void main(void)
{
 
  unsigned char i,*p;
  uart_init();
  init_infr();
  
 
 
  
   while(1)
   {
   		   delay_ms(2000);
  		   for(i=0;i<74;i++)
  		   {
  		   	  p=uint_asc(counter_buffer[i]);
  			  putchar(*p++);
  			  putchar(*p++);
  			  putchar(*p++);
  			  putchar(*p++);
  			  putchar(*p++);
  
  			  puts("     ");
  			}
   			for(i=0;i<74;i++)
  			counter_buffer[i]=0;
  			n=0;
  			flag_start=0;
  			TCCR1B=0;
  			TCNT1=0;
  
 }
}

⌨️ 快捷键说明

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