Advertisement
Leo1502

Mikroupravljači: 20ms i 40ms delay

May 1st, 2023
986
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MIX Assembler 3.60 KB | Source Code | 0 0
  1. ;Program generira vremenski interval od 20ms za frekvenciju 4MHz.
  2. ;Verzija 1.0 datum 01.05.2023. MCU: PCI 16F84 Pisao Leo Novina
  3.  
  4. ;Deklaracija i konfiguracija mikrokontrolera
  5.  
  6. PROCESSOR 16F84 ;Tip mikrokontrolera
  7. #include "p16f84.inc" ;Zaglavlje mikrokontrolera(obavezno napisati)
  8.  
  9. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
  10.  
  11. ;Deklaracija varijabli
  12. VRIJEME equ 0x0D ;Registar za uvecanje milisekundi
  13. POMOCNI equ 0x0E
  14.  
  15. ;Makroi koji moraju biti definirani prije pozivanja
  16.  
  17. BANK0 macro
  18. bcf STATUS, RP0 ;Pristup banci 0
  19. endm
  20.  
  21. BANK1 macro
  22. bsf STATUS, RP0 ;pristup banci 1
  23. endm
  24.  
  25. ;Pocetak programa
  26. org 0x00 ;reset vektora
  27. goto Glavni ;Idi na pocetak glavnog programa
  28.  
  29. ;Prekidni vektor
  30. org 0x04 ;adresa prekidnog vektora
  31.  
  32. ;Prekidni program
  33. nop
  34. nop
  35. nop
  36. nop
  37. nop ;5
  38.  
  39. nop
  40. nop
  41. nop
  42. nop
  43. nop ;10
  44.  
  45. nop
  46. nop
  47. nop
  48. nop
  49. nop ;15
  50.  
  51. nop
  52. nop
  53. nop
  54. nop
  55. nop ;20
  56.  
  57. nop
  58. nop
  59. nop
  60. nop
  61. nop ;25
  62.  
  63. nop ;26
  64.  
  65. ;Generira vremenske zadrske od 20ms
  66. movlw d'100' ;         156 *   128 + 26 = 20ms
  67.              ;(256-100=156) (1:128) (26*nop)
  68.  
  69. movwf TMR0 ;Upisi 100 u TMR0 kako bi dobili brojanje od 156
  70. bcf INTCON, T0IF ;Brisanje zastavice zahtjeva za prekid uslijed prekoracenja TMR0
  71. retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
  72. incf PORTB
  73. retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
  74.  
  75. Glavni
  76.  
  77.     BANK1
  78.     movlw b'00000000'
  79.     movwf TRISB
  80.    
  81.     BANK1
  82.     movlw b'10000110'
  83.     movwf OPTION_REG
  84.    
  85.     BANK0 ;Pristup banci 0
  86.     movlw b'10100000' ;Omoguceni svi prekidi bit 7(1), omogucen prekid
  87.     movwf INTCON
  88.     clrf VRIJEME
  89.    
  90.     movwf INTCON
  91.     clrf POMOCNI
  92.     clrf VRIJEME
  93.     clrf PORTB
  94.    
  95.     PETLJA2
  96.     goto PETLJA2
  97.  
  98. end ;Obavezna oznaka kraja programa
  99.  
  100. ;-------------------------------------------------------------------------------------------------
  101.  
  102. ;Program generira vremenski interval od 40ms za frekvenciju 4MHz.
  103. ;Verzija 1.0 datum 01.05.2023. MCU: PCI 16F84 Pisao Leo Novina
  104.  
  105. ;Deklaracija i konfiguracija mikrokontrolera
  106.  
  107. PROCESSOR 16F84 ;Tip mikrokontrolera
  108. #include "p16f84.inc" ;Zaglavlje mikrokontrolera(obavezno napisati)
  109.  
  110. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
  111.  
  112. ;Deklaracija varijabli
  113. VRIJEME equ 0x0D ;Registar za uvecanje milisekundi
  114. POMOCNI equ 0x0E
  115.  
  116. ;Makroi koji moraju biti definirani prije pozivanja
  117.  
  118. BANK0 macro
  119. bcf STATUS, RP0 ;Pristup banci 0
  120. endm
  121.  
  122. BANK1 macro
  123. bsf STATUS, RP0 ;pristup banci 1
  124. endm
  125.  
  126. ;Pocetak programa
  127. org 0x00 ;reset vektora
  128. goto Glavni ;Idi na pocetak glavnog programa
  129.  
  130. ;Prekidni vektor
  131. org 0x04 ;adresa prekidnog vektora
  132.  
  133. ;Prekidni program
  134. nop
  135. nop
  136. nop
  137. nop
  138. nop ;5
  139.  
  140. nop
  141. nop
  142. nop
  143. nop
  144. nop ;10
  145.  
  146. nop
  147. nop
  148. nop
  149. nop
  150. nop ;15
  151.  
  152. nop
  153. nop
  154. nop
  155. nop
  156. nop ;20
  157.  
  158. nop
  159. nop
  160. nop
  161. nop
  162. nop ;25
  163.  
  164. nop
  165. nop
  166. nop
  167. nop
  168. nop ;30
  169.  
  170. nop
  171. nop
  172. nop
  173. nop
  174. nop ;35
  175.  
  176. nop
  177. nop
  178. nop
  179. nop
  180. nop ;40
  181.  
  182. nop
  183. nop
  184. nop
  185. nop
  186. nop ;45
  187.  
  188. nop
  189. nop
  190. nop
  191. nop
  192. nop ;50
  193.  
  194. nop
  195. nop
  196. nop
  197. nop
  198. nop ;55
  199.  
  200. nop
  201. nop
  202. nop ;58
  203.  
  204. ;Generira vremenske zadrske od 40ms
  205. movlw d'100' ;         156 *   256 + 58 = 20ms
  206.              ;(256-100=156) (1:256) (58*nop)
  207.  
  208. movwf TMR0 ;Upisi 100 u TMR0 kako bi dobili brojanje od 156
  209. bcf INTCON, T0IF ;Brisanje zastavice zahtjeva za prekid uslijed prekoracenja TMR0
  210. retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
  211. incf PORTB
  212. retfie ;Povratak iz prekidne rutine uz omogucavanje prekida
  213.  
  214. Glavni
  215.  
  216.     BANK1
  217.     movlw b'00000000'
  218.     movwf TRISB
  219.    
  220.     BANK1
  221.     movlw b'10000111'
  222.     movwf OPTION_REG
  223.    
  224.     BANK0 ;Pristup banci 0
  225.     movlw b'10100000' ;Omoguceni svi prekidi bit 7(1), omogucen prekid
  226.     movwf INTCON
  227.     clrf VRIJEME
  228.    
  229.     movwf INTCON
  230.     clrf POMOCNI
  231.     clrf VRIJEME
  232.     clrf PORTB
  233.    
  234.     PETLJA2
  235.     goto PETLJA2
  236.  
  237. end ;Obavezna oznaka kraja programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement