shen168 发表于 2024-11-26 14:37:27

有一段遥控发射接收的程序,在编译时老是报错,没法写,帮忙看看


#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 ';'

就是老是报这些错,我定义了又不行

Lkck8210 发表于 2024-11-26 15:02:18



这是在干什么?

soma 发表于 2024-11-26 15:51:24

#define int u_code
#define char data_code
这个#define 不对吧。

DebugLab 发表于 2024-11-26 15:59:01

重复定义和语法错误,建议学习一下C语言基础

bkeuqoaq 发表于 2024-11-26 16:16:15

void ir_send_pulse(unsigned int u_code,unsigned char data_code)//ê?3???μíò????ü?úμ???μí??3?
里的u_code改个名字

bkeuqoaq 发表于 2024-11-26 16:16:25

void ir_send_pulse(unsigned int u_code,unsigned char data_code)//ê?3???μíò????ü?úμ???μí??3?
里的u_code改个名字

e-bita 发表于 2024-11-26 17:05:03

u_code是用户地址码

e-bita 发表于 2024-11-26 17:06:16

DebugLab 发表于 2024-11-26 15:59
重复定义和语法错误,建议学习一下C语言基础

怎么改一下

e-bita 发表于 2024-11-26 17:07:29

bkeuqoaq 发表于 2024-11-26 16:16
void ir_send_pulse(unsigned int u_code,unsigned char data_code)//ê?3???μíò????ü?úμ???μí??3? ...

地址码和地址反码共16位

e-bita 发表于 2024-11-26 17:08:53

soma 发表于 2024-11-26 15:51
#define int u_code
#define char data_code
这个#define 不对吧。

怎么声明一下,求告诉
页: [1] 2
查看完整版本: 有一段遥控发射接收的程序,在编译时老是报错,没法写,帮忙看看