[an error occurred while processing this directive]
Я использую такой набор макросов
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено Аскольд 12 июля 2002 г. 06:59
В ответ на: IAR Embedded Workbench AVR отправлено krupskij 11 июля 2002 г. 21:12


---- macros.h -------
#define _setL(port,bit) port&=~(1<#define _setH(port,bit) port|=(1<#define _set(port,bit,val) _set##val(port,bit)
#define on(x) _set (x)
#define SET _setH

#define _clrL(port,bit) port|=(1<#define _clrH(port,bit) port&=~(1<#define _clr(port,bit,val) _clr##val(port,bit)
#define off(x) _clr (x)
#define CLR _clrH

#define _bitL(port,bit) (!(port&(1<#define _bitH(port,bit) (port&(1<#define _bitH1(port,bit) (port&(1<#define _bit(port,bit,val) _bit##val(port,bit)
#define signal(x) _bit (x)
#define BIT _bitH

#define _cpl(port,bit,val) port^=(1<#define cpl(x) _cpl (x)
#define CPL(port,bit) (port^=(1<--------------------

А использовать его так:

---- main.c ----

#include "macros.h"

#define MYPIN1 PORTB,0,H /* бит 0 порта B, активный уровень высокий */
#define MYPIN2 PORTB,1,L /* бит 1 порта B, активный уровень низкий */
#define MYPIN3 PINB,2,L /* бит 2 порта B, активный уровень низкий */

if(signal(MYPIN3) /* if PB2==0 */
{
on(MYPIN1); /* PB0=1 */
on(MYPIN2); /* PB1=0 */
}
else
{
off(MYPIN1); /* PB0=0 */
off(MYPIN2); /* PB1=1 */
}
-----------

Кстати, IAR тут ни при чем, это должно работать для любого Си

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

Ответы



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

E-mail: info@telesys.ru