红外线遥控程序,完整C语言版,已通过KEIL测试

上传人:ldj****22 文档编号:31171613 上传时间:2018-02-05 格式:DOC 页数:3 大小:24.50KB
返回 下载 相关 举报
红外线遥控程序,完整C语言版,已通过KEIL测试_第1页
第1页 / 共3页
红外线遥控程序,完整C语言版,已通过KEIL测试_第2页
第2页 / 共3页
红外线遥控程序,完整C语言版,已通过KEIL测试_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《红外线遥控程序,完整C语言版,已通过KEIL测试》由会员分享,可在线阅读,更多相关《红外线遥控程序,完整C语言版,已通过KEIL测试(3页珍藏版)》请在金锄头文库上搜索。

1、红外线遥控程序,完整语言版,已通过测试/*晶体为 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 Di

2、splay(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

3、=P32; /红外线输入引脚, 可自定义sbit Study1=P36; /学习按键 ,可自定义sbit Led2=P25; /接收成功、学习成功指示sbit Led1=P26; /空闲指示sbit Dout=P23; /at93c16-DOsbit Din=P22; /at93c16-DIsbit sk=P21; /at93c16-SKsbit cs=P20; /at93c16-CS/*主程序*/void main(void)unsigned int i;SCON = 0x50; /串口方式 1,允许接收TMOD = 0x20; /定时器 1 定时方式 2TH1 = 0xFD; /波特率 9

4、600TL1 = 0xFD;IT0 = 1; /INT0 下降沿有效EX0 = 1; /开 INT0 中断;TR1 = 1; /启动定时器P2_7=0; /初始化引脚P1=0xff;EA = 1; /允许 CPU 中断while(1) for (i=0; i20000; i+) Led1=1;if(!Study1) Study();for (i=0; i20000; i+) Led1=0;if(!Study1) Study();/*串口输出*/void Comput(unsigned char outdata)SBUF = outdata; while(!TI); TI = 0; /*红外线查

5、询子程序 */void Irda(void) #pragma asm MOV R6,#10SB: MOV R4,#19 ;延时 880 微秒D1: MOV R5,#19DJNZ R5,$DJNZ R4,D1JB P3.2,EXIT ;延时 882 微秒后判断 P3.2 脚是为 1DJNZ R6, SB ;在 8820 微秒内如 P3.2 为 1 就退出JNB P3.2, $ ;等待高电平避开 9 毫秒低电平引导脉冲MOV R4,#10 ;延时 4740 微秒D2: MOV R5,#218DJNZ R5,$DJNZ R4,D2;延时 4.74 毫秒避开 4.5 毫秒的结果码MOV R1,#1AH

6、 ;设定 1AH 为起始 RAM 区MOV R2,#4 ;接收从 1AH 到 1DH,用于存放操作码和操作反码 PP:MOV R3,#8 ;每组数据为 8 位 SS: JNB P3.2,$ ;等待地址码第一位的高电平信号MOV R4,#19 ;延时 880 微秒D5: MOV R5,#19DJNZ R5,$DJNZ R4,D5;高电平开始后 882 微秒判断信号的高低电平MOV C,P3.2 ;将 P3.2 引脚此时的电平状态 0 或 1 存入 C 中JNC TT ;如果为 0 就跳转到 TTMOV R4,#2 ;延时 1000 微秒D6:MOV R5,#248DJNZ R5,$DJNZ R4,D6;检测到高电平 1 的话延时 1 毫秒等待脉冲高电平结束TT: MOV A,R1 ;将 R1 中地址的给 ARRC A ;将 C 中的值 0 或 1 移入 A 中的最低位MOV R1,A ;DJNZ R3,SS ;接收满 8 位换一个内存INC R1 ;对 R1 中的值加 1,换下一个 RAMDJNZ R2,PP ;接收完所有数据EXIT:#pragma endasm

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号