Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.57 KB | None | 0 0
  1. /* функция записи данных в память ds1302 */
  2. void ds1302_write_data (unsigned char L, unsigned char X) // в параметрах адрес ячейки, записываемое значение
  3. {
  4. CE_log1;                        // разрешить обмен данными
  5. IO_out;                         // перейти на передачу
  6. _delay_us(1);                       // ждем начала передачи
  7. char step;
  8. for ( step = 0; step < 8; step ++ )         // цикл до 8 бит
  9.     {
  10.     if( L & (1<<step))              // если бит (сдвинутый step) не равен 0, то
  11.         {
  12.         IO_log1;                // линия IO лог.1
  13.         }
  14.     else
  15.         {
  16.         IO_log0;                // линия IO лог.0
  17.         }
  18.     _delay_us(1);                   // пауза между синхроимпульсами 1 микросекунда
  19.     SCLK_log1;                  // синхроимпульс SCLK
  20.     _delay_us(1);                   // длина синхроимпульса 1 микросекунда    
  21.     SCLK_log0;                  // убрать синхроимпульс SCLK
  22.     }
  23. for ( step = 0; step < 8; step ++ )         // цикл до 8 бит
  24.     {
  25.     if( X & (1<<step))              // если бит (сдвинутый step) не равен 0, то
  26.         {
  27.         IO_log1;                // линия IO лог.1
  28.         }
  29.     else
  30.         {
  31.         IO_log0;                // линия IO лог.0
  32.         }
  33.     _delay_us(1);                   // пауза между синхроимпульсами 1 микросекунда
  34.     SCLK_log1;                  // синхроимпульс SCLK
  35.     _delay_us(1);                   // длина синхроимпульса 1 микросекунда    
  36.     SCLK_log0;                  // убрать синхроимпульс SCLK
  37.     }
  38. SCLK_log0;
  39. _delay_us(1);
  40. CE_log0;                        // закончить передачу
  41. }
  42.  
  43. /* функция чтения данных из памяти ds1302 */
  44. unsigned char ds1302_read_data (unsigned char L)    // в параметрах адрес ячейки, откуда читается значение
  45. {
  46. unsigned char out = 0;
  47. char step;
  48. CE_log1;                        // разрешить обмен данными
  49. IO_out;                         // перейти на передачу
  50. _delay_us(1);                       // ждем начала передачи
  51. for ( step = 0; step < 8; step ++ )         // цикл до 8 бит
  52.     {
  53.     if( L & (1<<step))              // если бит (сдвинутый step) не равен 0, то
  54.         {
  55.         IO_log1;                // линия IO лог.1
  56.         }
  57.     else
  58.         {
  59.         IO_log0;                // линия IO лог.0
  60.         }
  61.     _delay_us(1);                   // пауза между синхроимпульсами 1 микросекунда
  62.     SCLK_log1;                  // синхроимпульс SCLK
  63.     if (step < 7)
  64.         {
  65.         _delay_us(1);               // длина синхроимпульса 1 микросекунда    
  66.         SCLK_log0;              // убрать синхроимпульс SCLK
  67.         }
  68.     }
  69. IO_log0;
  70. IO_in;                          // перейти на прием
  71. for ( step = 0; step < 8; step ++ )         // цикл до 8 бит
  72.     {
  73.     _delay_us(2);                   // длина синхроимпульса 1 микросекунда
  74.     SCLK_log0;                  // синхроимпульс SCLK лог.0
  75.     if((PIN_IO) != 0)               // считаем данные из линии, если не 0
  76.         {
  77.         out |= (1<<step);           // запишем лог.1 в разряд сдвинутый step
  78.         }
  79.     if (step < 7)
  80.         {
  81.         _delay_us(1);               // длина между синхроимпульсами 1 микросекунда    
  82.         SCLK_log1;              // синхроимпульс SCLK
  83.         }
  84.     }
  85. _delay_us(1);                       // длина между синхроимпульсами 1 микросекунда
  86. SCLK_log0;
  87. CE_log0;                        // закончить передачу
  88. return out;                     // вернуть полученное значение
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement