首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

关于C8051F020 红外信号发射~该怎么处理

2012-02-02 
关于C8051F020 红外信号发射~是22.1184MHZ的晶振,不能发射信号。求高人指点。。。C/C++ code#include C8051F0

关于C8051F020 红外信号发射~
是22.1184MHZ的晶振,不能发射信号。求高人指点。。。

C/C++ code
    #include <C8051F020.H>    #include "string.h"    #include "INTRINS.H"        #define uint unsigned int    #define uchar unsigned char        uchar flag,count,GW,DW;        sbit P3_5 = P3^5;        void delay(uint n)    {        uint i;        while(n--)        {            for(i = 0;i < 100;i++)            {                ;            }        }    }        void fs()    {        uchar n,i,temp;        count = 0;        n = 16;        flag = 1;        do{}while(count < n); //9ms        count = 0;        n = 8;        flag = 1;        do{}while(count < n); //4.5ms                temp = GW;        for(i = 0;i < 8;i++)        {            n = 1;            count = 0;            flag = 1;            do{}while(count < n);                        if(temp-(temp/2)*2)            {                n = 3;            }            else            {                n = 1;                }                    count = 0;            flag = 0;            do{}while(count < n);        }                temp = ~GW;        for(i = 0;i < 8;i++)        {            n = 1;            count = 0;            flag = 1;            do{}while(count < n);                        if(temp-(temp/2)*2)            {                n = 3;            }            else            {                n = 1;                }                    count = 0;            flag = 0;            do{}while(count < n);        }                temp = DW;        for(i = 0;i < 8;i++)        {            n = 1;            count = 0;            flag = 1;            do{}while(count < n);                        if(temp-(temp/2)*2)            {                n = 3;            }            else            {                n = 1;                }                    count = 0;            flag = 0;            do{}while(count < n);        }                temp = ~DW;        for(i = 0;i < 8;i++)        {            n = 1;            count = 0;            flag = 1;            do{}while(count < n);                        if(temp-(temp/2)*2)            {                n = 3;            }            else            {                n = 1;                }                    count = 0;            flag = 0;            do{}while(count < n);        }                n = 1;        count = 0;        flag = 1;        do{}while(count < n);        flag = 0;                }        void main()    {        //OSCICN = 0x08;          WDTCN = 0xde;          WDTCN = 0xad;        EA = 1;        TMOD = 0x01;        TH0 = 0xFF;        TL0 = 0x98;        ET0 = 1;        TR0 = 1;        flag = 0;            while(1)        {            GW = 0x40;            DW = 0x05;            delay(1);            P4 = 0x00;            fs();            P4 = 0xff;            delay(2000);         }    }        void time0() interrupt 1    {        TH0 = 0xFF;        TL0 = 0x98;        count++;        if(flag == 1)        {            P3_5 = ~P3_5;        }        else P3_5 = 0;    }        


[解决办法]
1. 红外信号有频段范围,请计算分频设置是否正确。
2. 用示波器测量输出端信号波形,如果没有任何信号输出,请检查硬件电路是否短路接地。
3. 如果输出波形频率异常,则检查代码对发射信号的配置是否正确。
[解决办法]
探讨

1. 红外信号有频段范围,请计算分频设置是否正确。
2. 用示波器测量输出端信号波形,如果没有任何信号输出,请检查硬件电路是否短路接地。
3. 如果输出波形频率异常,则检查代码对发射信号的配置是否正确。

热点排行