找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2135|回复: 10
打印 上一主题 下一主题
收起左侧

单片机学习型红外遥控开关程序 用Keil uVision 4编译 什么不能通过?

[复制链接]
回帖奖励 50 黑币 回复本帖可获得 50 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:17109 发表于 2019-9-3 16:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那位师博能把这个学习型红外遥控开关,用Keil uVision 4编译   通过生成hex代码    修改好用压缩包上传,谢谢
#include<AT89X51.H>   //装入AT89X51头文件
#include<ir.h>                        //装入红外解码程序
#include<24c02.H>                //装入24c02读写程序
sbit key=P1^0;                        //定义按键IO
sbit led=P0^0;       //定义指示led
sbit rel=P0^1;                        //定义输出控制脚

unsigned char kaver;  //定义kaver为输出口状态缓存
unsigned char iccdate,irdate;  //定义24c02数据和解码数据

//延时10ms函数,用于开关消抖等
delay10ms()   
{
        unsigned char i,j;         
        for(i=20;i>0;i--)         
        for(j=248;j>0;j--);         
}

//学习红外解码并写入24c02的函数
study()
{
    IR_IN();
         irdate=IRCOM[3];
    iccdate=ReadIIC(W_cmd,0x00,R_cmd);
        if(irdate!=iccdate)        //只在解码结果与读取结果不同时写入24C02
        {
                if(irdate!=0)                        //防止没有接收到红外信号,IRCOM[3]置零时,误写入0
                {
                WP=0;
                WriIIC(W_cmd,0x00,irdate);
                delay10ms();
                WP=1;
                led=0;
                while(key==0);                //学习成功等待按键释放,led停止闪动作为指示
                }
         }
}
//进入学习状态时的led闪动函数
flash()
{
    unsigned char i;
          while(key==0)
          {
             led=~led;
                  for(i=50;i>0;i--)
                                  study();                 
          }
}
//按键模式识别函数
keymod()
{
        unsigned char m=0;
        while(key==0)                          //如果按键按下,开始对按键时间进行计数
        {               
                        delay10ms();                        //计数时间延时
                        m++;
                        delay10ms();                        //计数时间延时
                        if(m>=90)                                //如果计数次数大于90次,等于按键按下时间大于约5秒后,进入led闪动学习模式
                        {
                                m=0;
                                flash();
                        }
        }

         if(m<90)              //如果计数次数小于90,则按键作为开关使用
         {
                 m=0;
                kaver=~kaver;
         }

}
////////////////////主函数////////////////////////////////////
main()
{
        WP=1;                        //24c02写保护
        while(1)
        {
                IRCOM[3]=0;
            IR_IN();                                // 读4字节32位按键编码 ,前16位用户码为IRCOM[1]+IRCOM[2],8位键值码为IRCOM[3]
                irdate=IRCOM[3];                                        //8位键值反码为IRCOM[4] 这里只调用 IRCOM[3]键值码作为数据码
                iccdate=ReadIIC(W_cmd,0x00,R_cmd);
                if(irdate==iccdate)                                                //如果解码结果与24C读取码相同,kaver翻转一次
                {
                        irdate=0;
                        kaver=~kaver;
                }

      if(key==0)         
                        keymod();
                rel=~kaver;
                led=kaver;
        }
}

学习型红外遥控开关.rar

1.14 KB, 下载次数: 12

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:373185 发表于 2019-9-3 16:59 | 只看该作者
把编译出错的信息贴上来 才能判断
回复

使用道具 举报

板凳
ID:97554 发表于 2019-9-3 18:08 | 只看该作者
头文件三个都有问题,自己看看

#include<AT89X51.H>   这个改成#include<reg51.h>
#include<ir.h>                       
#include<24c02.H>            这两个程序文件没有那什么编译?

你先把第一行那个改了之后看能不能编译。   
回复

使用道具 举报

地板
ID:607016 发表于 2019-9-4 09:24 | 只看该作者
#include<ir.h>                        //装入红外解码程序
#include<24c02.H>                //装入24c02读写程序
这两个应该是驱动,没有自然是无法编译的
回复

使用道具 举报

5#
ID:208271 发表于 2019-9-4 10:27 | 只看该作者
你这个用的是什么型号的单片机,编译问题是什么
回复

使用道具 举报

6#
ID:46999 发表于 2019-9-4 11:30 | 只看该作者
补上ir.h /24c02.h  再重新编译            
回复

使用道具 举报

7#
ID:607323 发表于 2019-9-4 11:43 | 只看该作者
请发一下报错的提示信息
回复

使用道具 举报

8#
ID:17109 发表于 2019-9-6 14:17 来自手机 | 只看该作者
cainiao4414 发表于 2019-9-4 09:24
#include                        //装入红外解码程序
#include                //装入24c02读写程序
这 ...

不知道在那里能走到红外解码程序和24c02可以给补上编译吗谢谢
回复

使用道具 举报

9#
ID:483423 发表于 2019-9-6 16:32 | 只看该作者
头文件和里面定义的变量有没有问题?
回复

使用道具 举报

10#
ID:17109 发表于 2019-9-28 11:53 | 只看该作者
杨雪飞 发表于 2019-9-3 18:08
头文件三个都有问题,自己看看

#include   这个改成#include

补上ir.h  24c02.H AT89X51.H  师博看那里有问题 请修改一下谢谢
回复

使用道具 举报

11#
ID:17109 发表于 2019-9-28 11:55 | 只看该作者
补上编译有问题请师博看看那里,有问题

学习型红外遥控开关.rar

18.93 KB, 下载次数: 18

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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