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

Отправлено AlexD 12 июля 2002 г. 15:44
В ответ на: Sorry, как ни старался, но засунуть левые треугольные скобки в форум не получилось отправлено Аскольд 12 июля 2002 г. 07:04

// ---- macros.h -------
#define _setL(port,bit) port&=~(1<<bit)
#define _setH(port,bit) port|=(1<<bit)
#define _set(port,bit,val) _set##val(port,bit)
#define on(x) _set (x)
#define SET _setH
#define _clrL(port,bit) port|=(1<<bit)
#define _clrH(port,bit) port&=~(1<<bit)
#define _clr(port,bit,val) _clr##val(port,bit)
#define off(x) _clr (x)
#define CLR _clrH
#define _bitL(port,bit) (!(port&(1<<bit)))
#define _bitH(port,bit) (port&(1<<bit))
#define _bitH1(port,bit) (port&(1<<bit)&port)
#define _bit(port,bit,val) _bit##val(port,bit)
#define signal(x) _bit (x)
#define BIT _bitH
#define _cpl(port,bit,val) port^=(1<<bit)
#define cpl(x) _cpl (x)
#define CPL(port,bit) (port^=(1<<bit))
// --------------------
//
//А использовать его так:
//
// ---- 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 тут ни при чем, это должно работать для любого Си
//

Created with The Source Studio - EVALUATION version

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

Ответы



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

E-mail: info@telesys.ru