|
[ mr.jelenko @ 22.01.2013. 12:01 ] @
| Zadatak glasi:
Proizvesti zvucni signal razlicite ucestanosti 500Hz duzine trajanja.
PORTB.0 Pritisak na taster proizvodi zvuk koji traje 1/32 s
PORTB.1 Isto samo 1/16s
PORTB.2 1/8s
PORTB.3 1/4s
PORTB.4 1/2s
PORTB.5 1s
PORTA.4 Izlaz zvucnika
Ne trazim da mi uradite ceo zadatak, jer znam da to nije moguce. Jos uvek sam nub za mikrokontrolere, narocito za asembler.
Da li mi recimo mozete uraditi bar algoritam kako to treba da izgleda, pomoc kako dobiti odredjeno trajanje u sekundama, 500Hz, ili neke delove programa ili bilo kakvu pomoc koja ce mi pomoci pri realizaciji ovog programa.
Unapred Hvala. |
[ Seme @ 22.01.2013. 15:47 ] @
Za generisanje zvuka mozes da iskoristis sledeci makro:
Code: BEEPinit MACRO
bcf STATUS, RP0
bcf STATUS, RP1
bcf BEEPport
bsf STATUS, RP0
bcf STATUS, RP1
bcf BEEPtris
movlw b'00000111' ; TMR0 prescaler rate 1:256
movwf OPTION_REG ; OPTION <- W
bcf STATUS, RP0
bcf STATUS, RP1
ENDM
BEEP MACRO freq, duration
bcf STATUS, RP0
bcf STATUS, RP1
movlw freq
movwf Beep_TEMP1
movlw duration
movwf Beep_TEMP2
call BEEPsub
ENDM
;**********************************************************************
; Subroutines
BEEPsub
clrf TMR0 ; Counter initialization
bcf INTCON, T0IF
bcf BEEPport
BEEPa
bcf INTCON, T0IF ; Clears TMR0 Overflow Flag
BEEPb
bsf BEEPport
call B_Wait ; Logic one "1" duration
bcf BEEPport
call B_Wait ; Logic zero "0" duration
btfss INTCON, T0IF ; Check TMR0 Overflow Flag,
goto BEEPb ; skip next if set
decfsz Beep_TEMP2, f ; Is Beep_TEMP2 = 0 ?
goto BEEPa ; Go to BEEPa again
return
B_Wait
movf Beep_TEMP1, w
movwf Beep_TEMP3
B_Waita
decfsz Beep_TEMP3, f
goto B_Waita
return
pozivas ga na sledeci nacin:
Code: BEEP MACRO frequency, duration
pri cemu su ti frequency i duration 8bit ni brojevi(0-255). Veci broj za frequency znaci visi ton, veci broj za duration znaci duze trajanje tona.
Sledeca stvar je obrada tastera:
Code: ;****************************************************
button MACRO port,pin,hilo,label
local Pressed1 ; All labels are local
local Pressed2
local Exit1
local Exit2
IFNDEF debouncedelay ; Enables debounce time to be defined
; in main program
#define debouncedelay .10
ENDIF
IF (hilo == 0) ; If pull-up used
btfsc port, pin ; If "1", push-button is pressed
goto Exit1
pausems debouncedelay ; Wait for 10ms debounce
Pressed1
btfss port, pin
goto Pressed1
pausems debouncedelay ; Wait until released and
goto label ; jump to specified address
Exit1
ELSE ; If pull-down used
btfss port, pin
goto Exit2 ; If "0", push-button is released
pausems debouncedelay ; Wait for 10ms debounce
Pressed2
btfsc port, pin
goto Pressed2
pausems debouncedelay ; Wait until released and
goto label ; jump to specified address
Exit2
ENDIF
ENDM
;**********************************************************************
U ovom slucaju makro pozivas na sledeci nacin:
Code: button PORTD,0,0,Play1 ;
Znaci taster je povezan na portD, pin 0, reaguje na logicku nulu tj. na pin mikrokontrolera taster je povezan preko pull up otpornika, i kada se pritisne izvrsice se skok na Play1 labelu.
Koriscenjem ova dva makroa mozes da napises svoj program, ciji je glavni deo dat ispod:
Code:
;*********************** Header ***************************************
;******************* Defining variables in program ********************
cblock 0x20
HIcnt ; Auxiliary variables for macro pausems
LOcnt
LOOPcnt
PRESCwait
Beep_TEMP1 ; Belongs to macro "BEEP"
Beep_TEMP2
Beep_TEMP3
endc
#define BEEPport PORTD, 2 ; Speaker pin
#define BEEPtris TRISD, 2
expand
;**********************************************************************
ORG 0x0000 ; RESET vector address
goto main ; Jump to program start (label - main)
;**********************************************************************
; remaining code goes here
include "pause.inc"
include "button.inc"
include "beep.inc"
main
banksel ANSEL ; Selects bank containing ANSEL
clrf ANSEL ; All outputs are digital
clrf ANSELH
banksel TRISD
movlw b'11111011' ; PORTA D initialization
movwf TRISD
banksel PORTD
BEEPinit ; Macro "Beep"
Loop
button PORTD,0,0,Play1 ; Push-button 1
button PORTD,1,0,Play2 ; Push-button 2
goto Loop
Play1 ; First tone
BEEP 0xFF, 0x02
BEEP 0x90, 0x05
BEEP 0xC0, 0x03
BEEP 0xFF, 0x03
goto Loop
Play2 ; Second tone
BEEP 0xBB, 0x02
BEEP 0x87, 0x05
BEEP 0xA2, 0x03
BEEP 0x98, 0x03
goto Loop
;**********************************************************************
END ; End of program
Ovim programom, tj main procedurom, povezao si dva tastera na pinove PORTD.0, i PORTD.1 i pritiskom na prvi taster program ce otici na Play1 cime ces generisati prvi ton pozivom makroa BEEP. Pritiskom na drugi taster program ce skociti na Play2 cime ces izgenerisati novu melodiju.
U BEEP makrou se koristi makro za generisanje pauze pa ti evo i on:
Code: pausems MACRO arg1
local Loop1
local dechi
local Delay1ms
local Loop2
local End
movlw High(arg1) ; Higher byte of argument is moved
; to HIcnt
movwf HIcnt
movlw Low(arg1) ; Lower byte of argument is moved
; to LOcnt
movwf LOcnt
Loop1
movf LOcnt, f ; Decrements HIcnt and LOcnt while
btfsc STATUS, Z ; needed and calls subroutine Delay1ms
goto dechi
call Delay1ms
decf LOcnt, f
goto Loop1
dechi
movf HIcnt, f
btfsc STATUS, Z
goto End
call Delay1ms
decf HIcnt, f
decf LOcnt, f
goto Loop1
Delay1ms: ; Delay1ms provides delay of
movlw .100 ; 100*10us=1ms
movwf LOOPcnt ; LOOPcnt<-100
Loop2:
nop
nop
nop
nop
nop
nop
nop
decfsz LOOPcnt, f
goto Loop2 ; Execution time of Loop2
return ; is 10 us
End
ENDM
;**********************************************************************
Toliko, sad ti sedi i prokljuvi sta je ovde pisac hteo da kaze, ili samo iskoristi za tvoj problem koji trebas da resis. Program je pisan za PIC16F887 ali ce svi makroi jednako dobro funkcionisati i na PIC16F84, provereno dobro!
Mislim da si dobio i vise nego sto si trazio sada je na tebe red.
Source: http://www.mikroe.com/products/view/11/book-pic-microcontrollers/ na sajtu mozes naci jos dosta primera.
Pozz. M.
[ mr.jelenko @ 22.01.2013. 22:38 ] @
Evo ja sam uz svakojako istrazivanje dosao do ovog koda:
; Program za realizaciju zvuka iste frekvencije a razlicite duzine
;
; Pritiskom na taster 1 PORTB0 proizvodi se zvuk duzine 1/32 s
; Pritiskom na taster 2 PORTB1 proizvodi se zvuk duzine 1/16 s
; Pritiskom na taster 3 PORTB2 proizvodi se zvuk duzine 1/8 s
; Pritiskom na taster 4 PORTB3 proizvodi se zvuk duzine 1/4 s
; Pritiskom na taster 5 PORTB4 proizvodi se zvuk duzine 1/2 s
; Pritiskom na taster 6 PORTB5 proizvodi se zvuk duzine 1 s
; PORTA4 izlaz na zvucnik
#include "p16f84.inc" ; inicijalizaija procesora koji ce se koristiti
processor 16f84
BROJAC1 equ 0x20 ; dodeljivanje memorijskih lokacija
BROJAC2 equ 0x21
POM equ 0x22
BR equ 0x23
STANJE equ 0x24
TEMP equ 0x25 ; promenljivama
goto inicijalizacija
org 0x04
goto int
org 0x20
inicijalizacija ; inicijalizacija
clrf PORTA
clrf PORTB
clrf BROJAC1
clrf BROJAC2
clrf POM
clrf BR
clrf STANJE
clrf TEMP
bsf STATUS,RP0 ; prebaciti se u banku 1 memorije
movlw b'00111111' ; definisanje ulaznih pinova PORTAB
movwf TRISB ; nazivi registara pisu se velikim slovom
movlw b'00000000' ; definisanje da je PORTA,4 izlazni
movwf TRISA
bcf STATUS,RP0 ; vratiti se iz banke 1 memorije
movlw b'10100000' ; omogucavanje interapta u INTCON registru
movwf INTCON ; vrednost prebaciti iz akumulatora u registar
bsf STATUS,RP0 ; prebaciti se u banku 1 memorije
movlw b'00000000' ; postavljanje preskalera na 1:2
movwf OPTION_REG ; i prebacivanje u OPTION registar
bcf STATUS,RP0 ; vratiti se iz banke 1 memorije
Pocetak0 ; start glavnog programa
btfsc PORTB,0 ; provera da li je pritisnut prvi taster
goto Duzina0 ; skoci na prvu duzinu
bcf STANJE,0 ; resetuj prvi bit promenljive STANJE
Pocetak1
btfsc PORTB,1 ; provera da li je pritisnut drugi taster
goto Duzina1 ; skoci na drugu duzinu
bcf STANJE,1 ; resetuj drugi bit promenljive STANJE
Pocetak2
btfsc PORTB,2 ; provera da li je pritisnut treci taster
goto Duzina2 ; skoci na trecu duzinu
bcf STANJE,2 ; resetuj treci bit promenljive STANJE
Pocetak3
btfsc PORTB,3 ; provera da li je pritisnut cetvrti taster
goto Duzina3 ; skoci na cetvrtu duzinu
bcf STANJE,3 ; resetuj cetvrti bit promenljive STANJE
Pocetak4
btfsc PORTB,4 ; provera da li je pritisnut peti taster
goto Duzina4 ; skoci na petu duzinu
bcf STANJE,4 ; resetuj peti bit promenljive STANJE
Pocetak5
btfsc PORTB,5 ; provera da li je pritisnut sesti taster
goto Duzina5 ; skoci na sestu duzinu
bcf STANJE,5 ; resetuj sesti bit promenljive STANJE
clrf PORTA
goto Pocetak0 ; idi na pocetak
Duzina0 ; 0.032 sec.
btfss STANJE,0 ; proverava da li je taster bio pritisnut
call Vreme32ms ; poziva podprogram za trajanje zvuka od 32 ms
bcf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,0 ; setuje prvi bit u promenljivoj STANJE
goto Pocetak0 ; idi na Pocetak0
Duzina1 ; 0.064 sec.
movlw b'00000010' ; upisuje 2 u akumulator
movwf BR ; upisi 2 u promenljivu BR
Poc1
btfss STANJE,1 ; proverava da li je taster bio pritisnut
call Vreme32ms ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc1 ; idi na labelu Poc1
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,1 ; setuje drugi bit u promenljivoj STANJE
goto Pocetak1 ; idi na Pocetak1
Duzina2 ; 0.128 sec.
movlw b'00000100' ; upisuje 4 u akumulator
movwf BR ; upisi 4 u promenljivu BR
Poc2
btfss STANJE,2 ; proverava da li je taster bio pritisnut
call Vreme32ms ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc2 ; idi na labelu Poc2
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,2 ; setuje treci bit u promenljivoj STANJE
goto Pocetak2 ; idi na Pocetak2
Duzina3 ; 0.256 sec.
movlw b'00001000' ; upisuje 8 u akumulator
movwf BR ; upisi 8 u promenljivu BR
Poc3
btfss STANJE,3 ; proverava da li je cetvrti taster bio pritisnut
call Vreme32ms ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc3 ; idi na labelu Poc3
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,3 ; setuje cetvrti bit u promenljivoj STANJE
goto Pocetak3 ; idi na Pocetak3
Duzina4 ;0.62 sec.
movlw b'00010000' ; upisuje 16 u akumulator
movwf BR ; upisi 16 u promenljivu BR
Poc4
btfss STANJE,4 ; proverava da li je peti taster bio pritisnut
call Vreme32ms ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc4 ; idi na labelu Poc4
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,4 ; setuje peti bit u promenljivoj STANJE
goto Pocetak4 ; idi na Pocetak4
Duzina5 ; 1.24 sec.
movlw b'00100000' ; upisuje 32 u akumulator
movwf BR ; upisi 32 u promenljivu BR
Poc5
btfss STANJE,5 ; proverava da li je taster bio pritisnut
call Vreme32ms ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc5 ; idi na labelu Poc5
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,5 ; setuje sesti bit u promenljivoj STANJE
goto Pocetak5 ; idi na Pocetak5
int
movwf TEMP ; upisi sadrzaj akumulatora u TEMP
movlw b'00101111' ; upisi 47 u akumulator
movwf TMR0 ; upisi 47 iz akumulatora u TMR0
bcf INTCON,T0IF ; resetuj bit u registru INTCON
btfss POM,0 ; provera da li je POM,0 na 1 ako jeste preskoci sledeci red
goto Aset ; idi na Aset
bcf POM,0 ; resetuj promenljivu POM,0
goto endint ; idi na endint
Aset
bsf POM,0 ; setuje POM,0 ako nije setovan
endint
movf TEMP,0 ; vrati sadrzaj iz TEMP u akumulator
retfie
Vreme32ms
movlw b'01100100' ; upisi 100 u akumulator
movwf BROJAC2 ; prepisi 100 u promenljivu BROJAC2 iz akumulatora
Pet2
movlw b'00100000' ; upisi 32 u akumulator
movwf BROJAC1 ; prepisi 32 u promenljivu BROJAC1 iz akumulatora
call Pet1 ; pozovi podprogram Pet1
decfsz BROJAC2 ; umanji BROJAC2 za 1 ako je 0 preskoci sledeci red
goto Pet2 ; idi na Pet2
return ; povratak iz podprograma Vreme250ms
Pet1 ; proizvodi 2,5 ms
btfsc POM,0 ; provera da li je POM,0 na 0 ako jeste preskoci sledeci red
goto Bset ; idi na Bset
bcf PORTA,4 ; resetuj promenljivu PORTA,4
nop
nop
nop
goto kraj
Bset
bsf PORTA,4 ; setuje PORTA,4 ako nije setovan
nop
nop
nop
kraj
decfsz BROJAC1 ; umanji BROJAC1 za 1 ako je 0 preskoci sledeci red
goto Pet1 ; idi na Pet1
return ; povratak iz podprograma Pet1
; konfiguraciona rec
__config B'11111111110001' ; nema zastite koda, powerup dozvoljeno,
; wd iskljucen, xt oscilator
end ; kraj programa
Nisam se nadao da ce mi bilo ko odgovoriti, pa nisam ni pratio toliko.
Kazite mi bar da li je ovaj kod uredu i ako nije, sta trebam da ispravim?
Hvala na svim odgovorima, i na svemu.
[ mr.jelenko @ 22.01.2013. 22:42 ] @
Nije mi jasno ovo sto se tice preskalera, tj frekvencije na kojoj radi kontroler.
bits tmr0
000 1:2
001 1:4
010 1:8
....
Mislio sam da je u mom slucaju potrebno podesiti da bude 1:2?
Ako moze i tu malo pojasnjenje posto nisam bas razumeio i ako sam procitao neke strucne tekstove... :D
Interapt koliko sam razumeo ubacen je ako dodje do prekoracenja tmr0 brojaca.
Hvala
[ mr.jelenko @ 23.01.2013. 16:58 ] @
Mislim da bi ovaj kod trebao biti u redu, i da je dosta toga nepotrebno u gore datom kodu, ispravite me ako gresim. Hvala na svemu
; Program za realizaciju zvuka iste frekvencije a razlicite duzine
;
; Pritiskom na taster 1 PORTB0 proizvodi se zvuk duzine 1/32 s
; Pritiskom na taster 2 PORTB1 proizvodi se zvuk duzine 1/16 s
; Pritiskom na taster 3 PORTB2 proizvodi se zvuk duzine 1/8 s
; Pritiskom na taster 4 PORTB3 proizvodi se zvuk duzine 1/4 s
; Pritiskom na taster 5 PORTB4 proizvodi se zvuk duzine 1/2 s
; Pritiskom na taster 6 PORTB5 proizvodi se zvuk duzine 1 s
; PORTA4 izlaz na zvucnik
#include "p16f84.inc" ; inicijalizaija procesora koji ce se koristiti
processor 16f84
BROJAC1 equ 0x20 ; dodeljivanje memorijskih lokacija
BR equ 0x21
STANJE equ 0x22
TEMP equ 0x23 ; promenljivama
goto inicijalizacija
org 0x04
goto int
org 0x20
inicijalizacija ; inicijalizacija
clrf PORTA
clrf PORTB
clrf BROJAC1
clrf BR
clrf STANJE
clrf TEMP
bsf STATUS,RP0 ; prebaciti se u banku 1 memorije
movlw b'00111111' ; definisanje ulaznih pinova PORTAB
movwf TRISB ; nazivi registara pisu se velikim slovom
movlw b'00000000' ; definisanje da je PORTA,4 izlazni
movwf TRISA
bcf STATUS,RP0 ; vratiti se iz banke 1 memorije
movlw b'10100000' ; omogucavanje interapta u INTCON registru
movwf INTCON ; vrednost prebaciti iz akumulatora u registar
bsf STATUS,RP0 ; prebaciti se u banku 1 memorije
movlw b'00000000' ; postavljanje preskalera na 1:2
movwf OPTION_REG ; i prebacivanje u OPTION registar
bcf STATUS,RP0 ; vratiti se iz banke 1 memorije
Pocetak0 ; start glavnog programa
btfsc PORTB,0 ; provera da li je pritisnut prvi taster
goto Duzina0 ; skoci na prvu duzinu
bcf STANJE,0 ; resetuj prvi bit promenljive STANJE
Pocetak1
btfsc PORTB,1 ; provera da li je pritisnut drugi taster
goto Duzina1 ; skoci na drugu duzinu
bcf STANJE,1 ; resetuj drugi bit promenljive STANJE
Pocetak2
btfsc PORTB,2 ; provera da li je pritisnut treci taster
goto Duzina2 ; skoci na trecu duzinu
bcf STANJE,2 ; resetuj treci bit promenljive STANJE
Pocetak3
btfsc PORTB,3 ; provera da li je pritisnut cetvrti taster
goto Duzina3 ; skoci na cetvrtu duzinu
bcf STANJE,3 ; resetuj cetvrti bit promenljive STANJE
Pocetak4
btfsc PORTB,4 ; provera da li je pritisnut peti taster
goto Duzina4 ; skoci na petu duzinu
bcf STANJE,4 ; resetuj peti bit promenljive STANJE
Pocetak5
btfsc PORTB,5 ; provera da li je pritisnut sesti taster
goto Duzina5 ; skoci na sestu duzinu
bcf STANJE,5 ; resetuj sesti bit promenljive STANJE
clrf PORTA
goto Pocetak0 ; idi na pocetak
Duzina0 ; 0.032 sec.
btfss STANJE,0 ; proverava da li je taster bio pritisnut
call Vreme ; poziva podprogram za trajanje zvuka od 32 ms
bcf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,0 ; setuje prvi bit u promenljivoj STANJE
goto Pocetak0 ; idi na Pocetak0
Duzina1 ; 0.064 sec.
movlw b'00000010' ; upisuje 2 u akumulator
movwf BR ; upisi 2 u promenljivu BR
Poc1
btfss STANJE,1 ; proverava da li je taster bio pritisnut
call Vreme ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc1 ; idi na labelu Poc1
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,1 ; setuje drugi bit u promenljivoj STANJE
goto Pocetak1 ; idi na Pocetak1
Duzina2 ; 0.128 sec.
movlw b'00000100' ; upisuje 4 u akumulator
movwf BR ; upisi 4 u promenljivu BR
Poc2
btfss STANJE,2 ; proverava da li je taster bio pritisnut
call Vreme ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc2 ; idi na labelu Poc2
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,2 ; setuje treci bit u promenljivoj STANJE
goto Pocetak2 ; idi na Pocetak2
Duzina3 ; 0.256 sec.
movlw b'00001000' ; upisuje 8 u akumulator
movwf BR ; upisi 8 u promenljivu BR
Poc3
btfss STANJE,3 ; proverava da li je cetvrti taster bio pritisnut
call Vreme ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc3 ; idi na labelu Poc3
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,3 ; setuje cetvrti bit u promenljivoj STANJE
goto Pocetak3 ; idi na Pocetak3
Duzina4 ;0.62 sec.
movlw b'00010000' ; upisuje 16 u akumulator
movwf BR ; upisi 16 u promenljivu BR
Poc4
btfss STANJE,4 ; proverava da li je peti taster bio pritisnut
call Vreme ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc4 ; idi na labelu Poc4
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,4 ; setuje peti bit u promenljivoj STANJE
goto Pocetak4 ; idi na Pocetak4
Duzina5 ; 1.24 sec.
movlw b'00100000' ; upisuje 32 u akumulator
movwf BR ; upisi 32 u promenljivu BR
Poc5
btfss STANJE,5 ; proverava da li je taster bio pritisnut
call Vreme ; poziva podprogram za trajanje zvuka od 32 ms
decfsz BR ; umanji BR za 1 ako je 0 preskoci sledeci red
goto Poc5 ; idi na labelu Poc5
bsf PORTA,4 ; kraj signala za izlaz na zvucnik
bsf STANJE,5 ; setuje sesti bit u promenljivoj STANJE
goto Pocetak5 ; idi na Pocetak5
int
bcf INTCON, GIE
movwf TEMP ; upisi sadrzaj akumulatora u TEMP
movlw 0x82 ; upisi 130 u akumulator
movwf TMR0 ; upisi 130 iz akumulatora u TMR0
bcf INTCON,T0IF ; resetuj bit u registru INTCON
btfss PORTA,4 ; provera da li je PORTA,4 na 1 ako jeste preskoci sledeci red
goto Aset ; idi na Aset
bcf PORTA,4 ; resetuj promenljivu PORTA,4
goto endint ; idi na endint
Aset
bsf PORTA,4 ; setuje PORTA,4 ako nije setovan
endint
movf TEMP,0 ; vrati sadrzaj iz TEMP u akumulator
bsf INTCON, GIE
retfie
Vreme
pet
movlw b'00111110'
movwf BROJAC1
decfsz BROJAC1,1
goto pet
return
; konfiguraciona rec
__config B'11111111110001' ; nema zastite koda, powerup dozvoljeno,
; wd iskljucen, xt oscilator
end ; kraj programa
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|