请帮忙看看,在600us宽度时里面填数就无法编译,KEIL,应该还是语法不对。请帮忙指正。
#include "stc8g.h"#include <intrins.h>
sbitLED=P5^4;//指示灯
sbitIR=P5^5; //红外发射
sbitsignal_input=P3^3;//接收信号
sbitoutput_control=P3^2; //输出位置
unsigned int i;
void send_Ir(void);
void no_send_Ir(void);
void send_rc5_0(void);
void send_rc5_1(void);
void Timer1_Init(void) //定时器1,定时8.77us,频率11.0592MHZ
{
AUXR |= 0x40;
TMOD &= 0x0F;
TL1 = 0x9B;
TH1 = 0xFF;
TF1 = 0;
TR1 = 1;
}
void timer1_delay_8_77us(void)//定时8.77us
{
TF1 = 0;
while(!TF1);
TR1 = 0;
TF1 = 0;
}
void send_Ir(void)//38KHZ的频率 一个周期26.3us
{
while(i--)
{
IR=1;
timer1_delay_8_77us();
IR=0;
timer1_delay_8_77us();
timer1_delay_8_77us();
}
}
void no_send_Ir(void)
{
while(i--)
{
IR=0;
timer1_delay_8_77us();
timer1_delay_8_77us();
timer1_delay_8_77us();
}
}
void send_rc5_0(void)//低电平宽度600us
{
send_Ir();
no_send_Ir();
}
void send_rc5_1(void)//高电平宽度600us
{
send_Ir();
no_send_Ir();
}
void ir_send_pulse(void)//输出高低一个周期的高低脉冲
{
send_rc5_0();
send_rc5_1();
}
void main()
{
P3M0 &= ~0x0f;
P3M1 &= ~0x0f; //P3.0-3.3引脚为准双向口模式
P5M0 |=0x30; //P5.4引脚为推挽输出模式
P5M1 &= ~0x30;
LED=0;
output_control=0;
while(1)
{
if(signal_input==0)//判断有没有接收到红外信号
{
output_control=1; //输出高电平
}
else
{
output_control=0; //输出低电平
}
if(P32=1)
{
LED=1;//开灯
}
else
{
LED=0; //关灯
}
ir_send_pulse(); //发射高低电平
}
}
if(P32 == 1)
{
LED=1;//开灯
}
页:
[1]