Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>//подключение библиотек с функциями стандартного ввода/вывода
- #include "C8051F120.h" //Подключение библиотеки регистров C8051F120
- sbit SW=P3^7; //Объявление переменной SW
- sbit LED=P1^6; //Объявление переменной LED
- // Peripheral specific initialization functions,
- // Called from the Init_Device() function
- int i; //Объявление переменной номера элемента в массиве яркости
- int k; //Объявление переменной значений периода
- int SW_SHD; // Объявление старого состояния кнопки
- int array [8] = {0x2,0x4,0x8,0x10,0x20,0x40,0x80,0xFF}; // Задание массива со значениями уровней яркости свечения светодиода
- void Reset_Sources_Init()
- {
- WDTCN = 0xDE; // Выключение сторожевого таймера WDT
- WDTCN = 0xAD;
- }
- void Port_IO_Init()
- {
- SFRPAGE = CONFIG_PAGE; // Настройка порта P1.6 на push-pull выход
- P1MDOUT = 0x40;
- XBR2 = 0x40;
- }
- // Initialization function for device,
- // Call Init_Device() from your main program
- void Init_Device(void) //Настройка микроконтроллера
- {
- Reset_Sources_Init();// Инициализация работы WDT
- Port_IO_Init(); //Инициализация порта P1.6
- }
- void main(void) {
- Init_Device(); //Вызов функции инициализации микроконтроллера
- SW_SHD = SW; // Сохранение исходного состояние кнопки
- while (1){ //Бесконечный цикл
- if (SW != SW_SHD){ // Проверка неравенства старого и нового состояния
- SW_SHD = SW; // Запоминание состояния кнопки
- if (SW_SHD == 0){ //Условие выполнено, если кнопка нажата
- i = (i + 1)%8; // Итерация по массиву индексов
- 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