Добрый день господа форумчане.
Ваши советы, деийствительно дельные и очень помогают. Всем большое спасибо за это.
Отдельное спасибо форуму за то что, объединяет профессоналов и людей интересующихся электроникой и является местом где можно изложить свою проблему. А грамотно изложив проблему людям с сам уже на полпути продвиншься к решению. Ибо не даром сказано "Кто ясно мыслит - тот ясно излагает." И чего следует, что надо время от времени ясно излагать что ды достичь ясности в мыслях....
Извините, за лиричиское отступление

(Остапа, как говориться, понесло....)
Итак к делу:
1) Для большей ясности для начала отвечаю на вопрос г-на residenta:
"Кстати, вы так и не привели выдержку о том, что представляет из себя символьное обозначение RA0."
Вот ответ:
static volatile bit RA0 @ (unsigned)&PORTA*8+0; static volatile unsigned char PORTA @ 0x05; и еще выдержка из описания к компилятору:
"
2.9 Статические переменные
Глобальные или статические переменные могут располагаться по абсолютному адресу.
Для этого в описании переменной используется специальная конструкция “@ <адрес>”.
Например:
volatile unsigned char Portvar @ 0x06;
Такое описание дает возможность обращаться к абсолютному адресу 0х06 посредствам
переменной Portvar. Надо учитывать, что в этом случае компилятор не резервирует память
под размещение этой переменной. С точки зрения ассемблера это описание выглядит
следующим образом:
Portvar equ 06h"2) Прав г-н Олег Хохлов написав:
""volatile unsigned char pin_addres " - Какой же это адрес ?!? Если адрес должен выглядеть как
"volatile unsigned char * pin_addres"."
Вводя в структуру поле pin_addres я имел ввиду что мне нужна переменная , входящая, которая
будет содержать тоже что и переменная RA0 в любой момент времени. А то что надо просто связать
мое поле структуры и ножку RA0 через адрес у меня в голове на тот момент четко не оформилось.
3) И вот тут я подошел к тому о чем писал г-н Сергей Борщ :
"И если компилятор позволяет делать указатели на такие типы (в чем я сомневаюсь, зная систему команд пика), то поле структуры должно быть объявлено как bit volatile * pin_address; или volatile bit * pin_address;, что одно и то же"
Да, компилятор не прозволяет делать указатели на переменные типа бит и следует, ввести структуру
поле - адрес номера порта, и поле - номер бита в порте, тогда проблема решается. Но об этом же
написал г-н ReAl
И вот тут я пришел к тому, что нехочется мне в структру вводить дополнительное поле и я решил сделать по другому - см. прикрепленные файлы.
Все в таком работает отлично, только мне опять приходиться опять перед вызовом функции антидребезг обновлять значение ножки порта в структуре. Как бы мне от этого избавиться
, что бы один раз(при инициализаци) связать значение ножки порта и поле структуры?
Г-ну AHTOXе хочу сказать что его вариант конечно интересный, но писать одинаковые функции для каждой ножки порта я нахожу громоздким. А если ножек 80 как в PIC18f87j10? Я же хочу написать универсальную функцию.