Народ, пожалуйста, проверьте, погаснет ли у вас левая цифра индикатора при таком коде:
Код:
// подключение базовых библиотек
#include <mega8.h>
#include <stdlib.h>
typedef struct __Leg {
unsigned char * port;
unsigned char num;
} Leg;
typedef struct __Indicator {
Leg ctd_A;
Leg ctd_B;
Leg ctd_C;
Leg ctd_D;
Leg ctd_E;
Leg ctd_F;
Leg ctd_G; // магия
Leg ctd_DP;
Leg ands [16];
int andsEq;
} Indicator;
inline void __legOff (unsigned char * port, unsigned char num) {
*port &= ~(1 << num);
}
void main () {
int n = 1;
Indicator * myInd = malloc (sizeof (Indicator));
#include "init_mc.c" // инициализация мк
myInd -> ands[0].port = &PORTC;
myInd -> ands[0].num = 3;
myInd -> ands[1].port = &PORTC;
myInd -> ands[1].num = 4;
myInd -> ands[2].port = &PORTC;
myInd -> ands[2].num = 5;
__legOff (myInd -> ands[0].port, myInd -> ands[0].num); // магия 2
while (1) {}
}
Схема для протеуса прикреплена.
Добавлено спустя 3 часа 23 минуты 57 секунд:Файл с кодом
init_mc.c прикреплен (его надо поместить в ту же директорию, что и файл с кодом, который приведен выше).