Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>//подключение заголовочного файла содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода
- #include "C8051F120.h"// Подключение библиотеки регистров C8051F12;
- sbit LED = P1^6;//Объявление переменной LED
- sbit SW = P3^7;//Объявление переменной SW
- int array [8] = {0x2,0x4,0x8,0x10,0x20,0x40,0x80,0xFF};задание массива со значениями уровней яркости свечения светодиода
- int i;//Объявление переменной номера элемента в массиве яркости
- int k;//Объявление переменной значений период
- int SW_SHD;// Объявление переменной для проверки на несовпадение
- int j;//Объявление переменной числа повторений периода ШИМ
- void Reset_Sources_Init()
- {
- WDTCN = 0xDE; //Выключение WDT
- WDTCN = 0xAD;
- }
- void Port_IO_Init()
- {
- SFRPAGE = CONFIG_PAGE;// Настройка порта P1.6 на pushpull выход
- P1MDOUT = 0x40;
- XBR2 = 0x40;
- }
- // Initialization function for device,
- // Call Init_Device() from your main program
- void Init_Device(void) // настройка микроконтроллера
- {
- Reset_Sources_Init();
- Port_IO_Init();
- }
- void main(void)
- {
- Init_Device();//Вызов функции инициализации микроконтроллер
- LED=0;
- while(1)
- {
- if (SW != SW_SHD)//Проверка на несоответствие
- {
- SW_SHD=SW;//сохранение текущего состояния SW для следующей проверки на соответствие
- i = (i+1)%8;// Смена уровня ШИМ
- }
- for (j =0;j<=8;j++)//количество периодов ШИМ
- {
- for (k =0;k<=255;k++) //Формирование периода ШИМ
- {
- if(array[i]<=k)
- LED=1;//определение времени, сколько светодиод будет включённым и выключенным за один период ШИМ
- else
- LED=0;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement