program

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

program

#1 Příspěvek od paycz »

Ahoj, učím se programovat a udělal jsem si jednoduchý program na spínání led pomocí jednoho tlačítka a potřebuji aby mě někdo řekl co mám špatně nebo jestli to má smysl :D

Kód: Vybrat vše

LIST P=16F84
INCLUDE<P16F84.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _RC_OSC

#DEFINE VYSTUP	PORTA,3
#DEFINE VYSTUP1	PORTA,1
#DEFINE VYSTUP2	PORTA,2
#DEFINE TLAC	PORTA,0		
			
		BSF		STATUS,RP0
		MOVLW	B'00000001'
		MOVWF	TRISA
		BCF		STATUS,RP0
		BCF		VYSTUP

START	BTFSS	TLAC
		GOTO	$-1
		BSF		VYSTUP
		BSF		VYSTUP1
		BSF		VYSTUP2
		NOP
	
		BTFSS	TLAC
		GOTO	$-1
		BCF		VYSTUP
		BCF		VYSTUP1
		BCF		VYSTUP2
		NOP
		GOTO	REZ1

REZ1	BSF		VYSTUP
		BSF		VYSTUP1
	
		BTFSS	TLAC
		GOTO	$-1
		BCF		VYSTUP
		BCF		VYSTUP1
			
		
		GOTO	START
	
		END
		

		
Naposledy upravil(a) paycz dne 26 led 2015, 20:39, celkem upraveno 1 x.

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#2 Příspěvek od MiloPS3 »

Cau,
1) kod se dava do "Code" !
2)mas tam pull-down ?
3)kdyz stisknes tlacitko tak se program otoci tolikrat,ze se ti z toho zamota hlava
4)pro zacatek by to chtelo malej delay za to nastavovani vystupu
5) a kdyz uz sem das kod do "Code" tak je vhodne napsat co to dela a jak se to chova..
6)procesor ti bezi ?

Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#3 Příspěvek od paycz »

MiloPS3 píše:Cau,
1) kod se dava do "Code" !
2)mas tam pull-down ?
3)kdyz stisknes tlacitko tak se program otoci tolikrat,ze se ti z toho zamota hlava
4)pro zacatek by to chtelo malej delay za to nastavovani vystupu
5) a kdyz uz sem das kod do "Code" tak je vhodne napsat co to dela a jak se to chova..
6)procesor ti bezi ?
1OK
2Nevím co tím myslíš :D
4 bohužel nevím jak NOP je krátkej
5 ok
6 dal jsem to do real pic sim sice občas program nereaguje na button ale nejspíš to bude simulátorem :D
PS. 6) tlačítko nevynechává procesor na jeden klik to sjede tak 5x :D

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#4 Příspěvek od MiloPS3 »

pull-downObrázek pokud ho tam nemas tak to bude delat prasarny ...,skus si dohledet proc
NOP- jak je dlouhej se dozvis z DS
delay-mel sem na mysli cekaci smycku,pouze s NOPama by to bylo ale zajimavy ... 8-)
no prave po sepnuti tlacitka se ti to otoci nekolikrat, proto tam tu cekaci smycku, nebo pockej na rozepnuti tlacitka ale to by si musel zase osetrit zakmity tlacitka !

PS: tet sem nasel docela zajimavy cteni http://www.asix.cz/download/museum/othe ... krokem.pdf

Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#5 Příspěvek od paycz »

tak to stačit dat že když stisknu tlačítko tak to skočí na další funkci který bude dělat opak
BTFSS TLAC
BTFSC TLAC

Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#6 Příspěvek od paycz »

díky za pomoc konečně sem si doplnil věci které sem z knížek nepochopil :D
první program plně funkční :D

Kód: Vybrat vše

LIST P=16F84
INCLUDE<P16F84.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _RC_OSC

#DEFINE VYSTUP	PORTA,3
#DEFINE VYSTUP1	PORTA,1
#DEFINE VYSTUP2	PORTA,2
#DEFINE TLAC	PORTA,0		
			
		org	00h		; na prvni pozici v pameti bude toto GOTO
		GOTO	START

START
		BSF		STATUS,RP0
		MOVLW	B'00000001'
		MOVWF	TRISA
		BCF		STATUS,RP0
		BCF		VYSTUP

		BTFSS	TLAC
		GOTO	$-1
		BTFSC	TLAC
		GOTO	$-1
		BSF		VYSTUP
		BSF		VYSTUP1
		BSF		VYSTUP2
		NOP
	
		BTFSS	TLAC
		GOTO	$-1
		BTFSC	TLAC
		GOTO	$-1
		BCF		VYSTUP
		BCF		VYSTUP1
		BCF		VYSTUP2
		NOP
		GOTO	REZ1

REZ1	BSF		VYSTUP
		BSF		VYSTUP1
	
		BTFSS	TLAC
		GOTO	$-1
		BTFSC	TLAC
		GOTO	$-1
		BCF		VYSTUP
		BCF		VYSTUP1
			
		
		GOTO	START
	
		END
		

		

Uživatelský avatar
MiloPS3
Příspěvky: 259
Registrován: 07 srp 2010, 02:00

#7 Příspěvek od MiloPS3 »

Tak to mas asi dobry tlacitko. Neber to snimani tlacitka jako 100% a spravne, je to jen na zacatek

hakamusai
Příspěvky: 943
Registrován: 17 dub 2007, 02:00

#8 Příspěvek od hakamusai »

paycz > ten program je hodně divokej.Takhle to neřeš. Pokud inicializuješ HW procesoru ,tak není třeba opakovat za běhu.Koukni do tý příručky ASIX,je to tam dobře popsaný.

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#9 Příspěvek od Atlan »

Len pozor na RMW problem, aby sa ti to nevypomstilo.

Uživatelský avatar
kulikus
Příspěvky: 2484
Registrován: 10 pro 2009, 01:00
Kontaktovat uživatele:

#10 Příspěvek od kulikus »

paycz píše:tak to stačit dat že když stisknu tlačítko tak to skočí na další funkci který bude dělat opak
BTFSS TLAC
BTFSC TLAC
Protože kontakt tlačítka několikrát odskočí/zakmitá, je dobré dát mezi ty dva řádky programu prodlevu asi 20ms - smyčku.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“