[an error occurred while processing this directive] [an error occurred while processing this directive]
Битовое пространство в MCS51 не допускает косвенного обращения, (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено AlexD 02 марта 2002 г. 19:55
В ответ на: Как передать ссылку на бит из Си в функцию написанную на ассемблере? отправлено Петрович 02 марта 2002 г. 18:48

так что с портом рекомендую определиться, а в фунцию передавать маску.
Ну а что-бы небыло казусов с пинами, используемыми как входы,
операции следует производить с образом порта


#define my_port P1 // это всегда можно изменить
#define LED1 0x01
#define LED2 0x04
// и т.д.

#define pin_input 0xC1 // эти пины используются как входы
char my_obraz=pin_input; // образ порта

void my_func(char mask){
my_obraz|=mask; // установить бит
my_obraz&=~mask; // сбросить бит
my_port=my_obraz;

// или так
my_port|=mask|pin_input;
my_port&=~(mask|pin_input);

}

void main(void){
my_func(LED1);
my_func(LED2);
// etc...
}

Перевести это в АСМ, надеюсь, не составит труда.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru