完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
typedef unsigned char u8; typedef unsigned int u16; ***it k1=P3^1; ***it k2=P3^0; ***it k3=P3^2; ***it PWM=P2^0; ***it IRIN=P3^2; u8 IrValue[7]; u16 value=12,timer1=0;count=0;Time; void delay(unsigned int x) { unsigned int i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void IrInit() { IT0=1;//下降沿触发 EX0=1;//打开中断0允许 EA=1; //打开总中断 IRIN=1;//初始化端口 } void ReadIr() interrupt 0 { u8 j,k; u16 err; Time=0; delay(700); //7ms if(IRIN==0) //确认是否真的接收到正确的信号 { err=1000; //1000*10us=10ms,超过说明接收到错误的信号 /*当两个条件都为真是循环,如果有一个条件为假的时候跳出循环,免得程序出错的时 侯,程序死在这里*/ while((IRIN==0)&&(err>0)) //等待前面9ms的低电平过去 { delay(1); err--; } if(IRIN==1) //如果正确等到9ms低电平 { err=500; while((IRIN==1)&&(err>0)) //等待4.5ms的起始高电平过去 { delay(1); err--; } for(k=0;k<4;k++) //共有4组数据 { for(j=0;j<8;j++) //接收一组数据 { err=60; while((IRIN==0)&&(err>0))//等待信号前面的560us低电平过去 { delay(1); err--; } err=500; while((IRIN==1)&&(err>0)) //计算高电平的时间长度。 { delay(10); //0.1ms Time++; err--; if(Time>30) { return; } } IrValue[k]>>=1; //k表示第几组数据 if(Time>=8) //如果高电平出现大于565us,那么是1 { IrValue[k]|=0x80; } Time=0; //用完时间要重新赋值 } } } if(IrValue[2]!=~IrValue[3]) { return; } } IrValue[4]=IrValue[2]>>4; //高四位变低四位 IrValue[5]=IrValue[2]&0X0F; //取键值得低四位 IrValue[7]=IrValue[4]*16+IrValue[5];//十六进制换算成十进制 EX1=1; } void Time1init() { EA=1; ET1=1; TMOD=0x10; TH1=(65535-65)/256; TL1=(65535-65)%256; TR1=1; } void keys() { if(IrValue[7]==7) { if (value>=5) value--; } if (IrValue[7]==21) { if (value<=25) value++;} } void main() { IrInit(); k1=1; k2=1; Time1init(); while(1) { keys(); }} void time1stop()interrupt 3 using 0 { timer1++; if (timer1<=value) PWM=1; else PWM=0; if (timer1==200) timer1=0; TH1=(65535-65)/256; TL1=(65535-65)%256; } 谢谢大家~ |
|
相关推荐
1个回答
|
|
一步一步查,看有没有进入中断
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
726 浏览 0 评论
777 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
680 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1149 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1120 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11798 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 22:24 , Processed in 0.544914 second(s), Total 39, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号