Я новичок в 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");
}
}