artones

Untitled

Apr 5th, 2021 (edited)
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $NOMOD51;отключает предварительное определение имен 8051 SFR;
  2. $include (C8051F120.h));Подключение библиотеки регистров C8051F12;
  3. LED BIT P1.6;Объявление переменной LED;
  4. Flag BIT 00h ;Объявление переменной Flag;
  5.     CSEG AT 0;указание места в памяти для расположения программы;
  6.     LJMP MAIN;
  7.     ; Peripheral specific initialization functions,
  8.     ; Called from the Init_Device label
  9.     Reset_Sources_Init:
  10.     mov WDTCN, #0DEh; ;Выключение WDT                
  11.     mov WDTCN, #0ADh
  12.     ret
  13. Timer_Init:
  14.     mov SFRPAGE, #TIMER01_PAGE ;
  15.     mov TMOD, #01h; установка таймера в 16-ти разрядный            
  16.     ret
  17. Port_IO_Init:
  18.     mov SFRPAGE, #CONFIG_PAGE; Настройка порта P1.6 на push-pull выход      
  19.     mov P1MDOUT, #040h
  20.     mov XBR2, #040h
  21.     ret
  22. Init_Device:; Настройка микроконтроллера  ;
  23.     lcall Reset_Sources_Init; ; Настройка микроконтроллера      
  24.     lcall Port_IO_Init
  25.     lcall Timer_Init
  26.     ret
  27. MAIN:
  28.     lcall Init_Device;вызов настройки микроконтроллера;
  29.     CLR LED;Переключение диода;
  30. PWM: mov r6,#08h; максимальная яркость;
  31. Period:
  32.     mov a, r6;Загрузка текущей длительности импульса;
  33.     acall TABLE; Чтение текущей длительности импульса;
  34.     mov b,a;сохранение значения длительности импульса;
  35.     setb LED;включение светодиода
  36. Pulse: mov r5, #00h; Увеличение длительности импульса в 256 раз;
  37.     djnz r5,$;
  38.     djnz acc, Pulse; Задержка
  39.     clr LED; Выключение диода
  40.     mov a,b; определяется величина паузы через вычитание (256-аккумулятор) значения       длительности импульса
  41.     cpl a;
  42.     inc a;
  43. Pouse: mov r5, #00h; Увеличение длительности паузы в 256 раз;
  44.     djnz r5,$;
  45.     djnz acc, Pouse;Задержка
  46.     djnz R6,Period;Нахождение длительности паузы
  47.     sjmp PWM;Перезапуск ШИМ;
  48. TABLE: movc a,@a+pc;Чтение значений длительности импульсов;
  49.     ret;
  50.     db 02h,04h,08h,10h,20h,40h,80h,0FFh; Таблица значений длительности импульсов;
  51. end
Add Comment
Please, Sign In to add comment