找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1983|回复: 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年就出了??

回复

使用道具 举报

ID:130256 发表于 2016-10-6 01:46 | 显示全部楼层
第一次发帖,大神在哪?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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