基于STC89C52单片机红外遥控步进电机 - 图文(4)

2019-04-01 15:59

}

while(IRIN) //等IR变为低电平,跳过4.5ms的前导高电平信号 {

delay(1); }

for (j=0;j<4;j++) // 收集四组数据 {

for(k=0;k<8;k++)//每组数据有8位 {

while(IRIN)//等IR变为低电平 {

delay(1); }

while(!IRIN)//等IR变为高电平 {

delay(1); }

while(IRIN)//计算IR高电平时长 {

delay(1); Num++; if(Num>=15) {

EX0=1;//0.14ms计数过长自动离开 return; }

}//高电平计数完毕

IRCOM[j]=IRCOM[j]>>1;//数据最高位补“0” if(Num>=8)

IRCOM[j]=IRCOM[j]|0x80;//数据最高位补“1” Num=0; } }

if(IRCOM[0]!=0x00)//比较用户码 {EX0=1; //开INT0中断 return;//退出 }

if(IRCOM[2]!=~IRCOM[3])//接收数据是否正确 {

EX0=1;//开INT0中断 return;//退出 }

else beep(); flag=1;

if(IRCOM[2]==0x09)//“+”键 {

if(rate>4) rate--; else rate=4; }

if(IRCOM[2]==0x15) {

if(rate<15) rate++; else

rate=15; }

EX0=1;//重新开INT0中断 }

/*******************************************************************

定时器0中断服务子函数

*******************************************************************/

void motor_onoff() interrupt 1 {

TL0=0xcc;//2ms定时常数 TH0=0xf8; count1++;

if(count1

return; } else

{

count1=0;

if(direction==1) //运行方向标志 {

if(count2<8)

P0=FFW[count2]&0x1f; //取数据,正转 count2++; //取数据次数加1 if(count2==8) count2=0; } else {

if(count2<8)

P0=REV[count2]&0x1f; //取数据,反转 count2++; //取数据次数加1 if(count2==8) count2=0; } } }

十、毕业作品实物照


基于STC89C52单片机红外遥控步进电机 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:吉大17秋学期《生物药剂与药物动力学》在线作业二

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: