资源描述:
《keilc舵机的红外遥控》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include/************************************宏定义************************************/#defineucharunsignedchar#defineImax14000//此处为晶振为11.0592时的取值,#defineImin8000//如用其它频率的晶振时,#defineInum11450//要改变相应的取值。#defineInum2700#defineInum33000/*****************
2、*******************位定义************************************/sbitdula=P2^6;sbitwela=P2^7;sbitpwm=P1^7;//PWM信号输出/********************************定义变量和数组********************************/ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7
3、c,0x39,0x5e,0x79,0x71};//数码管段码ucharIm[4]={0x00,0x00,0x00,0x00};ucharf;ucharIrOK;ucharjd;//角度标识ucharcount;//0.5ms次数标识unsignedlongm,Tc;/******************************************************************************//*函数名称:delay*//*函数描述:延时函数*//*输入参数:无*//*参数描述:无
4、*//*返回值:无*//******************************************************************************/voiddelay(uchari){ucharj,k;for(j=i;j>0;j--){for(k=125;k>0;k--);}}/******************************************************************************//*函数名称:display*//*函数描述
5、:显示函数函数*//*输入参数:无*//*参数描述:无*//*返回值:无*//******************************************************************************/voiddisplay(void){unsignedcharbai,shi,ge;switch(jd)//根据角度标识显示相应的数值{case1://为1,角度为0,前3个数码管显示000bai=0;shi=0;ge=0;break;case2://为2,角度为45,前3个数码管
6、显示045bai=0;shi=4;ge=5;break;case3://为3,角度为90,前3个数码管显示090bai=0;shi=9;ge=0;break;case4://为1,角度为135,前3个数码管显示135bai=1;shi=3;ge=5;break;case5://为5,角度为180,前3个数码管显示180bai=1;shi=8;ge=0;break;default:break;}dula=0;P0=table[bai];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wel
7、a=0;delay(5);P0=table[shi];dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(5);P0=table[ge];dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(5);}/******************************************************************************//*函数名称:intersvr1*//*函数描述:外部中断解码程序*//*输入参数:无*//*
8、参数描述:无*//*返回值:无*//******************************************************************************/voidintersvr1(void)interrupt2using1{Tc=TH0*256+TL0;//提取中断时间间隔时长TH0=0;TL0=0;//定时中断重新置零if((Tc>Imin)