PIC16F628A-casovac

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

Moderátor: Moderátoři

Zpráva
Autor
hakamusai
Příspěvky: 939
Registrován: 17 dub 2007, 00:00

#16 Příspěvek od hakamusai »

Se zdrojákem se netajím.Snažil jsem se pouze pomoci rychle vyřešit záležitost. Tazatel nenapsal v čem programuje.To bylo jedním z důvodů,proč jsem nedal zdroják.Jde to napsat x způsoby.Jedná se pouze o blikání LED (kontrolní funkce),tak na přesnosti nijak nezáleží (vypustil jsem timer).

Můj zdroják vypadá takto:

Kód: Vybrat vše

program Timing;

{ Declarations section }
// 16F628A 4MHz internal

var
  i:byte;

procedure  Zap_Vyp20s();
begin
  for i:=0 to 19 do
   begin
    RA1_bit:=not RA1_bit;
    Delay_ms(1000);
   end;
end;

procedure  Cekej_100s();
begin
  RA1_bit:=0;
   for i:=0 to 99 do
   begin
    Delay_ms(1000);
   end;
end;

begin
  { Main program }

  CMCON:=7;    //Komparatory vypnuty
  TRISA:=0;     // vše IO výstup
  PORTA:=0;    // PORTA v log 0.
  TRISB:=0;     //vše IO výstup
  PORTB:=0;    // PORTB v log 0.
 
  //-Vystup sa zapne a bude sa zapinat/vypinat v sekundovych intervaloch po dobu 20 sekund
  Zap_Vyp20s;

   //-Vystup sa na 100 sekund vypne
   Cekej_100s;

   //-Vystup sa zapne a bude sa zapinat/vypinat v sekundovych intervaloch po dobu 20 sekund
  Zap_Vyp20s;

   //-Vystup sa vypne
   RA1_bit:=0;

   While true do nop; //čeká se na reset procesoru
   
end.


Po zjednodušení:

Kód: Vybrat vše

:020000003628A0
:1000060083120313A001023085060630FB0013306D
:10001600FC00AD30FD00FD0B0E28FC0B0E28FB0B83
:100026000E28000000002008133A03191C28A00A15
:040036000628080090
:10003A00831203138510A0010630FB001330FC0065
:10004A00AD30FD00FD0B2728FC0B2728FB0B2728CA
:10005A00000000002008633A03193528A00A212865
:02006A0008008C
:10006C000730831203139F008316850183128501C9
:10007C00831686018312860103201D200320851020
:06008C0000004628482890
:02400E00582137
:00000001FF
Uživatelský avatar
Jeejda_teda_puvodne
Příspěvky: 142
Registrován: 08 dub 2012, 00:00

#17 Příspěvek od Jeejda_teda_puvodne »

Naposledy upravil(a) Jeejda_teda_puvodne dne 25 říj 2016, 13:51, celkem upraveno 1 x.
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#18 Příspěvek od MiloPS3 »

Ty vsak pises ze ,DELAY existuje.Asi mi nieco unika...
ne neunika :P kdyz si to napises tak tam ten delay muzes mit :lol:

Kód: Vybrat vše

   LIST P=16F628A, R = DEC
   #include P16F628A.INC
   __CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _INTRC_OSC_NOCLKOUT
;*******************************************
   #DEFINE   LED   PORTA,1      
;*******************************************
   CBLOCK 0x30
   count1   
   count2   
   count3   
   DVACET
   STO
   ENDC
;*******************************************
   ORG    H'0000' 
   GOTO   init
;********************CEKANI 1.007081 s
DELAY         ;RETURN
            movlw   0x13      ;FF-50S   / 01-12uS
            movwf   count3
         r3   movlw   0xC8      ;FF       / 01
            movwf   count1
         r1   movlw   0x57      ;FF       / 01
            movwf   count2
         r2   decfsz   count2,f
            goto   r2
            decfsz   count1,f
            goto   r1
            decfsz   count3,f
            goto   r3
         
            RETURN
;********************ON 20S OFF 20S
DVACETs         movlw   0X0A
            MOVWF   DVACET
DVACETs1      BSF      LED
            CALL   DELAY      
            BCF      LED
            CALL   DELAY      
            DECFSZ   DVACET,F
            GOTO   DVACETs1
            RETURN
;********************OFF 100S
STOs         movlw   0X64
            MOVWF   STO
STOs1         CALL   DELAY      
            DECFSZ   STO,F
            GOTO   STOs1
            RETURN
;********************
init      nop
         BANKSEL   CMCON
         MOVLW   B'00000111'   
         MOVWF   CMCON
         BANKSEL   PORTA
         MOVLW   B'00000000'
         MOVWF   PORTA
         BANKSEL   TRISA
         MOVLW   B'00000001'
         MOVWF   TRISA
         BANKSEL   PORTA
      
START      CALL   DVACETs
         CALL   STOs
         CALL   DVACETs
         CALL   STOs
         NOP
         GOTO   $




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

#19 Příspěvek od hakamusai »

Jeejda píše:Promiň, ale to není pravda...

Pravda,pardon. Já na ten pandatron nekoukal.Psát se to dá v čemkoli.Záleží jen komu co víc vyhovuje.Nejčistší je to jednoznačně v asm.
Uživatelský avatar
dudo02
Příspěvky: 1003
Registrován: 27 úno 2007, 00:00

#20 Příspěvek od dudo02 »

Ok dakujem-,tak zhruba som to pochopil.
No dalsie co mi nie je jasne ,ako spravit nasledujuce:

PORT A1-vykona sa program"DVACET"
PORT A2-vykona sa program "DVACET"a "STO"

Ako priklad uvediem rozblikanie dvoch LED sucasne,ale nezavisle na sebe.
Uživatelský avatar
dudo02
Příspěvky: 1003
Registrován: 27 úno 2007, 00:00

#21 Příspěvek od dudo02 »

Tak prestudoval som si cely serial Mikrokontrolery PIC od p.Špringla z AR PE-mimochodom je cely spojeny do jedneho PDF a hodeny na upload.
Aj tak neviem prist na to ako ako spravit nasledujuce.
Priklad:
POTRA1-LED1 blika v 1sec.intervaloch
POTRA2-LED 2 blika v 5sec.intervaloch
PORTA3.......

Jednu LED rozblikat v roznych inervaloch som pochopil ,ale ako procesor spracovava viac "vlakien"subezne mi ostava zahadou :? .
Pomoze mi niekto?
Uživatelský avatar
MiloPS3
Příspěvky: 279
Registrován: 07 srp 2010, 00:00

#22 Příspěvek od MiloPS3 »

asi takle: zvolis si nejakj casovej interval co je vhodnej pro vsechny casy, priklad: cas 3,4,5,6,7,8 sekund, -> 1 sekunda, co cas to 2 promeny , pri uplinuti 1sekundy prictes 1 do 1 od kazdy promeny, v 2 promeny mas ulozeny kolik tech casovejch intervalu(1s) je treba ,a pak ty promeny porovnavas a pri schode provedes akci a zaroven vynulujes tu promenou ktera se pricita pri uplinuti casoveho intervalu...,
Odpovědět

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