/*-------------------------------------------------------------- Файл: test_led.c Описание: В зависимости от положения DIP-переключателей выводить анимацию на led или отображать инвертированные значение с DIP-переключателей --------------------------------------------------------------*/ #include "aduc812.h" #include "led.h" #define DIP_ON 0xAA /**---------------------------------------------------------------------------- shl() ------------------------------------------------------------------------------- Циклический сдвиг влево. Вход: num - число, которое требуется сдвинуть s - число разрядов, на которое происходит сдвиг Выход: сдвинутое число Результат: нет -----------------------------------------------------------------------------*/ unsigned char shl ( unsigned char num, unsigned char count ) { return ( num << count ) | ( num >> 8 - count ); } /**---------------------------------------------------------------------------- delay ------------------------------------------------------------------------------- Задержка выполнения на некоторое время Вход: ms - переменная указывающая время задержки Выход: нет Результат: нет Описание: Производится задержка исполнения программы на время работы циклов. -----------------------------------------------------------------------------*/ void delay ( unsigned long ms ) { volatile unsigned long i, j; for( j = 0; j < ms; j++ ) { for( i = 0; i < 50; i++ ); } } void main( void ) { unsigned char led = 0x03; while( 1 ) { unsigned char dipPosition = readdip(); if ( dipPosition == DIP_ON ) { //В зависимости от состояния автомата подсвечиваем определённые диоды leds( led ); led = shl( led, 1 ); delay( 200 ); } else { leds( ~dipPosition ); delay( 200 ); } } }