Keresés

Aktív témák

  • fillx

    csendes tag

    Nagyon kezdő vagyok és alkottam valamit.
    Akarok egy infra távirányítót készíteni PIC12c508a -val.
    egy infra led-del akarom levillogni a jeleket
    4 gomb lenyomásátó függően 4 különböző jelet kell küldeni
    jelezze vissza 1 síma led-del hogy lenyomtam a gombot
    ez eddig meg is lenne

    Van 2 gomb(GP2,GP3) amit ha lenyomok,
    akkor 1szer küldi el a jelet míg fel nem engedem azt.

    A másik kettő(GP0,GP1) pedig bizonyos időközönként küldi ujra a jelet
    míg fel nem engedem a gombot.

    Bővebben: link
    vannak benne hibák de hát azért jöttem ide hogy kapjak segítséget
    kijavítani azokat.

    Bővebben: link
    És ez a tervezett rajz hozzá nem tudom hogy jó-e csak reménykedem

    [Szerkesztve]

  • fillx

    csendes tag

    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 :no:
    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

Aktív témák