搜索
bottom↓
回复: 4

[求助] 1838红外解码简化程序,失败,找不着原因。

[复制链接]

出0入0汤圆

发表于 2013-3-16 16:10:57 | 显示全部楼层 |阅读模式
/*本程序是自己写的1838红外一体化收发装置的解码程序,已简化,即没有对具体的引导码时间做确认,也没有对反码和原码做确认。
烧写后,只有第一次按键时数码管有变化,之后无反应。调试不出错误,求高手指导!*/

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code led_du_table[]=  //led数字编码
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar ir[]={0,0,0,0,0,0};  /*前四个表示收到的用户编码、反码、数据码、数据反码,ir[5]为数据码的高四位,
        ir[4]为数据码的低四位*/
sbit hwir=P3^2;     //外部中断即数据传输口
sbit dula=P2^6;     //数码管段选
sbit wela=P2^7;     //数码管位选
void delay()     //0.14ms延迟
{
uchar x;
for(x=140;x>0;x--);
}
void display()
{
dula=1;
P0=led_du_table[ir[4]];
dula=0;

wela=1;
P0=0xfd;
wela=0;
delay();

dula=1;
P0=led_du_table[ir[5]];
dula=0;

wela=1;
P0=0xfe;
wela=0;
delay();
}
void wbzdf() interrupt 0     //外部中断函数
{
uchar count,m,n;
EX0=0;
while(!hwir);       //9秒的低位引导码
while(hwir);       //4.5秒的高位引导码
for(m=0;m<4;m++)
{
  for(n=0;n<8;n++)
  {
   while(!hwir);    //等低电平结束
    while(hwir)     //计算高电平时间
    {
     delay();
     count++;
    }  
     ir[m]=ir[m]>>1;
     if(count>8)    //若超过1.12ms,赋1
     {
      ir[m]=ir[m]|0x80;
     }
    count=0;
  }  
}
ir[4]=ir[2]&0x0f;    //为ir[4]和ir[5]赋值
ir[5]=ir[2]>>4;
}
void init()
{
P0=0xff;
dula=0;
wela=0;
EA=1;
EX0=1;
IT0=1;
}

void main()
{
init();
while(1)
{
  display();
}
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入4汤圆

发表于 2013-3-16 17:28:58 | 显示全部楼层
查查中断处理程序里面有没有清状态位,恢复中断功能

出0入0汤圆

 楼主| 发表于 2013-3-16 21:25:34 | 显示全部楼层
ronic 发表于 2013-3-16 17:28
查查中断处理程序里面有没有清状态位,恢复中断功能

清状态位是什么意思?是汇编中的psw吗?我用的c语言编写的啊。我在原程序中断程序末尾也就是为ir[5]赋值后加了EX0=1之后还是不行,无论按下哪个键,都有且仅有一个数码管显示一个0,之后再按任何键都没有反应。自学51单片机不久,还请前辈指导!

出0入0汤圆

发表于 2013-3-17 07:53:13 | 显示全部楼层
部分程序位置不对!检查一下!完善程序

出0入0汤圆

 楼主| 发表于 2013-3-17 11:07:51 | 显示全部楼层
shizhibing 发表于 2013-3-17 07:53
部分程序位置不对!检查一下!完善程序

能具体一些吗 检查许多遍了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表