标题: 单片机红外发射问题 [打印本页]

作者: wuyuwangluo    时间: 2018-8-1 23:12
标题: 单片机红外发射问题
求助大神 小弟感激不尽
把数组改成Int型 程序就出错  数据发射不完改了以后的数组 int timedata[32]={580,535,535,535,535,535,535,535,535,580,580,580,580,580,580,180,35,35,80,80,35,35,35,35,80,80,35,35,80,80,80,80, };


单片机源程序
#include<reg52.h>
sbit button=P2^0;
sbit ir=P1^0;
unsigned int irtime;
char b,y;
char timedata[32]={80,35,35,35,35,35,35,35,35,80,80,80,80,80,80,80,35,35,80,80,35,35,35,35,80,80,35,35,80,80,80,80, };
void timer0()interrupt 1   //定时器中断
{
        irtime++;
        if(b==1)
        {
         ir=~ir; //取反  如果是1就变成0
        }
}
void main()
{
int x;
        ET0=1; //允许定时器0的中断
        EA=1;  //打开总中断
        TMOD=0X02;//定时器0工作方式2 自动重装定时器
        TH0=0Xe6; //装初值25.8us
        TL0=0Xe6; //装初值25.8us
        TR0=0;          //开启定时器T0
        ir=0;
        x=0;
   if(y==0)
   {
                TR0=1;
                b=1;
                irtime=0;
                while(irtime<320);//320
                b=0;
                ir=0;
                while(irtime<500);// 484
                for(x=0;x<33;x++)
                {
                        irtime=0;
                        b=1;
                        while(irtime<21);//18
                        b=0;
                        ir=0;
                        while(irtime<timedata[x]);
                        if(x>33)
                        break;        //跳出循环
                }
                TR0=0;
                y=1;
        }                 
}


作者: diy1997    时间: 2018-8-1 23:29
没有看到有使用数组里面的数据。
作者: ljx8940    时间: 2018-8-2 07:55
irtime没有定义
作者: LJ_Austin    时间: 2018-8-2 09:02
数组前面加个const
作者: dianziluntan_sw    时间: 2018-8-2 09:47
数组前面加个const就不会出现这个问题了
作者: wuyuwangluo    时间: 2018-8-2 12:45
LJ_Austin 发表于 2018-8-2 09:02
数组前面加个const

改成这样又不行了

#include<reg52.h>
sbit button=P2^0;
sbit ir=P1^0;
unsigned int irtime;
char b,y;
const int timedata[49]={580,535,535,535,535,535,535,535,535,580,580,580,580,580,580,180,535,535,580,580,535,535,535,535,580,580,535,535,580,580,580,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550,550 };



void timer0()interrupt 1   //定时器中断
{
        irtime++;
        if(b==1)
        {
         ir=~ir; //取反  如果是1就变成0
        }
}
void main()
{
int x;
        ET0=1; //允许定时器0的中断
        EA=1;  //打开总中断
        TMOD=0X02;//定时器0工作方式2 自动重装定时器
        TH0=0Xe6; //装初值25.8us
        TL0=0Xe6; //装初值25.8us
        TR0=0;          //开启定时器T0
        ir=0;
        x=0;
   if(y==0)
   {
                TR0=1;
                b=1;
                irtime=0;
                while(irtime<320);//320
                b=0;
                ir=0;
                while(irtime<500);// 484
                for(x=0;x<49;x++)
                {
                        irtime=0;
                        b=1;
                        while(irtime<21);//18
                        b=0;
                        ir=0;
                        while(irtime<timedata[x]);
                        if(x>49)
                        break;        //跳出循环
                }
                TR0=0;
                y=1;
        }                 
}
作者: wuyuwangluo    时间: 2018-8-2 12:46
本帖最后由 wuyuwangluo 于 2018-8-2 21:51 编辑
dianziluntan_sw 发表于 2018-8-2 09:47
数组前面加个const就不会出现这个问题了

改了 可以 把数值加大又不行了  还有其他办法吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1