uPD6121 avr红外解码程序.docVIP

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
uPD6121 avr红外解码程序

uPD6121 avr红外解码程序 #include iom16v.h #include macros.h #define uint unsigned int #define uchar unsigned char #define ulong unsigned long /*------------------------------显示-----------------------------------*/ #define LED_DATA PORTB const uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ void delay(void){ uint i; for(i=0;i2000;i++); } void dis_int(uint dis_data) { //四位共阴数码管,十六进制显示 LED_DATA=tab[(uchar)((dis_data0xf000)12)]; //显示千位 PORTD=0xf7; delay(); //延时 LED_DATA=tab[(uchar)((dis_data0x0f00)8)]; //显示百位 PORTD=0xfb; delay(); //延时 LED_DATA=tab[(uchar)(dis_data0x00f0)4]; //显示十位 PORTD=0xfd; delay(); //延时 LED_DATA=tab[(uchar)dis_data0x000f]; //显示个位 PORTD=0xfe; delay(); //延时 } void port_init(void) { PORTA = 0xFF; DDRA = 0x00; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0x0F; } void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0x00; //setup TCNT1L = 0x00; ICR1H = 0x00; ICR1L = 0x08; TCCR1A = 0x00; /*一体化接收头的DATA引脚接到ATmega16的PD6(ICP1)引脚,采用上升沿捕捉的方法解码*/ /*晶振为6M,无分频,用8M太大(分频则太小)*/ TCCR1B = 0x41; //start Timer } uint arr[16];//保存捕捉值 uchar times;//记录捕捉次数 uchar index;//数组索引 uchar ir_code;//红外遥控键码 uchar OK_flag;//解码完毕标志 /*------------------------------------------------------------------------------ 模块名称:PD6(ICP1)引脚上升沿捕捉中断程序 影响: 将捕捉值保存在arr[16]中 ___ ___ | | | | ___| |_________| |__________ |-----t-----| DEC HEX t=9ms 计数值=54000

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档