Свежие обсуждения
Микроконтроллеры

Начинающим pic16f Си HiTech 9.50 pl 2

1 11

Можно несколько упростить задачу, даже нужно.
Не определять время нажатия кнопок вправо и влево.
Сразу гнать их на повышеную, так будет лучше.
И вариант , определять просто номер нажатия в прерывании,
а все остальное делать в основной программе.

 

Да, забыл,urry меня терзают смутные сомнения.
А к чему работа через буфер? Что СИ не понимает сама , что делать?
temp=arr[count_r]; PORTB=arr1[temp];
По моему даже BASIC великолепно с этим справляется.
Или я в чето не понимаю?

 

VikulKH: temp=arr[count_r]; PORTB=arr1[temp];
Или так:
PORTB = arr1[*(arr+count_r)];

 

VikulKH: Можно несколько упростить задачу, даже нужно.
Не определять время нажатия кнопок вправо и влево.
Сразу гнать их на повышеную, так будет лучше.
И вариант , определять просто номер нажатия в прерывании,
а все остальное делать в основной программе.

Чем лучше ? Постоянно проскакивать нужную цифру ? Задачу нужно усложнять, программа - учебно - тренировочная...
VikulKH: А к чему работа через буфер? Что СИ не понимает сама , что делать?
temp=arr[count_r]; PORTB=arr1[temp];

Да как угодно , как RFC предложил, например - после оптимизации, если посмотреть листинг (а это всегда невредно) увидим, что выигрыша ни по времени, ни по размеру нет. Разве что переменная выделяется "неявно", но она выделяется.
Программа должна быть читабельной, насколько возможно. Посмотрите исходники линукса - никаких извратов с целью сэкономить лишний байт.
Все просто и понятно.
А настоящего Си в программе пока еще немного

 

Неа, я хотел спросить вот за это:
PORTB=arr[count_r] ???
А насчет усложнения задачи так это у Суворова - " Тяжело в учении....."
Мне больше по душе - "От простого к сложному"
Хотя Александр Васильевич в чем-то может и прав.
Ну а вобщем-то главное результат.

 

VikulKH: Неа, я хотел спросить вот за это:
PORTB=arr[count_r] ???

У тебя в изначальном варианте в portb выводится элемент массива arr1, номер которого хранится в массиве arr в ячейке count_r. А ты пытаешься выдать в порт элемент массива arr из ячейки count_r.

для простоты понимания можно представить, что массив arr - библиотечная картотека. Тогда - count_r - номер карточки. А когда ты достаёшь из картотеки карточку temp = arr[count_r], то в ней написано, где лежит книжка на полке arr1. и только тогда ты эту книжку можешь достать portb = arr1[temp].

 

rfc, осознал , был не прав, исправлюсь.
Разбирался позней ночью, сам запутался, что там 2 массива.
Каюсь, каюсь,каюсь.

 
1 11