Advertisement
artones

lr7C

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