Ошибка при инициализации порта (программирование на C) - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь настроить P2.4 и P2.5 микроконтроллера C8051 в качестве цифровых входов (открытый сток), и код должен быть протестирован как аппаратное обеспечение, когда нажимается одна, обе или ни одна из кнопок.В цикле, когда ни одна кнопка не нажата, я хочу, чтобы она печатала «ни одна кнопка не нажата», когда одна кнопка нажата, я хочу, чтобы она печатала «одна кнопка нажата», а когда обе кнопки нажаты, я хочу, чтобы она печатала «Обанажаты кнопки "Я думаю, что инициализация порта в функциях void Port_Init (void) неверна, но я застрял на том, как правильно их написать.

Я использую для этого компилятор SDCC.

Ниже приведен код:

#include <c8051_SDCC.h>// include files. This file is available online
#include <stdio.h>


//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
void Port_Init(void);   // digial port initialization 
void Set_Outputs_First(void);   // output after first character press
  // output after second character press

//-----------------------------------------------------------------------------
// Global Variables
//-----------------------------------------------------------------------------
//
// edit sbit commands as appropriate to your assignment

__sbit __at 0xA4 PB1;
__sbit __at 0xA5 PB2;

//***************
void main(void)         // 
{
    Sys_Init();         // System Initialization
    putchar(' ');    
    Port_Init();        // port initialization function
    while(1)
    {
        printf("Press a key for the first set of outputs \r\n");
        getchar();
        Set_Outputs_First();

    }
}

//***************
// configure P2MDOUT or P3MDOUT
//
void Port_Init(void)
{

    P2MDOUT &= 0x03;
    P2MDOUT |= ~0x0F;



}
//***************
// use sbit labels to output digital signals after first character press
//
void Set_Outputs_First(void)
{
    if (!PB1)
    {
        printf("\r One button pushed \n");
    }
    if (!PB1 && !PB2)
    {
        printf("\r Both buttons are pushed \n");
    }
    else
    { 
        printf("\r No buttons are pushed \n");  
    }
}
//***************

Этот код в настоящее время не компилируется, и я получаю сообщение об ошибке:

  • C: \ PROGRA ~ 1 \SDCC \ bin \ sdcpp.exe -nostdinc -Wall -std = c11 -I "C: \ Users \ RCR 14-15 \ Desktop" -obj-ext = .rel -D__SDCC_CHAR_UNSIGNED -D__SDCC_MODEL_SMALL -D__SDCC_FLOAT_REENT -D__S_CC = 3_D_VD = 33 -D__SDCC_VERSION_MINOR = 6 -D__SDCC_VERSION_PATCH = 0 -DSDCC = 360 = 9615 -D__SDCC_REVISION -D__SDCC_mcs51 -D__STDC_NO_COMPLEX __ = 1 -D__STDC_NO_THREADS __ = 1 -D__STDC_NO_ATOMICS __ = 1 -D__STDC_NO_VLA __ = 1 -D__STDC_ISO_10646 __ = 201409L -D__STDC_UTF_16 __ = 1 -D__STDC_UTF_32 __ = 1 -isystem "C: \ Program Files \ SDCC \ bin .. \ include \ mcs51 "-isystem" C: \ Program Files \ SDCC \ bin .. \ include "" C: \ Users \ RCR 14-15 \ Desktop \ hw4.c "
  • C: \ PROGRA ~ 1 \ SDCC \ bin \ sdas8051.exe -plosgffwy "hw4.rel" "hw4" .asm

Пожалуйста, дайте мне знать, что я делаюнеправильно!!!Заранее спасибо

...