artones

Untitled

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