Advertisement
artones

lr7_C

May 5th, 2021
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. #include <stdio.h>//подключение заголовочного файла содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода
  2. #include "C8051F120.h"// Подключение библиотеки регистров C8051F12;  
  3. sbit LED = P1^6;//Объявление переменной LED
  4. sbit SW = P3^7;//Объявление переменной SW
  5. int array [8] = {0x2,0x4,0x8,0x10,0x20,0x40,0x80,0xFF};задание массива со значениями уровней яркости свечения светодиода
  6. int i;//Объявление переменной номера элемента в массиве яркости
  7. int k;//Объявление переменной значений период
  8. int SW_SHD;// Объявление переменной для проверки на несовпадение
  9. int j;//Объявление переменной числа повторений периода ШИМ
  10. void Reset_Sources_Init()
  11. {
  12.     WDTCN = 0xDE;   //Выключение WDT 
  13.     WDTCN = 0xAD;
  14. }
  15. void Port_IO_Init()
  16. {
  17.     SFRPAGE = CONFIG_PAGE;// Настройка порта P1.6 на pushpull выход
  18.     P1MDOUT = 0x40;
  19.     XBR2 = 0x40;
  20. }
  21. // Initialization function for device,
  22. // Call Init_Device() from your main program
  23. void Init_Device(void) // настройка микроконтроллера
  24. {              
  25.     Reset_Sources_Init();
  26.     Port_IO_Init();
  27. }
  28. void main(void)
  29. {
  30.         Init_Device();//Вызов функции инициализации микроконтроллер
  31.         LED=0;
  32.         while(1)
  33.             {
  34.                 if (SW != SW_SHD)//Проверка на несоответствие
  35.                 {
  36.                     SW_SHD=SW;//сохранение текущего состояния SW для следующей проверки на соответствие
  37.                     i = (i+1)%8;// Смена уровня ШИМ
  38.                 }
  39.                 for (j =0;j<=8;j++)//количество периодов ШИМ
  40.                 {
  41.                     for (k =0;k<=255;k++) //Формирование периода ШИМ
  42.                     {
  43.                     if(array[i]<=k)
  44.                         LED=1;//определение времени, сколько светодиод будет включённым и выключенным за один период ШИМ
  45.                     else
  46.                         LED=0;
  47.                     }
  48.                 }
  49.             }
  50.         }          
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement