Мигать светодиодами я научился, но наткнулся на то, что не все пины порта С отреагировали на мои команды. Как определить какие пины портов (хочу иметь на вывод при токе 5мА максимально возможное число ног) можно использовать на вывод? Либо какие настройки для этого требуются? Вот текст моей программы:
#include "iostm8l152c6.h"
//Задержка 1
void SomeDelay1()
{
for (unsigned long delay_count=0; delay_count<3000; delay_count++);
};
//Задержка 2
void SomeDelay2()
{
for (unsigned long delay_count=0; delay_count<60000; delay_count++);
};
int main( void )
{
PC_DDR_bit.DDR0 = 1; //Настраиваем 0й пин порта C на выход
PC_CR1_bit.C10 = 1; //Переключаем его в режим push-pull
PC_DDR_bit.DDR1 = 1; //Настраиваем 1й пин порта C на выход
PC_CR1_bit.C11 = 1;
PC_DDR_bit.DDR2 = 1; //Настраиваем 2й пин порта C на выход
PC_CR1_bit.C12 = 1;
PC_DDR_bit.DDR3 = 1; //Настраиваем 3й пин порта C на выход
PC_CR1_bit.C13 = 1;
PC_DDR_bit.DDR4 = 1; //Настраиваем 4й пин порта C на выход
PC_CR1_bit.C14 = 1;
PC_DDR_bit.DDR5 = 1; //Настраиваем 5й пин порта C на выход
PC_CR1_bit.C15 = 1;
PC_DDR_bit.DDR6 = 1; //Настраиваем 6й пин порта C на выход
PC_CR1_bit.C16 = 1;
PC_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
PC_CR1_bit.C17 = 1;
while (1) //В цикле будем переключать светодиоды
{
PC_ODR_bit.ODR0 = 1; //Переключаем пин 0 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR0 = 0; //Пин 0 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR1 = 1; //Переключаем пин 1 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR1 = 0; //Пин 1 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR2 = 1; //Переключаем пин 2 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR2 = 0; //Пин 2 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR3 = 1; //Переключаем пин 3 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR3 = 0; //Пин 3 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR4 = 1; //Переключаем пин 4 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR4 = 0; //Пин 4 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR5 = 1; //Переключаем пин 5 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR5 = 0; //Пин 5 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR6 = 1; //Переключаем пин 6 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR6 = 0; //Пин 6 в низкий уровень - светодиод тухнет
PC_ODR_bit.ODR7 = 1; //Переключаем пин 7 в высокий уровень - светодиод горит
SomeDelay1(); //Задержка в 1
PC_ODR_bit.ODR7 = 0; //Пин 7 в низкий уровень - светодиод тухнет
SomeDelay2();
};
return 0;
}
Экспериментально я установил, что с помощью этой программки я смогу управлять только С4, С5, С6, С7, В1, В2, В3, В4, В5, В6, В7, D1, D2, D3, D4, D5, D6, D7, E1, E2, E3, E4, E5, E6, E7, A2, A3, A4, A5, A6, A7. Итого мне доступны 31 линия порта на вывод. Это предел?
Хочу управлять всеми сорока пинами этих пяти портов. Что нужно изменить в настройках?