Advertisement
Szybom

kolos Szlachetka uC

Jan 8th, 2019
537
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. org 0
  2. jmp init
  3.  
  4. org 0BH
  5. jmp PWM
  6.  
  7. org 23H
  8. jmp serial
  9.  
  10. init:
  11.     MOV SCON, #01010000B ; konf portu szeregowego
  12.     MOV TH1,#253 ;do baud 9600 i 12MHz
  13.     MOV TH0, #253
  14.     SETB ES ;zezwolenie na przerwania
  15.     SETB EA
  16.     SETB ET0
  17.     MOV TMOD, #00100001B ; tryby timera, tim1 - 2 tim0 - 1
  18.     SETB PS ; ustawienie priorytetu serial
  19.     SETB TR1 ;start timera z serial    
  20.     MOV R0, #100 ; rozdzielczosc PWM (czas timera dla 1% wypełnienia)
  21.    
  22. main:
  23. jmp main
  24.  
  25. serial:
  26.     MOV R1, SBUF ;odczytanie z seriala    
  27.     CLR RI ;usuniecie flagi przerwania receive
  28.     CLR TR0 ;restart PWM
  29.     CLR F0
  30.     SETB TR0
  31.     MOV C, R1.1 ; przypisanie bitu status_out
  32.     MOV P1.1, C
  33.     reti
  34.    
  35. PWM:
  36.     PUSH A
  37.     JB F0, ON
  38.         SETB P1.0 ;pwm on
  39.         MOV B, R0 ;obliczanie czasu trwania on
  40.         MOV A, R1
  41.         ANL A, 01111111B ;wywalenie bitu status z wartości
  42.         MUL A,B ;mnożenie wypełeninie razy czas 1%
  43.         MOV R3, A
  44.         MOV R4 B
  45.         MOV A, #255 ;odjęcie od 255 bo liczy do góry
  46.         MOV B, #255
  47.         SUBB A, R3
  48.         SUBB B, R4
  49.         MOV TH0, B ;ustawienie timera na na obliczony czasu
  50.         MOV TL0, A
  51.         CLR F0 ;ustawione, aby kolejnym razem wyłączyć
  52.         POP A
  53.         reti
  54.    
  55.     ON:
  56.         CLR P1.0 ;pwm off
  57.         MOV B, R0 ; obliczenie czasu trwania off
  58.         MOV A, R1
  59.         ANL A, 01111111B
  60.         MOV R6, A
  61.         MOV A, #100 ;gościu mówił że maksymalna wartość to 100
  62.         SUBB A, R6
  63.         MUL A,B
  64.         MOV R3, A
  65.         MOV R4 B
  66.         MOV A, #255
  67.         MOV B, #255
  68.         MOV TH0, B
  69.         MOV TL0, A
  70.         SETB F0 ;ustawione aby kolejnym razem włączyć
  71.         POP A
  72.         RETI
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement