Elektronická hrací kostka

Ten je tam z důvodu zajištění klidové úrovně L na tlačítku.

Můžeš tu smyčku třeba zkrátit.

[code]
MOVLW B’00000001’ ; zde se postupne na PORTB ukladaji tyto binarni hodnoty
MOVWF PORTB
ZNOVU

RLF		PORTB,f
btfsc   STATUS,C
goto	$-2
CALL	CEKEJ
GOTO	ZNOVU[/code]

Mám pár nejasnosti : Rozdělení registru.když se pokusím připojit diodu na vývod RA1 tak mám použít banku 0 port a nebo banku 1 trisa .To je jako 0 zavřeny 1 otevřený nebo se použivá jiná adresa . Jak mám poznat do jaké adresy co ukládat.

TRIS je na nastavení vstup - 1, nebo výstup - 0
PORTx - 0 je L, 1 je H

Tak jsem chtěl pro začátek jen rozsvítit diodu na vyvodu R1A a ona mě sviti na všech .Zapojil jsem jí rezistor diodu a zem.
pokus.asm (243 Bytes)

Jsou věci, které by se měli dodržet. INIT procesoru, bez toho se asi neobejdeš. A program by měl někde končit a ne dojet na konec paměti a po resetu, co jiného mu zbude, zase od začátku. Příkaz GOTO $ zůstane stát na tomto řádku.

On se totiž procesor asi tak rychle resetuje, že svítí všechny. :smiley:

Chtěl bych se zeptat na vyvojové prostředí MPLAB: když spustím program tak bych chtěl vidět co se děje uvnitř procesoru a jestli se dá krokovat program.

V položce Debugger/Select Tool zvol MPLAB SIM. Musíš mít pochopitelně nastaveno správně Configure/Select device na typ PIC.
Pak můžeš simulovat běh programu, po krocích nebo s pomocí breakpointů.
Pomocí View/Watch si můžeš zobrazit libovolný registr PIC při break nebo při krokování.
Další možnost je v případě, že máš ICD2 nebo PicKit2 a PIC, který má interní debugging. Pak můžeš krokovat a používat break v reálném zapojení s PIC.

Když dam Debugger/Select Tool zvol MPLAB SIM a nastavim procesor a dám Run tak dole jen cosi načitá running… a pořád to načitá dokola.

Pokud pustíš RUN, tak žádnou akci procesoru neuvidíš, protože procesor jede plnou rychlostí. Jedinou změnu uvidíš, až program zastavíš nebo až se program zastaví na breaku. F7 - budeš krokovat program příkaz po příkazu, pak uvidíš, co se v procesoru děje.

Tak jsem to ukončil příkazem GOTO $ a stejně to svítí na každým vývodu , co tam mám špatně .
pokus.asm (578 Bytes)

Zkus před příkazem

BSF	PORTB,LED	;Nastavení RB0 do log 1

vynulovat PORTB

CLRF  PORTB

V první řadě musíš procesor nastavit. Třeba nějak takhle.

[code];************************ Inicializace procesoru *************************

INIT movlw b’00000’
movwf PORTA
movlw b’00000000’
movwf PORTB
;AD OFF
movlw b’00000111’ ; digitalni vstupy na PORTu A (PIC16F627 a 628)
movwf CMCON
; ------------------------
; bcf STATUS,RP1
bsf STATUS,RP0 ; banka registru 1
movlw b’00001’ ; portA 4-0, 1vstupy,4vystupy
movwf TRISA

movlw	b'11010100'	; PULL-UPy OFF, preddelic=1:32 pripojen k TMR0
movwf	OPTION_REG	; f:4  :32  :256 = 122,1Hz (8,192ms)
movlw	b'00000000'	; portB 7-0, 0*vstupy, 7*vystupy
movwf	TRISB

bcf	STATUS,RP0	; banka registru 0

; ------------------------
; movlw b’10100000’ ; povolena všechna přerušení a od přetečení TMR0
; movwf INTCON

; bsf INTCON,TOIE ; 1=povoleno přerušení při přetečení TMR0
; bsf INTCON,INTE ; 1=povoleno přerušení z portu RB0/INT
; bsf INTCON,GIE ; 1=povolena všechna nemaskovaná přerušení
[/code]
protože třeba PORTA jsou po resetu nastaveny jako AD převodníky.

A všechny vývody, kromě RA0, jsou teď v LOG 0. BSF PORTB,LED
Příkaz BSF ti nastaví příslušný vývod do LOG 1, teď port RB0.

Tady máš zakladní nastavení procesoru a popis, co se děje, když tam dopíšeš co chceš, tak by ti to mohlo fungovat.

Tak už se v tom nevyznám . Ta inicializace procesoru se dělá před programovani nebo je to součástí mého programu .

Inicializace je pochopitelně součástí programu. Pod tímto pojmem rozuměj nastavení registrů, které ovlivňují činnost procesoru. Je to třeba určení, které porty jsou vstupní a které výstupní pomocí registru TRIS. Další je třaba zapnutí AD převodníku apod. Některé periferie jsou po resetu defaultně zapnuty, některé vypnuty. Pokud chceš například používat některou bránu jako digitální vstup/výstup, musíš obvykle v registru ANSEL vypnout analogovou funkci. Podobně je to s analogovým komparátorem, který je často také nutno vypnou. Určuješ také například jestli bude povoleno přerušení a od kterého zdroje. Všechny tyto informace najdeš v datasheetu. Tam je napsáno, jak se po resetu nastaví jednotlivé registry, co je zapnuto a co vypnuto. Například předdělička je po resetu vždy připojena k WDT, i když je WDT vypnuto konfiguračním slovem. Když ji chceš použít s TMR0, tak ji musíš přepnout pomocí bitu v OPTION_REG.¨

Mimochodem, ten tvůj program “pokus” by měl být funkční, pokud tam nemáš někde zkrat. Po resetu se ale nenulují PORTA, PORTB. Proto je opravdu vhodné udělat napřed clear PORTB, jak bylo již řečeno.

Chtěl bych si koupit Voltmetr, Ampérmetr poradíte jaký pro začátek jestli se to da koupit v jednom jestli digitalni nebo analogoví nebo kleštový.Dík

Pro začátek ti bude stačit určitě třeba tenhle multimetr: gme.cz/cz/index.php?page=pro … il=722-264

Analogový přístroj ani klešťový ampérmetr pro tebe nemají valný význam.

CHtěl jsem střídavý proud z trafa 220V na 17V zkoušet usměrňovat prostě jen pokusi .Jen bych se chtěl zeptat , když jsem 17 V propojil můstkovým usměrňovačem proč se mě na vývodech plus a minus napětí zvetšílo na 33,5V ? Já myslel že tam bude pořád těch 17V. Čim to teda je?

Pokud usměrníš střídavé napětí, tak se jeho efektivní hodnota nezmění. Správně bys tedy měl naměřit napětí stejné, pokud nepoužiješ filtrační kondenzátor. Problém je asi v měřáku. Ten tvůj nejspíš pro měření střídavého napětí používá jednocestný usměrňovač.

Zdravím všechny
Hrozně dlouho jsem tu nebyl nezbývalo mě moc času. Moc jsem se dopředu neposunul s tým asemblerem pro pic .Našel jsem knihu bity do bytu je pěkně napsaná . Ale nevým jestli to můžu použít i pro pic jestli to není jen pro asembler. Ještě jsem našel na internetu youtube.com/watch?v=dviLoLkEQrk .Ten program je myslím napsaný v cečku , šlo by to i pro asembler nebo je to lepší zapojit na kontaktní pole ?

Cau, to co si nasel je docela zajimava vec :bulb: , ten program mel priponu .BAS , takze asi bascom, a do toho “proteus design suite” nahraval HEX takze by tam nemel bejt problem , ASM ,C ci neco jinyho, chtel sem to hned prudnout ale nenasel sem to jako FREE

EDIT: uz sosam,skusim az zejtra , ja to mam na dlouho