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: 283
Registrován: 13 říj 2014, 00: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: 279
Registrován: 07 srp 2010, 00: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: 283
Registrován: 13 říj 2014, 00: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: 279
Registrován: 07 srp 2010, 00: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 www.asix.cz/download/museum/other/pic_k ... krokem.pdf
Uživatelský avatar
paycz
Příspěvky: 283
Registrován: 13 říj 2014, 00: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: 283
Registrován: 13 říj 2014, 00: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: 279
Registrován: 07 srp 2010, 00: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: 939
Registrován: 17 dub 2007, 00: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: 4514
Registrován: 10 kvě 2004, 00: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: 3261
Registrován: 10 pro 2009, 00: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ů“