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

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

Сейчас я закодировал все, что мог, но мне нужна помощь, потому что она не компилируется, и я знаю, что получаю сообщение об ошибке" else ", и я думаю, что также есть ошибкас функцией инициализации порта (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
void Set_Outputs_Second(void);  // 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();
        printf("Press a key for the second set of outputs \r\n");
        getchar();
        Set_Outputs_Second();

    }
}

//***************
// 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)
{
    while (!PB1)
    {
        printf("\r One button pushed \n");
    }
    else
    { 
        printf("\r No buttons are pushed \n");  
    }
}
//***************
// use sbit labels to output digital signals after second character press
//
void Set_Outputs_Second(void)

{
    while (!PB1 & !PB2)
    {
        printf("\r Both buttons pushed \n");
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...