Advertisement
Guest User

Untitled

a guest
Nov 8th, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pic 16 2.78 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.  
  20.  
  21. banksel TRISB
  22. movlw B'00000000' ; PORTB progla?en izlaznim
  23. movwf TRISB
  24. movlw B'00000000'; PORTC progla?en izlaznim
  25. movwf TRISC
  26. movlw B'11111111' ; PORTD progla?en ulaznim
  27. movwf TRISD
  28. banksel PORTA ; Biramo Bank 0
  29.  
  30. ; glavni program
  31. ;Potrebno je provjeriti sta se nalazi na RD1, ukoliko je 0 broji naprijed, ukoliko je 1 broji nazad
  32. btfsc PORTD,1
  33. goto BROJINAZAD
  34. goto BROJINAPRIJED
  35.  
  36. BROJINAZAD ;broji unazad od 135 do 1
  37. banksel LATC
  38. movlw B'00000000'
  39. movwf LATC ;ovime smo na izlaz C postavili nule, koje cemo promijeniti na jedinice kada trebadne ukljuciti signal da je izbrojao do kraja
  40. ;banksel LATB
  41. movlw B'10000111'
  42. movwf LATB ;postavljamo pocetnu vrijednost brojaca na diodama na portB na 135
  43. movlw B'10000111'
  44. movwf brojac ;postavljamo pocetnu vrijednost brojaca na 135
  45.  
  46. L1
  47. banksel PORTD
  48. btfsc PORTD,0 ; registruje da li se desila promjena sa 0 na 1
  49. goto L1
  50. btfss PORTD,0 ; registruje da li se desila promjena sa 1 na 0
  51. goto L1
  52. goto L2 ;ukoliko su se desile obje promjene potrebno je promijeniti stanje brojaca
  53.  
  54. L2
  55. banksel LATC
  56. decf brojac
  57. ;banksel LATB
  58. decfsz LATB ;port B se umanjuje za 1, ukoliko je 0 preskace se sljedeca naredba
  59. goto L1
  60. ;banksel LATC
  61. movlw B'11111111'
  62. movwf LATC ;ovime smo na izlaz C postavili jedinice da bi se aktivirao alarm
  63. goto BROJINAZAD
  64.  
  65. BROJINAPRIJED ;broji naprijed od 0 do 135
  66. banksel LATC
  67. movlw B'00000000'
  68. movwf LATC ;ovime smo na izlaz C postavili nule, koje cemo promijeniti na jedinice kada trebadne ukljuciti signal da je izbrojao do kraja
  69. ;banksel LATB
  70. movlw B'00000000'
  71. movwf LATB ;postavljamo pocetnu vrijednost brojaca na diodama na portB na 0
  72. movlw B'10000111'
  73. movwf brojac ;postavljamo pocetnu vrijednost brojaca na 135
  74.  
  75. L3
  76. banksel PORTD
  77. btfsc PORTD,0 ; registruje da li se desila promjena sa 0 na 1
  78. goto L3
  79. btfss PORTD,0 ; registruje da li se desila promjena sa 1 na 0
  80. goto L3
  81. goto L4 ;ukoliko su se desile obje promjene potrebno je promijeniti stanje brojaca
  82.  
  83. L4
  84. banksel LATB
  85. incf LATB ; povecaj brojac na diodama na portB za 1
  86. decfsz brojac ; umanji brojac za jedan, ako je brojac 0 preskoci sljedecu naredbu
  87. goto L3
  88. ;banksel LATC
  89. movlw B'11111111'
  90. movwf LATC ;ovime smo na izlaz C postavili jedinice da bi se aktivirao alarm
  91. goto BROJINAPRIJED
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement