shen168 发表于 2024-11-10 23:01:24

keil5老是编译不成功,请大咖帮忙指点指点

#include "stc8g.h"
#define LED_PIN         P5^4
#define IR_PIN          P5_5
#define SIGNAL_INPUT    P3_0
#define OUTPUT_CONTROL1 P3_2
#define OUTPUT_CONTROL2 P3_3
#define IR_CARRIER_FREQ 38000// 38KHZ
#define PULSE_WIDTH_US1000   // 1000us
#define DUTY_CYCLE      50   // 50%
#define IR_EN      
void Delay_8us(void)        //@11.0592MHz//38KHZ 1¸öÖÜÆÚ   1/3
{
        unsigned char data i;
        _nop_();
        i = 27;
        while (--i);
}
void send_Ir(unsigned int i) //·¢ËÍ¸ßµçÆ½//38KhzÔØ²¨·¢É䣬·¢Éäi¸öÖÜÆÚ
{
       while(i--);
       {
    IR_EN = 1;    //1¸öÔØ²¨ÐźŠ1¸öÖÜÆÚ30%µÄ38KHZʱ¼ä26.3us
       Delay_8us();
       IR_EN = 0;
       Delay_8us();
       Delay_8us();
       }
}
void no_send_Ir(unsigned int i) //·¢ËÍµÍµçÆ½   £¬²»·¢ÉäÔØ²¨
       {
       while(i--);
       {
       IR_EN = 0;
        Delay_8us();
               Delay_8us();
               Delay_8us();
       }
}
void send_rc5_0(void)
{
        send_Ir(19);
no_send_Ir(19)£»
       
}
void send_rc5_1(void)
{
        send_Ir(19);
no_send_Ir(19)£»
        }
void delay_us(unsigned int us);
void Timer0_Init(void);
void IR_send_pulse();
void main()
{
    P5M4 &= ~(1 << LED_PIN);   //
    P5M4 &= ~(1 << IR_PIN);      
    P3M4 |= (1 << SIGNAL_INPUT);   
    P3M4 &= ~((1 << OUTPUT_CONTROL1) | (1 << OUTPUT_CONTROL2));
    P32 = 0;
    P33 = 1;
    LED_PIN = 0;

while (1)
    {
      if (SIGNAL_INPUT == 0)
      {
            OUTPUT_CONTROL1 = 1;
            OUTPUT_CONTROL2 = 0;
      }
      else
      {
            OUTPUT_CONTROL1 = 0;
            OUTPUT_CONTROL2 = 1;
      }
                               
                       if (OUTPUT_CONTROL1)
      {
            LED_PIN = 1;
      }
      else
      {
                                  LED_PIN = 0;
                                }
                                                IR_send_pulse();
    }
               

void Timer0_Init(void)                //500us @11.0592MHz
{
        AUXR |= 0x80;                       
        TL0 = 0x66;                               
        TH0 = 0xEA;                       
        TF0 = 0;                               
        TR0 = 1;                               
}
void IR_send_pulse()
{
    unsigned int on_time = (PULSE_WIDTH_US * DUTY_CYCLE) / 100;
    unsigned int off_time = PULSE_WIDTH_US - on_time;

    while (1)
    {
      IR_PIN = 1;      
      delay_us(on_time);

      IR_PIN = 0;      
      delay_us(off_time);
    }
}

显示这个:main.c(115): error C141: syntax error near '}', expected 'hdata'

shen168 发表于 2024-11-10 23:02:26

P5.4口在P3.2口有输出时,控制LED灯亮,否则就灭。
P5.5口输出38KHZ的载波信号,一直输出宽度为1000us的方波,占空比为50%,以控制红外管发光。
当P3.0口接收到低电平信号,P3.2输出高电平,P3.3输出低电平;否则,P3.2输出低电平,P3.3输出高电平。

邮箱 发表于 2024-11-10 23:12:24


加上 }
看对了没

soma 发表于 2024-11-10 23:38:27

P5M4 &= ~(1 << LED_PIN);   //
    P5M4 &= ~(1 << IR_PIN);      
    P3M4 |= (1 << SIGNAL_INPUT);   
    P3M4 &= ~((1 << OUTPUT_CONTROL1) | (1 << OUTPUT_CONTROL2));
这些是什么P5M4,P3M34?

wlhet 发表于 2024-11-11 08:41:59

简单的语法问题啊...

shen168 发表于 2024-11-11 09:14:53

邮箱 发表于 2024-11-10 23:12
加上 }
看对了没

还是不行

shen168 发表于 2024-11-11 09:18:44

soma 发表于 2024-11-10 23:38
P5M4 &= ~(1

P5M4 &= ~(1 << LED_PIN);      // 设置P5.4为推挽输出
    P5M4 &= ~(1 << IR_PIN);       // 设置P5.5为推挽输出
    P3M4 |= (1 << SIGNAL_INPUT);// 设置P3.0为输入
    P3M4 &= ~((1 << OUTPUT_CONTROL1) | (1 << OUTPUT_CONTROL2)); // 设置P3.2, P3.3为推挽输出

21cnsound 发表于 2024-11-11 09:34:24

shen168 发表于 2024-11-11 09:14
还是不行

加上}以后还报错,编译报错信息发出来啊

Lkck8210 发表于 2024-11-11 11:36:16

本帖最后由 Lkck8210 于 2024-11-11 11:40 编辑

槽点太多,这代码是AI写的?











wlhet 发表于 2024-11-11 12:25:51

前排围观
页: [1] 2
查看完整版本: keil5老是编译不成功,请大咖帮忙指点指点