forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
PIC16f28A - Počítaní nul na vstupech

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
michal6996
Nováček
Nováček


Založen: 15.11.2016
Příspěvky: 7

PříspěvekZaslal: 15 listopad 2016, 23:03    Předmět: PIC16f28A - Počítaní nul na vstupech Citovat

Ahoj napsal jsem program, který má spočítat nuly na vstupech RA0 až RA3 a podle toho určit jestli se vypíšou všude na PORTB( RB0 až RB7) nuly nebo jedničky. (Když tam jsou 4 nuly tak je všude 1 na PORTB, když jich je méně tak 0)
Na vstupech RA0 až RA3 mám tlačítka, po zmáčknutí tam přivedu 5V(logická 1) jelikož ubude nula tak by se měly objevit na PORTB (RB0 až RB7) všude nuly.
V emulaci MPLAB program funguje(musím na RB0 až RB3 nuly a jedničky natavit ručně), ale po nahrátí na čip se nic neděje.


Nevím kde je chyba a prosím o pomoc.




kód:
LIST P=16F628A
   INCLUDE<P16F628A.INC>
   __CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _INTRC_OSC_NOCLKOUT

RAMOFF EQU 0X0C
NULY EQU RAMOFF+5   
ORG 0X00

BNK0 MACRO
  BCF STATUS,RP0
  BCF STATUS,RP1
  ENDM

  BNK1 MACRO   
  BSF STATUS,RP0
  BCF STATUS,RP1
  ENDM
   
BNK1                       
MOVLW B'11111111'         
MOVWF TRISA               
 MOVLW B'00000000'         
MOVWF TRISB               
                           
BNK0                           
 NOP                                 
 NOP
 NOP   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
START

MOVLW 0                                ;Vynuluji nuly
MOVWF NULY
; Počítání nul ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BTFSC PORTA,0
GOTO $+2
INCF NULY

BTFSC PORTA,1
GOTO $+2
INCF NULY

BTFSC PORTA,2
GOTO $+2
INCF NULY

BTFSC PORTA,3
GOTO $+2
INCF NULY
;................................................................................
;Když budou 4 nuly na PORTA (0 až 3) tak dám všude na PORTB jedničky, když jich bude míň bude na PORTB všude nula
MOVLW 3
SUBWF NULY       

DECFSZ   NULY
CALL DAL
MOVLW B'11111111'
MOVWF PORTB
GOTO START
DAL
MOVLW B'00000000'
MOVWF PORTB


GOTO START

END
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 15 listopad 2016, 23:59    Předmět: Citovat

Jínými slovy se po tobě chce emulovat čtyřvstupové NAND hradlo? Použij odpovídající logické instrukce.
Návrat nahoru
 

 
michal6996
Nováček
Nováček


Založen: 15.11.2016
Příspěvky: 7

PříspěvekZaslal: 16 listopad 2016, 11:31    Předmět: PIC16f28A - Počítaní nul na vstupech Citovat

Ano dalo by se to udělat pomocí jiných aritmetických a logických operací, ale v nich není problém- to se dá zkontrolovat pomocí MPLAB emulátoru.

Myslím že by mohl být problém bud v konfiguraci PIC nebo v počítání nul. Tam totiž nevím jak to v realu funguje.
Čtu takto správně port?
kód:
BTFSC PORTA,0 ; kontrola nuly - pokud tam je přeskočí řádek a přičte jedna k proměnné nuly
GOTO $+2  ; skoč o dva řádky dál a tím přeskoč přičtení nuly INCF NULY
INCF NULY




Tak mám zapojena tlačítka na nepájivém poly.
Předpokládám že když nemám zmáčknuté žádné tlačítko tak na portech RA0 až RA1 je všude nula.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
B0sc0
Profesionál
Profesionál


Založen: 28.1.2011
Příspěvky: 213
Bydliště: Absurdistán nebo Banánová republika

PříspěvekZaslal: 16 listopad 2016, 17:57    Předmět: Citovat

Podle mě, když není sepnuté tlačítko, tak na vstupu je kdo ví co.
Dej ještě mezi vstup a zem radši odpor.
Takto
https://www.google.cz/search?q=tlačítko+odpor+schema&client=opera&hs=NiP&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjkgfXb0q3QAhUBRhQKHb8-CKYQ_AUICCgB&biw=1366&bih=630#imgrc=VpOVN3oKwhJ6vM%3A


A co se týče PICky, zkoušel jsi s LEDkama blikat?

_________________
MPLAB + HI-TECH + PICKIT2
Zatím jenom amatér Smile a asi i navždy :-/
SMT technolog+vše okolo LED modulů


Naposledy upravil B0sc0 dne 16 listopad 2016, 18:02, celkově upraveno 1 krát.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 882
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 16 listopad 2016, 18:00    Předmět: Re: PIC16f28A - Počítaní nul na vstupech Citovat

michal6996 napsal:

Předpokládám že když nemám zmáčknuté žádné tlačítko tak na portech RA0 až RA1 je všude nula.
ne,viz FIGURE 5-1
jak pripojit tlacitko k mcu

za dalsi pokud je na pinu vice periferii je NUTNE si v DS zjistit jestly je periferie zapla/vypla po zapnuti..

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Balů
Profesionál
Profesionál


Založen: 29.10.2012
Příspěvky: 708

PříspěvekZaslal: 16 listopad 2016, 19:21    Předmět: Citovat

A proč to děláš tak složitě ? Načtu port, vymaskuju žádaný bity, zkontroluju, jestli je výsledek 0x00.

Ano = jsou tam 4 nuly = pošlu na port B 0xFF
Ne = je mezi nima nějaká jednička = pošlu na port B 0x00

Vzhledem k tomu, že je to domácí úloha, tak si to přelož do ASM sám.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
michal6996
Nováček
Nováček


Založen: 15.11.2016
Příspěvky: 7

PříspěvekZaslal: 17 listopad 2016, 16:04    Předmět: Citovat

Děkuji za vaše rady, bylo to tím zapojením tlačítka , chtělo to ten odpor.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Kolemjdoucí
Anonymní





PříspěvekZaslal: 17 listopad 2016, 18:31    Předmět: Citovat

Jeden tip: Pokud PICy mají/umí zapnout vnitřní pull-up odpory, je mnohem jednodušší je aktivovat, zapojit tlačítka proti GND a použít negativní (nebo také inverzní) logiku. Výhodou je pak jednodušší DPS.
Návrat nahoru
 

 
Anonymní






PříspěvekZaslal: 17 listopad 2016, 20:29    Předmět: Citovat

Balů: To už jsem mu přeci taky radil, hned v následujícím příspěvku to odmítl. Nech ho být, evidentně vůbec nepochopil co se po něm chce a jaký má ten úkol význam.
Návrat nahoru
 

 
michal6996
Nováček
Nováček


Založen: 15.11.2016
Příspěvky: 7

PříspěvekZaslal: 18 listopad 2016, 11:12    Předmět: PIC Citovat

Kolemjdoucí napsal:
Jeden tip: Pokud PICy mají/umí zapnout vnitřní pull-up odpory, je mnohem jednodušší je aktivovat, zapojit tlačítka proti GND a použít negativní (nebo také inverzní) logiku. Výhodou je pak jednodušší DPS.


Jj děkuji za radu takto je to opravdu lepší a jak píše Anonymní tak od něj sem to opravdu nepochopil co po mě chtěl.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 20 listopad 2016, 16:10    Předmět: Citovat

Tak máš číst datasheety, tam je pojem "logické instrukce" jasně vymezen, a ve škole jste o nich taky museli mluvit když na to máte úkol, tak jsi tam měl dávat pozor.
Návrat nahoru
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)