artones

lr7_ass

May 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. SW_SHD EQU 0h; объявление константой переменной SW_EQU;
  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. Port_IO_Init:
  14.     mov  SFRPAGE,   #CONFIG_PAGE ;Настройка порта P1.6 на push-pull
  15. выход
  16.     mov  P3MDOUT,   #080h
  17.     mov  P1MDOUT,   #040h
  18.     mov  XBR2,      #040h
  19.     ret
  20. ; Initialization function for device,
  21. ; Call Init_Device from your main program
  22. Init_Device:;Настройка микроконтроллера;
  23.     lcall Reset_Sources_Init
  24.     lcall Port_IO_Init
  25.     ret
  26. MAIN:
  27.     lcall Init_Device;вызов настройки микроконтроллера;
  28.     CLR LED;Переключение диода;
  29.     mov     A,P3;
  30.     anl     A,#80h;
  31.     mov     SW_SHD,A
  32.  
  33. PWM: mov r6,#08h;максимальная яркость;
  34. Period:
  35.     mov a, r6;Загрузка текущей длительности импульса;
  36.     acall TABLE;Чтение текущей длительности импульса;
  37.     mov b,a; сохранение значения длительности импульса;
  38.     setb LED;включение светодиода;
  39. Pulse: mov r5, #00h;Увеличение длительности импульса в 256 раз;
  40.     djnz r5,$;
  41.     djnz acc, Pulse ;Задержка;
  42.     clr LED;Выключение диода
  43.     mov a,b;определяется величина паузы через вычитание (256-аккумулятор) значения длительности импульса
  44.     cpl a;
  45.     inc a;
  46. Pouse: mov r5, #00h;Увеличение длительности паузы в 256 раз;
  47.     djnz r5,$;
  48.     djnz acc, Pouse;Задержка;
  49.  
  50. TEST:
  51.     mov A,P3; Проверка на соответствие;
  52.     ANL A,#80h
  53.     cjne A, SW_SHD,SKIP;
  54.     jmp PERIOD ;
  55.  
  56. SKIP:
  57.     mov SW_SHD, A;
  58.     jnz PERIOD;
  59.     djnz R6,PERIOD;Смена уровня ШИМ;
  60.     ajmp PWM;Перезапуск ШИМ;
  61.  
  62. TABLE: movc a,@a+pc;Чтение значений длительности импульсов;
  63.     ret;
  64.     db 02h,04h,08h,10h,20h,40h,80h,0FFh;Таблица значений длительности импульсов;
  65. end
Add Comment
Please, Sign In to add comment