Advertisement
Guest User

Untitled

a guest
Nov 8th, 2017
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pic 16 2.92 KB | None | 0 0
  1. ;Generator signala
  2.  list p=16f1939
  3.  #include <p16f1939.inc>
  4.  __CONFIG _CONFIG1,_FOSC_HS&_WDTE_OFF&_PWRTE_OFF&_MCLRE_ON&_CP_OFF&_CPD_OFF&_BOREN_OFF&_CLKOUTEN_OFF&_IESO_OFF&_FCMEN_OFF
  5.  __CONFIG _CONFIG2,_WRT_OFF&_VCAPEN_OFF&_PLLEN_OFF&_STVREN_OFF&_LVP_OFF
  6.  
  7.  ;***** Deklaracija promjenjivih *****
  8. brojac equ 0x71
  9.  
  10.  ;***** Struktura programske memorije *****
  11.  ORG 0x00 ; Reset vektor
  12.  goto Glavni
  13.  ORG 0x04 ; Vektor prekida
  14.  goto Glavni ; nema prekidne rutine
  15.  
  16.  ;**** Pocetak programa ****
  17. Glavni
  18. ;***** inicijalizacija portova *****
  19. banksel ANSELB ;biramo Bank 3
  20. movlw B'00000000'
  21. movwf ANSELB ;postavljamo port B kao analogni
  22. movlw B'00000000'
  23. movwf ANSELD ;postavljamo port D kao analogni
  24.  
  25. banksel TRISB
  26. movlw B '00000000' ; PORTB progla?en izlaznim
  27. movwf TRISB
  28. movlw B '00000000'; PORTC progla?en izlaznim
  29. movwf TRISC
  30. movlw B '11111111' ; PORTD progla?en ulaznim
  31. movwf TRISD
  32. banksel PORTA ; Biramo Bank 0
  33.  
  34. ; glavni program
  35. ;Potrebno je provjeriti sta se nalazi na RD1, ukoliko je 0 broji naprijed, ukoliko je 1 broji nazad
  36. btfsc PORTD,1
  37. goto BROJINAZAD
  38. goto BROJINAPRIJED
  39.  
  40. BROJINAZAD ;broji unazad od 135 do 1
  41. banksel LATC
  42. movlw B'00000000'
  43. movwf LATC ;ovime smo na izlaz C postavili nule, koje cemo promijeniti na jedinice kada trebadne ukljuciti signal da je izbrojao do kraja
  44. banksel LATB
  45. movlw B'10000111'
  46. movwf LATB ;postavljamo pocetnu vrijednost brojaca na diodama na portB na 135
  47. movlw B'10000111'
  48. movwf brojac ;postavljamo pocetnu vrijednost brojaca na 135
  49.  
  50. L1
  51. banksel PORTD
  52. btfsc PORTD,0 ; registruje da li se desila promjena sa 0 na 1
  53. goto L1
  54. btfss PORTD,0 ; registruje da li se desila promjena sa 1 na 0
  55. goto L1
  56. goto L2 ;ukoliko su se desile obje promjene potrebno je promijeniti stanje brojaca
  57.  
  58. L2
  59. decf brojac
  60. banksel LATB
  61. decfsz LATB ;port B se umanjuje za 1, ukoliko je 0 preskace se sljedeca naredba
  62. goto L1
  63. banksel LATC
  64. movlw B'11111111'
  65. movwf LATC ;ovime smo na izlaz C postavili jedinice da bi se aktivirao alarm
  66. goto BROJINAZAD
  67.  
  68. BROJINAPRIJED ;broji naprijed od 0 do 135
  69. banksel LATC
  70. movlw B'00000000'
  71. movwf LATC ;ovime smo na izlaz C postavili nule, koje cemo promijeniti na jedinice kada trebadne ukljuciti signal da je izbrojao do kraja
  72. banksel LATB
  73. movlw B'00000000'
  74. movwf LATB ;postavljamo pocetnu vrijednost brojaca na diodama na portB na 0
  75. movlw B'10000111'
  76. movwf brojac ;postavljamo pocetnu vrijednost brojaca na 135
  77.  
  78. L3
  79. banksel PORTD
  80. btfsc PORTD,0 ; registruje da li se desila promjena sa 0 na 1
  81. goto L3
  82. btfss PORTD,0 ; registruje da li se desila promjena sa 1 na 0
  83. goto L3
  84. goto L4 ;ukoliko su se desile obje promjene potrebno je promijeniti stanje brojaca
  85.  
  86. L4
  87. banksel LATB
  88. incf LATB ; povecaj brojac na diodama na portB za 1
  89. decfsz brojac ; umanji brojac za jedan, ako je brojac 0 preskoci sljedecu naredbu
  90. goto L3
  91. banksel LATC
  92. movlw B'11111111'
  93. movwf LATC ;ovime smo na izlaz C postavili jedinice da bi se aktivirao alarm
  94. goto BROJINAPRIJED
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement