Я пытаюсь настроить 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
Пожалуйста, дайте мне знать, что я делаюнеправильно!!!Заранее спасибо