第一范文网 - 专业文章范例文档资料分享平台

红外光通信装置-电赛报告

来源:用户分享 时间:2025/5/30 8:34:11 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

uchari,temp;

for(i=0;i<8;i++) //每个码有8位数字 {

temp=temp>>1; //temp中的各数据位右移一位,因为先读出的是低位数据

TH0=0; //定时器清0 TL0=0; //定时器清0 TR0=1; //开启定时器T0

while(re==0) ;//如果是低电平就等待 低电平计时 TR0=0; //关闭定时器T0

LowTime=TH0*256+TL0; //保存低电平宽度 TH0=0; //定时器清0 TL0=0; //定时器清0 TR0=1; //开启定时器T0

while(re==1); //如果是高电平就等待 TR0=0; //关闭定时器T0

HighTime=TH0*256+TL0; //保存高电平宽度 if((LowTime<800)||(LowTime>1600))

return 0; //如果低电平长度不在合理范围,则认为出错,停止解码

if((HighTime>1200)&&(HighTime<1850)) //如果高电平时间在600微秒左右, {

temp=temp&0x7f; //则该位是0 }

if((HighTime>2000)&&(HighTime<3000)) //如果高电平时间在1000微秒左右, {

temp=temp|0x80; //则该位是1 } }

mess=temp; return 1; }

void Delay999ms() //@30.000MHz {

unsigned char i, j, k;

_nop_(); _nop_(); i = 114;

33

j = 226; k = 60; do {

do {

while (--k); } while (--j); } while (--i); }

/***********************************************main*********************************************/ void main() {

init_Lcd(); mess=0;

Eraseeeprom(); //擦除EEPROM flag = 0; j =0;

tem = 29;

TMOD = 0x01; TR0=0;

init_ex0(); while (1) {

// display(tem); // Delay999ms(); } }

/**********************红外线触发中断处理函数**********************/ void ex0() interrupt 0 {

// display(mess); EX0=0; //关闭外中断0,不再接收二次红外信号的中断,只解码当前红外信号

34

TH0=0; //定时器T0的高8位清0 TL0=0; //定时器T0的低8位清0 TR0=1; //开启定时器T0

while(re==0);//如果是低电平就等待

TR0=0;

LowTime=TH0*256+TL0; //保存低电平时间

TH0=0; //定时器T0的高8位清0 TL0=0; //定时器T0的低8位清0 TR0=1; //开启定时器T0

while(re==1); //如果是高电平就等待 // test1=0;

TR0=0; //关闭定时器T0

HighTime=TH0*256+TL0; //保存引导码的高电平长度 // test=0;

if((LowTime>3000)&&(LowTime<4500)) {

//P0=0xaa;

if((HighTime>4500&&HighTime<5600)) {

if(flag == 0) {

DeCode(); // 执行遥控解码功能 P0=mess;

IapProgramByte(j, mess); ////写EEPROM j++;

if(j == 20000) {

flag = 1; j = 0; } }

if(flag == 1) {

while(1) {

while(j!=20000) {

DAC(IapReadByte(j)); //读EEPROM并DAC转化

35

Delay120us(); j++; }

j=0; // P0=0xaa; }

Eraseeeprom(); //擦除EEPROM flag = 0; j = 0; } }

else if((HighTime>6800&&HighTime<8300)) {

if(flag==0) {

DeCode(); tem=mess;

display(tem); // Delay999ms(); } } }

EX0=1; //开启外中断EX0 }

//*************************程序END******************************//

36

搜索更多关于: 红外光通信装置-电赛报告 的文档
红外光通信装置-电赛报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c25zmi1eqqh6rgfk15sw18xzko02xoc00fxg_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top