- 打卡等级:初来乍到
- 打卡总天数:3
- 最近打卡:2024-12-06 08:15:07
已绑定手机
注册会员
- 积分
- 129
|
#include <stc8g.h>
#include <intrins.h>
#include <absacc.h>
sbit LED=P5^4; //ָʾµÆ
sbit IR=P5^5; //ºìÍâ·¢Éä
sbit Signal_input=P3^3; //½ÓÊÕÐźÅ
sbit Output_control=P3^2; //Êä³öÐźÅ
#define int u_code
#define char data_code
void ir_send_pulse(unsigned int u_code,unsigned char data_code)
void Send_Ir(unsigned int i);
void No_send_Ir(unsigned int i);
void Send_rc5_0(void);
void Send_rc5_1(void);
void Timer1_Init(void) //8.77΢Ãë@11.0592MHz
{
AUXR |= 0x40; //¶¨Ê±Æ÷ʱÖÓ1Tģʽ
TMOD &= 0x0F; //ÉèÖö¨Ê±Æ÷ģʽ
TL1 = 0x9B; //ÉèÖö¨Ê±³õʼֵ
TH1 = 0xFF; //ÉèÖö¨Ê±³õʼֵ
TF1 = 0; //Çå³ýTF1±êÖ¾
TR1 = 1; //¶¨Ê±Æ÷1¿ªÊ¼¼ÆÊ±
}
void Send_Ir(unsigned int i) //38KHZµÄƵÂÊ Ò»¸öÖÜÆÚ26.3us i¸öÖÜÆÚ ·¢ºìÍâ¹â Õ¼¿Õ±È1/3
{
while(i--)
{
IR=1;
Timer1_Init();
IR=0;
Timer1_Init();
Timer1_Init();
}
}
void No_send_Ir(unsigned int i) // 38KHZµÄƵÂÊ Ò»¸öÖÜÆÚ26.3us i¸öÖÜÆÚ ²»·¢ºìÍâ¹â
{
while(i--)
{
IR=0;
Timer1_Init();
Timer1_Init();
Timer1_Init();
}
}
void Send_NEC_0(void)//µÍµçƽ¿í¶È1120us
{
Send_Ir(21);
No_send_Ir(21);
}
void Send_NEC_1(void)//¸ßµçƽ¿í¶È2240us
{
Send_Ir(21);
No_send_Ir(64);
}
void ir_send_pulse(unsigned int u_code,unsigned char data_code)//Êä³ö¸ßµÍÒ»¸öÖÜÆÚµÄ¸ßµÍÂö³å
{
unsigned char i;
unsigned int temp;
Send_Ir(342); //9msÔØ²¨µÄÒýµ¼Âë
No_send_Ir(171); //4.5ms
temp = u_code;
for(i=0;i<16;i++) //16λµØÖ·Âë
{
if(temp & 0x0001)
{Send_NEC_1();}
else
{Send_NEC_0();}
temp >>= 1;
}
temp=data_code;
for(i=0;i<16;i++) //16λÊý¾ÝÂë
{
if(temp & 0x0001)
{Send_NEC_1();}
else
{Send_NEC_0();}
temp >>= 1;
}
Send_NEC_0();//½áÊøÂë
}
void Timer0_Init(void) //100΢Ãë@11.0592MHz
{
AUXR |= 0x80; //¶¨Ê±Æ÷ʱÖÓ1Tģʽ
TMOD &= 0xF0; //ÉèÖö¨Ê±Æ÷ģʽ
TL0 = 0xAE; //ÉèÖö¨Ê±³õʼֵ
TH0 = 0xFB; //ÉèÖö¨Ê±³õʼֵ
TF0 = 0; //Çå³ýTF0±êÖ¾
TR0 = 1; //¶¨Ê±Æ÷0¿ªÊ¼¼ÆÊ±
}
void main(void)
{
P3M0 &= ~0x0f;
P3M1 &= ~0x0f; //P3.0-3.3Òý½ÅΪ׼˫Ïò¿Úģʽ
P5M0 |=0x30; //P5.4Òý½ÅÎªÍÆÍìÊä³öģʽ
P5M1 &= ~0x30;
LED=0;
Signal_input=1;
Output_control=0;
while(1)
{
ir_send_pulse();
delay_100us(1200);
if(Signal_input == 0) //ÅжÏÓÐûÓнÓÊÕµ½ºìÍâÐźŠ²¢ÇÒ½ÓÊճɹ¦
{
Output_control=1; //Êä³ö¸ßµçƽ
delay_100us(100);
LED=1; //¿ªµÆ
}
else
{
Output_control=0; //Êä³öµÍµçƽ
LED=0; //¹ØµÆ
}
ir_send_pulse(); //·¢Éä¸ßµÍµçƽ
}
}
延时的100us的,改成定时100us,边写边编译写不下去。帮忙看看。晚上再来写后面的。
IRRM.c(60): error C231: 'u_code': redefinition
IRRM.c(60): error C141: syntax error near 'temp', expected ';'
就是老是报这些错,我定义了又不行
|
|