找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么红外发射程序在发射红外时不是令send直接为1呢?

[复制链接]
跳转到指定楼层
楼主
ID:130256 发表于 2016-10-6 01:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
sbit send=P1^0;
unsigned char flag;
unsigned int endcount,count;
sbit ka=P3^0;
void delay();
void main(){
        int i;
        TMOD=0x01;
        TH0=0xff;
        TL0=0xf3;  //中断时间设置为13us
        EA=1;
        ET0=1;
while(1){
    if(ka==0)
    {      
        endcount=692;
        count=0;
        flag=1;
        TR0=1;
        while(endcount>count);         //9ms高电平发射
        TR0=0;

        endcount=346;
        count=0;
        flag=0;
        TR0=1;
        while(endcount>count);   //4.5ms低电平
        TR0=0;

        for(i=0;i<32;i++) //假设4字节全是0,一共发送32位字节
                {
                endcount=43;
                count=0;
                flag=1;
                TR0=1;
                while(endcount>count);//0.56ms高电平
                TR0=0;

                endcount=43;
                count=0;
                flag=0;
                TR0=1;
                while(endcount>count);//0.56ms低电平
                TR0=0;
                      }
      }


  }

}

void Timmer0() interrupt 1
{
   if(flag==1)
            send=~send; ///这是疑问的地方?????
    else
            send=0;
   count++;
}

//另外关于8位重载比16位的定时要更准确一点,,听说有16为自动重载定时方式的单片机还是在13年就出了??

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

使用道具 举报

沙发
ID:130256 发表于 2016-10-6 01:46 | 只看该作者
第一次发帖,大神在哪?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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