有一段遥控发射接收的程序,在编译时老是报错,没法写,帮忙看看
#include <stc8g.h>
#include <intrins.h>
#include <absacc.h>
sbitLED=P5^4;//ָʾµÆ
sbitIR=P5^5; //ºìÍâ·¢Éä
sbitSignal_input=P3^3;//½ÓÊÕÐźÅ
sbitOutput_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.3usi¸öÖÜÆÚ ·¢ºìÍâ¹âÕ¼¿Õ±È1/3
{
while(i--)
{
IR=1;
Timer1_Init();
IR=0;
Timer1_Init();
Timer1_Init();
}
}
void No_send_Ir(unsigned int i)//38KHZµÄƵÂÊ Ò»¸öÖÜÆÚ26.3usi¸öÖÜÆÚ ²»·¢ºìÍâ¹â
{
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 ';'
就是老是报这些错,我定义了又不行
这是在干什么?
#define int u_code
#define char data_code
这个#define 不对吧。 重复定义和语法错误,建议学习一下C语言基础 void ir_send_pulse(unsigned int u_code,unsigned char data_code)//ê?3???μíò????ü?úμ???μí??3?
里的u_code改个名字 void ir_send_pulse(unsigned int u_code,unsigned char data_code)//ê?3???μíò????ü?úμ???μí??3?
里的u_code改个名字 u_code是用户地址码 DebugLab 发表于 2024-11-26 15:59
重复定义和语法错误,建议学习一下C语言基础
怎么改一下 bkeuqoaq 发表于 2024-11-26 16:16
void ir_send_pulse(unsigned int u_code,unsigned char data_code)//ê?3???μíò????ü?úμ???μí??3? ...
地址码和地址反码共16位 soma 发表于 2024-11-26 15:51
#define int u_code
#define char data_code
这个#define 不对吧。
怎么声明一下,求告诉
页:
[1]
2