Advertisement
artones

Untitled

Mar 31st, 2021
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.05 KB | None | 0 0
  1. include <stdio.h>//подключение заголовочного файла содержащий определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода     
  2. #include "C8051F120.h"//установка файлов определения регистра;   
  3. sbit LED = P1^6;//Объявление переменной LED        
  4. cnt = 0x06;
  5. int FLAG = 0x01;//Объявление переменной Flag
  6. // Peripheral specific initialization functions,
  7. // Called from the Init_Device() function
  8.     void Reset_Sources_Init()
  9.     {
  10.         WDTCN     = 0xDE; //Выключение WDT
  11.         WDTCN     = 0xAD;
  12.     }
  13.      
  14.     void Timer_Init()
  15.     {
  16.         SFRPAGE   = TIMER01_PAGE;
  17.         TCON      = 0x10;
  18.         TMOD      = 0x01; // установка таймера в 16-ти разрядный режим
  19.     }
  20.      
  21.     void Port_IO_Init()
  22.     {
  23.      
  24.         SFRPAGE   = CONFIG_PAGE; // Настройка порта P1.6 на push-pull выход
  25.         P1MDOUT   = 0x40;
  26.         XBR2      = 0x40;
  27.     }
  28.  
  29.     void Interrupts_Init()
  30.     {
  31.         IE        = 0x82; //Включение общих прерывания и прерываний с установкой
  32.     }
  33.      
  34.     // Initialization function for device,
  35.     // Call Init_Device() from your main program
  36.     void Init_Device(void)
  37.     {
  38.         Reset_Sources_Init();
  39.     Timer_Init();
  40.     Port_IO_Init();
  41.         Interrupts_Init();
  42.     }
  43. void Timer_ISR(void) interrupt 1 //Обработчик прерываний
  44.  
  45. {
  46.     TF0 = 0;//очистка флага переполнения  
  47.     cnt --;
  48.         if (cnt == 0x00)//Если счетчик 0, то записывается в счетчик число прерываний
  49.         {
  50.             cnt = 0x06;//число прерываний
  51.             FLAG=0x01;
  52.         }
  53. }
  54.  
  55. void main(void)
  56. {
  57.     Init_Device();
  58.     TR0 = 1; //включение таймера
  59.     while (1)
  60.     {
  61.         if(FLAG==0x01)
  62.         {
  63.             FLAG=0x00;
  64.             LED=~LED;// смена состояния LED
  65.         }
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement