Pic Assembly - Segítség kell

Pic Assembly - Segítség kell
2004-06-03T11:57:18+02:00
2006-02-13T22:49:21+01:00
2022-10-29T05:45:47+02:00
fillx
Segítséget szeretnék kérni valakítől hogy hogy lehetne megoldani 1
PIC12C508A
típusú mikrokontrollerrel infra jel küldése oly módon hogy 4 nyomógombra van szükségem.
MPLAB IDE 6.50 fejlesztőkörnyezetben dolgozom
eddig jutottam de nem merem beégetni a PIC-be mert biztos elrontom
itt van a kód amit eddig kitaláltam
;********************************************************************** ; Fajlnev: 4_btn_ir_snd.asm * ; Datum: 2004-06-03 * ; Fajl Verzio: 1.0 * ; * ; Keszito: Molnar Laszlo * ;********************************************************************** list p=12c508a #include <p12c508a.inc> __CONFIG _CP_OFF & _WDT_OFF & _MCLRE_ON & _IntRC_OSC ;*---------- Változók ----------* BYTE BITCOUNT ;*---------- I/O Beállítás ----------* MOVLW B'11111011' TRIS GPIO ;*---------- Gombnyomás ----------* MAIN MOVFW PORTB ANDLW B'00011011' ; Na ide mi jön??? MOVLW D'65' ; "A" betű CALL tx_w MOVLW D'66' ; "B" betű CALL tx_w MOVLW D'67' ; "C" betű CALL tx_w MOVLW D'68' ; "D" betű CALL tx_w GOTO MAIN ;*---------- Küldés ----------* tx_w: MOVWF BYTE ; Store byte to send (W) in BYTE tx_start_bit: BSF PORTB,2 ; RB2=5V, logic 0 (start bit) NOP ; 1 Must wait 17 us for 57600 bauds NOP ; 2 NOP ; 3 NOP ; 4 NOP ; 5 NOP ; 6 Next bit will be set in 11 us from now tx_data: MOVLW 9 ; Number of bits to send + 1 MOVWF BITCOUNT ; Bit counter tx_next_bit: DECFSZ BITCOUNT,F ; Decrement counter GOTO tx_bit ; If !=0, send the bit GOTO tx_stop_bit ; Else send the stop bit tx_bit: RRF BYTE,F ; Rotate right to get next bit BTFSS STATUS,C ; If it's a zero GOTO tx_0 ; Then send a 0 GOTO tx_1 ; Else send a 1 tx_0: NOP ; To have the same delay than when it's a 1 BSF PORTB,2 ; RB2=5V, logic 0 NOP ; 1 Must wait 17 us for 57600 bauds NOP ; 2 NOP ; 3 NOP ; 4 NOP ; 5 NOP ; 6 Next bit will be set in 11 us from now GOTO tx_next_bit ; Loop tx_1: BCF PORTB,2 ; RB2=0V, logic 1 NOP ; 1 Must wait 17 us for 57600 bauds NOP ; 2 NOP ; 3 NOP ; 4 NOP ; 5 NOP ; 6 Next bit will be set in 11 us from now GOTO tx_next_bit ; Loop tx_stop_bit: NOP ; 13 Requiered for the last data bit NOP ; 14 NOP ; 15 NOP ; 16 BCF PORTB,2 ; RB2=0V, logic 1 (stop bit) NOP ; 1 Must wait 17 us for 57600 bauds NOP ; 2 NOP ; 3 NOP ; 4 NOP ; 5 NOP ; 6 NOP ; 7 NOP ; 8 NOP ; 9 NOP ; 10 NOP ; 11 NOP ; 12 NOP ; 13 NOP ; 14 NOP ; 15 The return will take the last 2 us tx_done: RETURN ; All bits send, return ;*---------- Program Vége ----------* END
ha valaki tud segíteni kijavítani ezt megköszönném
Mutasd a teljes hozzászólást!

  • Hi!

    Meg nem ertek hozza, de szerintem a pic-ed nem eprom, vagyis ha egy loaderrel irsz bele valamit, ugyan ugy at is tudod irni.
    Mutasd a teljes hozzászólást!
  • Hi!

    De. A PIC12508A az OTP-s. Azt csak eccer progizza fel. Persze lehet kapni ebben a típusban Flash-eset is...

    De ha csak újabban van flash-es az sem baj, vedd meg azt, próbáld ki rajta. Ha a lábkiosztás stimmel (Ha ugyanannyi, akkor igen ), akkor azzal tesztel a progit, csak a végleges verziót égesd ebbe.

    Egyébként általában igaz, hogy a megírt programok nem működnek elsőre.

    Ezt azért átnézem...

    Üdv.: Netom.
    Mutasd a teljes hozzászólást!
  • ...ajaj...
    Mutasd a teljes hozzászólást!
  • ...OK, lefordul.

    Te, mihez kell ez neked pontosan?

    Miylen ez a protokoll, amivel átviszed a jelet? Csak úgy lecsipogod egy LED-del?

    Mert akkor minden OK. Valami példaprogramból ollóztad ki a végét? Mert a 12C508A-nak nincs PORTB-je...
    Mutasd a teljes hozzászólást!
  • ...Kész.

    Szerintem így menni fog. Elküldöm az eredti fájlt, hogy ne sérüljön itt a kód, meg csak ronda lesz, ha kirakom.

    Magyarul meg kéne tanulnom. Csak egész nam kábelcsatornákba' paszíroztam UTP-t és kicsit fáradt vagyok.

    Üdv.: Netom.
    Mutasd a teljes hozzászólást!
  • Nem akarja csatolni. Hülye. kamu.asm
    Mutasd a teljes hozzászólást!
  • Na jó.

    Elegem van. Nem lehet kiSSH-zni ebből a rohadt kollégiumból.

    Akinek kell a forrás szóljon.

    Ba...a meg!!!!!!!

    Üdv.: Netom.

    Ps: Szép az élet, éljen az UTP, meg az olyan fal, amibe vagy nem megy bele a kapocs, vagy kiesik belőle.
    Mutasd a teljes hozzászólást!
  • Próba cseresznye...
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • CSATOLTA!!!

    Jujj, de örülök!

    Hülye ZONEALARM.

    MEgye körömpörköltet enni.

    Üdv.: Netom
    Mutasd a teljes hozzászólást!
  • Szia !

    Úgy szemre jó a kód (a netom hack-es).Pár apró észrevétel:

    A main ciklus végére én tennék egy jó hosszú időzítő ciklust vagy az elejére egy prellmentesítő rutint. Például ha a bemeneti jel szintje legalább 250 ms-ig 1 csak utána kellene leadni az adott jelet. Ha ez bonyolult akkor csak egy sima ciklust (ciklusokat) futtas le az adás után, hogy számodra egy gombnyomás ideje alatt ne adja le sokszor az adott jelet.


    A GPIO felső két bitje érdektelen, értéke olvasáskor mindig nulla.

    Nem emlékszem rá, hogy van e 508-as emulátor modul az mplabban, ha van akkor tudod tesztelni a kódot .
    Mutasd a teljes hozzászólást!
  • Helló!

    Ja, ja! Igazad van, tényleg kell az a késleltetés! Ezzel szívtam már egy csomót más alkalmazásnál.

    Emulátor is van, úgyhogy lehet nyúzni...

    Üdv.: Netom.
    Mutasd a teljes hozzászólást!
  • Köszönöm szépen a segítséget midenkinek

    kb 1 hete kezdtem el foglalkozni a PIC-ekkel, köszönöm még 1szer ez nagy előrelépés számomra
    Mutasd a teljes hozzászólást!
  • Hát igen ezt el is felejtettem mondani az elején.
    - 2 gombnak szaggatott jelet kellene küldenie(kb 0.25 sec)
    a másik 2nek pedig 1 szeri jelet(vagy nagyobb időközönként, kb 2sec-enként 1et)

    megpróbálom törni rajta a fejem én is de nem árt a segítség sem
    na akkor...
    Mutasd a teljes hozzászólást!
  • Hi!

    Ciklus amíg gomb_nyomva
    küld_jel
    Vár
    ciklus vége

    Aki 2mpnként akar küldeni az nyomja meg soxor :))))

    Egyébként ua. mint fent, csak hosszabb várakozással.

    A várakozás egy ciklus, benne nop-okkal.

    Üdv.: Netom
    Mutasd a teljes hozzászólást!
  • Meg szeretnék bizonyosodni hogy ez a rész jó e mivel ahogy én gondolom
    _a: MOVLW D'65' ; "A" betű CALL tx_w _b: MOVLW D'66' ; "B" betű CALL tx_w _c: MOVLW D'67' ; "C" betű CALL tx_w _d: MOVLW D'68' ; "D" betű CALL tx_w GOTO main
    na most szerintem (lehet hogy nincs igazam de ) mivel ha én most leadok egy
    GOTO _a
    parancsot akkor végig fog rohanni az összesen( szerintem )
    és
    _d:
    utánn pedig visszalép a
    Main
    ciklusba
    Ha mindegyik utánn
    _a,_b,_c
    beírom a
    GOTO main
    -T akkor lesz az igazi?
    Mutasd a teljes hozzászólást!


  • Tényleg!!! Basszus! Úgy már jó lesz. Na, lusta voltam letesztelni!

    ...vagy nem call tx_w, hanem GOTO tx_w, a rutin végére meg nem retlw 0, hanem goto main... nyersz pár szót ezzel.

    Üdv.: Netom.
    Mutasd a teljes hozzászólást!
  • Sőt!

    Tudod mi van? Ha elküldte a betűt, mindíg újra fogja küldeni, amíg el nem engeded!

    Mivel az első két gombot úgy ismételni kell, tegyél egy várakozást a küldő rutin végére. Csak az első két esetben valamennyi ideig várjon, a többi esetben pedig gombfelengedésre.

    Üdv.: Netom

    Leggyakoribb mondat programozók szájából:
    Na most lesz jó
    Mutasd a teljes hozzászólást!
  • Na akkor az utolsó lépés a Kapcsolási Rajz
    szerintetek működni fog?
    ha van benne valami hiba leírnátok hogy lehet megoldani.
    Itt van a talán végső Program is.
    Mutasd a teljes hozzászólást!
  • Hi! Egy kis segítséget kérnék. A pic16f84-re írt assembly program elméletileg mükszik, de szimulálsakor ezt írja ki: "Hardware stack owerflow"
    kössz!
    Mutasd a teljes hozzászólást!
  • Szia a Pic egymásután 8 call utasítást tud tárolni,(call-ban ujabb call)ha hibás egy ciklus 8.call után túlcsordul a verem,és hibás helyre térne vissza a szubrutinból.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd