Uživatel:Korbekar

Z MAM wiki

Přejít na: navigace, hledání

Obsah

[editovat] Karel Körber

Odmalička mi říkají Karle, zatím se mi neměnilo ani příjmení - Körber. Do mikroprocesorů moc nedělám, víc mne berou počítačové systémy a hlavně ZVUK.

Moje webovky!

Ale jinak jsem už zkoušel programovat PIC16F84, je to legrace a občas to blikalo a občas ne.

Semestrální práce - Komunikace po sběrnici RS485 - světla DMX

[editovat] klávesnice

zdroják ke klávesnici Klávesnice, Verze 2

[editovat] ventík

ventilátor ver0

[editovat] Okomentovaná PWM

Je to skoro jako pohádka, ale co na tom! Třeba kluci co nestíhaj na to mrknou a pochopí to úplně přesně. Natavení timerů pro slušnou PWM Pdf File Pak už jen stačí do R18 a R19 zadávat nějakej rozumnej výstup z klávesnice


	.EQU DDRB  =  $17
	.EQU PORTB =  $18

	.EQU LED1 =  0; PB0 je výstup
	
	.EQU DDRC  =  $14
	.EQU PORTC =  $15
	.EQU PINC  =  $13

	.EQU DDRD  =  $11
	.EQU PORTD =  $12
	.EQU PIND  =  $10


START:
	
	SBI DDRB,  LED1; PortB0 = výstupni
	SBI PORTB, LED1; rozsvit LED ku

;Resetovací sekvence

	LDI R17, 1 ; na začátku nastavíme počítadlo na jedna
	LDI R18, 1 ; a zapamatujem si odkud vždycky počítáme
	
	LDI R16, 254 ; na začátku nastavíme odčítadlo na max R17+R16 = 255
	LDI R19, 254 ; a zapametame si odkial počitáme

ZNOVU:
	MOV R17, R18 ; zapamatované výchozí smyčky
	MOV R16, R19 ; uložíme pro svícení/nesvícení
	
SVIT: 
	INC R17		    ; přičteme jedničku k rozsvícenému počítadlu,
	SBI PORTB, LED1 ; rozsvítíme,
	BRNE SVIT       ; a jestli jsme nepřetekli, tak skok na SVIT

	MOV R22, R18 ; tohle je jenom prodloužení 
POCKEJ:
	INC R22     ;  přičteme jedničku
	BRNE POCKEJ ;  a buď přeteče a bude pokračovat, nebo POCKEJ
	
; tady se objeví sestupná hrana signálu na výstupní PB0
NESVIT:
	
	INC R16			; přišti jedničku ke zhasnutému počítadlu
	CBI PORTB, LED1	; zhasni (vypni větrák)
	BRNE NESVIT		; no a až přetečeš, pokračuj dál (na začátku už po jednom taktu)


	INC R18; přičtem 1 k počítadlu  - pocitadlo ON
	DEC R19; odečtem 1 od počítadla - pocitadlo OFF


	RJMP ZNOVU ; prošli jsme jednu periodu a teď to celé zkusíme znovu
	

Co jsem ještě zapomněl vysvětlit jsou jednotlivé příkazy a hlavně BRNE:

Pokud do nějakého registru (R16 třeba) přičítáte (INC R5) = "zvyšit R5 o jedna", dosáhnete maxima a ještě přičtete jedničku, bude to 255+1 = 0, a na ten jeden cyklus se nastaví "přetečení" (Z = 1). BRNE ADRESA = "pokud nastalo přetečení Z, jdi na adresu ADRESA". LDI REGISTR, HODNOTA = zapisuje přímo hodnotu do registru MOV R_CIL, R_ZDROJ = přemisťuje registr (ne všechny registry jsou přístupné totiž přímo) Segmentovka v C

[editovat] úkol v Céčku

Stmívání dveří napsané v Céčku, s AD převodníkem

Osobní nástroje