В LPC2378 (как и в другом семействе микроконтроллеров LPC2xxxx) порты ввода-вывода находятся в системной памяти, поэтому вам необходимо объявить некоторые переменные, например:
#define DALLAS_PIN (*(volatile unsigned long int *)(0xE0028000)) /* Port 0 data register */
#define DALLAS_DDR (*(volatile unsigned long int *)(0xE0028008)) /* Port 0 data direction reg */
#define DALLAS_PIN (1<<15)
Обратите внимание, что 0xE0028000 - это адрес для регистра данных порта 0, а 0xE0028008 - для адреса регистра данных для порта 0. Вам нужно изменить это в соответствии с портом и битом, используемым в вашем приложении.
После этого в вашей функции кода код или макросы для записи 1, записи 0 и чтения должны быть примерно такими:
#define set_dqout() (DALLAS_DDR&=~DALLAS_PIN) /* Let the pull-up force one, putting I/O pin in input mode */
#define reset_dqout() (DALLAS_DDR|=DALLAS_PIN,DALLAS_PORT&=~DALLAS_PIN) /* force zero putting the I/O in output mode and writing zero on it */
#define read_dqin() (DALLAS_DDR&=~DALLAS_PIN,((DALLAS_PORT & DALLAS_PIN)!= 0)) /* put i/o in input mode and test the state of the i/o pin */
Надеюсь, это поможет.
Привет!