单片机学习小组
直播中

辛太励

7年用户 1140经验值
擅长:20153
私信 关注

STC12C5A60S2程序中char型变量赋值错误

在移植freemodbus程序中,portevent.c中的程序如下:
static eMBEventType eQueuedEvent;
static BOOL xEventInQueue;
/* ----------------------- Start implementation -----------------------------*/
BOOL
xMBPortEventInit( void )
{
    xEventInQueue = FALSE;
    return TRUE;
}
BOOL
xMBPortEventPost( eMBEventType eEvent )
{
    xEventInQueue = TRUE;
    eQueuedEvent = eEvent;
    return TRUE;
}
BOOL
xMBPortEventGet( eMBEventType * eEvent )
{
    BOOL            xEventHappened = 0x00;
         
xMBPortSerialPutByte(xEventInQueue);
    if( xEventInQueue == TRUE)
    {
            xMBPortSerialPutByte(0X09);
        *eEvent = eQueuedEvent;
        xEventInQueue = FALSE;
        xEventHappened = 0x01;
    }
    return xEventHappened;
}
通过串口观测,xEventInQueue 为0x16,但是在程序赋值时,xEventInQueue 只是赋值了TRUE或FALSE,也就是1或0,但是为什么xEventInQueue 会是0x16,求大神帮下忙,谢谢

回帖(5)

武梨格

2020-3-17 09:27:15
帮顶
举报

石璞璞

2020-3-17 09:36:12
表示本人看蒙蔽了!
举报

范逊敏

2020-3-17 09:48:28
简单的说就是:程序中BOOL的类型是char,定义TRUE为1,FALSE为0,定义BOOL型变量xEventInQueue,并执行xEventInQueue = FALSE;后,用串口发送xEventInQueue 的值,显示为0x03,但是发送的FALSE的值就是为1,不知道哪里的问题,请问您知道吗
举报

高峰

2020-3-17 10:07:51
定义成 bit类型试试看看
举报

更多回帖

发帖
×
20
完善资料,
赚取积分