学习型红外线遥控程序——C51

发布者:温暖微风最新更新时间:2016-11-21 来源: eefocus关键字:学习型  红外线遥控  C51 手机看文章 扫描二维码
随时随地手机看文章

/*************晶体为11.0592M,波特率9600bps
***************学习型红外线遥控程序*******/
#include
void Ewen(void);
void Ewds(void);
void Delay(void);
void Irda(void);
void Study(void);
void Output(unsigned int h);
void Comput(unsigned char outdata);
void Erase(unsigned char Address);
unsigned int Read(unsigned char Address);
unsigned char Display(unsigned char inAddress);
void Write(unsigned char Address,unsigned int InData);
unsigned int Both(unsigned char data1,unsigned char data2);
unsigned char data e1 _at_ 0x1A;        //分别存放红外线译码后的数据
unsigned char data w1 _at_ 0x1B; 
unsigned char data e2 _at_ 0x1C;
unsigned char data w2 _at_ 0x1D;
sbit IrInput=P3^2;        //红外线输入引脚,可自定义
sbit Study1=P3^6;       //学习按键,可自定义
sbit Led2=P2^5;          //接收成功、学习成功指示
sbit Led1=P2^6;          //空闲指示
sbit Dout=P2^3;         //at93c16--DO
sbit Din=P2^2;          //at93c16--DI
sbit sk=P2^1;           //at93c16--SK
sbit cs=P2^0;           //at93c16--CS

/*********************主程序***************************/

void main(void)
{
unsigned int i;
SCON = 0x50;    //串口方式1,允许接收
TMOD = 0x20;    //定时器1定时方式2
TH1 = 0xFD;      //波特率9600
TL1 = 0xFD;
IT0 = 1; //INT0下降沿有效
EX0 = 1; //开INT0中断;
TR1 = 1;         //启动定时器
P2_7=0;          //初始化引脚
P1=0xff;
EA = 1; //允许CPU中断
while(1)                              
   { 
    for (i=0; i<20000; i++)
        { Led1=1;
                if(!Study1) Study();
             }
    for (i=0; i<20000; i++)
        { Led1=0;
                if(!Study1) Study();
             }
   }
}

/***********************串口输出**********************/
void Comput(unsigned char outdata)
{
SBUF = outdata; 
while(!TI); 
TI = 0; 
}

/*******************红外线查询子程序*******************/
void Irda(void)

      #pragma asm 
      MOV R6,#10
SB: 
      MOV     R4,#19      ;延时880微秒
D1:   
      MOV     R5,#19
      DJNZ    R5,$
      DJNZ    R4,D1

      JB P3.2,EXIT       ;延时882微秒后判断P3.2脚是为1
      DJNZ R6, SB        ;在8820微秒内如P3.2为1就退出
      JNB P3.2, $        ;等待高电平避开9毫秒低电平引导脉冲

      MOV     R4,#10      ;延时4740微秒
D2:   MOV     R5,#218
      DJNZ    R5,$
      DJNZ    R4,D2
                        ;延时4.74毫秒避开4.5毫秒的结果码

      MOV R1,#1AH        ;设定1AH为起始RAM区
      MOV R2,#4          ;接收从1AH到1DH,用于存放操作码和操作反码 
PP:
      MOV R3,#8          ;每组数据为8位

SS: 
      JNB P3.2,$         ;等待地址码第一位的高电平信号
      MOV     R4,#19      ;延时880微秒
D5: 
      MOV     R5,#19
      DJNZ    R5,$
      DJNZ    R4,D5
                       ;高电平开始后882微秒判断信号的高低电平
      MOV C,P3.2        ;将P3.2引脚此时的电平状态0或1存入C中
      JNC TT            ;如果为0就跳转到TT

      MOV R4,#2         ;延时1000微秒
      D6:MOV R5,#248
      DJNZ R5,$
      DJNZ R4,D6
                       ;检测到高电平1的话延时1毫秒等待脉冲高电平结束
TT: 
      MOV A,@R1         ;将R1中地址的给A
      RRC A             ;将C中的值0或1移入A中的最低位
      MOV @R1,A         ;
      DJNZ R3,SS        ;接收满8位换一个内存
      INC R1            ;对R1中的值加1,换下一个RAM
      DJNZ R2,PP        ;接收完所有数据
EXIT:
#pragma endasm 
}


关键字:学习型  红外线遥控  C51 引用地址:学习型红外线遥控程序——C51

上一篇:在KEIL环境使用SST89E516RD仿真的设置
下一篇:c51写的日历时钟程序2

推荐阅读最新更新时间:2024-03-16 15:21

C51—模拟IIC总线实现EEPROM存取数据
- 什么是IIC总线 IIC总线是同步通信的一种特殊形式,具有接线口少、控制简单、器件封装形式小、通信速率高等特点。在主从通信中,可以有多个IIC总线器件同时连接到IIC总线上,所有与IIC兼容的器件都具有标准的接口,通过地址来识别通信对象,使他们可以经由IIC总线互相直接通信。 IIC总线由SDA数据线和SCL时钟线俩条线构成通信线路,既可发送数据也可以接收数据。在CPU和IC之间、IC与IC间都可以双向传播,每个器件都有唯一的地址,这样就可以使信息进行准确的传输。CPU发出的信号分为地址码和数据码俩部分,地址码用来选址,数据码是通信的内容。 总而言之,IIC总线就是器件之间的通信线路,主器件可以通过IIC总线向从器件发
[单片机]
<font color='red'>C51</font>—模拟IIC总线实现EEPROM存取数据
93C46/93c06/93c46/93c56/93c66/93c86的驱动程序(C51)
简介:SPI总线驱动程序 包括的普通封装标准模式,特殊封装标准模式 。 —————————————————————*/ /*通用93c06-93c86系列使用说明 93c06=93c4693c56=93c6693c76=93c86 dipx 可以自行定义*/ #include reg51.h #include intrins.h /*----------------------------------------------------- SPI93cXX系列时序函数调用(普通封装) 调用方式:自行定义 函数说明:私有函数,封装各接口定义 ------------------------------------------
[单片机]
C51编程21-应用篇(LCD1602显示-2)
LCD的写模式操作 对LCD1602,具有四种基本的操作,读命令,写命令,读数据,写数据。由于主要是让LCD1602显示数据,我们只需要用到写命令与写数据即可。 写数据和写命令为称之为写模式 在LCD1602中, RS引脚的高低电平 控制是数据或者命令,高电平为数据,低电平为命令。 R/W引脚的高低电平控制是读模式或者写模式,高电平为读,低电平为写; E引脚控制数据与命令使能,使操作生效,高电平写入数据,低电平生效。 下面时序图为写模式的时序图 由于单片机运行的机器周期最快速度为1us,超过400ns,因此执行指令时可以不需要额外的延时。 写命令可以这样操作。 RS = 0; R/W =0
[单片机]
<font color='red'>C51</font>编程21-应用篇(LCD1602显示-2)
C51自学笔记】D/A转换器++DAC0832芯片+A/D转换器+ADC0804芯片
D/A转换器:数字量D和模拟量A之间的转换。 D——》A:((高电平-低电平)/2^8 )*n n:输出的八位对应的十六进制数据对应的十进制 基本原理: 性能指标: 1、分辨率 分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。 分辨率与输入数字量的位数有确定的关系,可以表示成FS/2n。 FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。 2、线性度 线性度(也称非线性误
[单片机]
【<font color='red'>C51</font>自学笔记】D/A转换器++DAC0832芯片+A/D转换器+ADC0804芯片
C51编程16-中断篇(定时器中断3)
使用定时器/计数器中断,需要将满足以下的条件。 1)中断总允许打开 EA = 1; 2)中断源允许打开 ET0 = 1或者 ET1= 1; 3)设置定时器计/计数器的工作方式(设置TMOD) 4)装载定时器,设置计数器的初始计算值。 5)开启定时器(TCON中的TR0 = 1或者TR1 = 1) 6)中断服务函数 通过前面一些中断文章的学习,相信除了上面的第4点外,使用定时器/计数器已经没什么难度了。 装载定时器,前面的定时器章节可以知道,定时器/计数器有4种方式。它们分别是13位手动装载(方式0)、16位手动装载(方式1)、8位自动重装(方式2)、8位手动装载(方式3)。根
[单片机]
<font color='red'>C51</font>编程16-中断篇(定时器中断3)
ASM5无参数化调用C51函数的实现
MCS -51系列单片机在目前和今后的相当一段时间内都将是我国的单片机主流机种。但在早期的开发过程中,程序员不得不从深奥的汇编语言开始摸索,同时要求开发人员对硬件亦有相当的子解。相比而言,专用8051系列单片机设计的Franklin C51语言是一种通用的高级结构化的程序设计语言。入门容易,程序可读性强,调试、移植都很方便,故开发效率高,尤其在数值运算处理方便具有很大的优势(这正是ASM51汇编语言的薄弱环节)。不过,C语言虽然也可对计算机的硬件系统进行操作,但在处理特殊I/O口和中断向量方面,不如汇编那样直接、有效。因而,在效率为重的今天,将ASM51汇编与C51语言结合起来,充分发挥各自的优势,无疑是单片机开发人员的最佳选择。
[单片机]
keil c51红外遥控解码程序
本keil c51程序适用uPC1621/uPC1622及兼容的红外遥控器芯片,占用外部中断0和定时器1,以中断方式解码,节省系统资源,以查询方式检测遥控信号是否有效. 解码思路: 红外线经一体化接受头解码放到后送到单片机的外部中断0,单片机设置外部中断下降沿触发,T0和T1为16位定时器,T0在系统启动后定时5ms.T1在外部中断0启动后开始定时,初值为0,每次在INT0中断后先读T1计数值,并重设初值为0,而且判断T1的计数值, 代码 //Fosc=11.0592MHz //statesforandvariablesIRdataprocessing typedefenum{ IR_idle, IR_waitsta
[单片机]
带USB和智能读卡器接口的C51微控制器
摘要:ATMEL公司是51单片机生产厂家之一,该公司新推出的AT8xC5122系列微处理器可支持USB和读卡器,并且具有两种封装形式,可以方便地应用于多种场合和仪器中。 关键词:单片机;USB;读卡器;微控制器;AT8xC5122 1 AT8xC5122的特性结构 Atmel公司最近又生产了一系列带USB和智能读卡器接口的微处理器(如AT83C5122、AT85C5122、AT89C5122等)。这些器件是由8位微处理器80C51优化派生出来的高性能CMOS微处理器,带有USB和智能读卡器接口,其中AT8xC5122保留了Atmel 80C51的特性,带有32kB的ROM、768字节的内部RAM、一个四级中断系统、两个16
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved