Postat: 28 december 2008, 03:43:37
En idé är att koppla ingången till ASK sändaren, till parallellporten och sampla med minst 10 kHz. Använd dock timers för att sampla då moderna CPU är oberäknliga i utförande tid.
Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
Stämmer bra, har en självlärande här. I med den i väggen, tryck tre-fyra gånger på en sändarknapp och vips så har mottagaren lärt sig. Det borde inte ha nån betydelse för sändningen om det är en ny eller gammal mottagare, self-learn fungerar bra med mina gamla icke self-learn fjärrkontroller.v-g skrev:Har för mig att den "självlärande" har plats för 4 st koder i minnet och man "lär" dem genom att stoppa i kontakten och sen trycka på den sändarknapp vars kod man önskar lära in. Väldigt Lo-tec alltså.
Läste bakpå en på jula så jag kan minnas fel.
Kod: Markera allt
Define OSC 20
T CON 350 ' T = 350uS
T3 CON 1050 ' 3T
T32 CON 11200 ' 32T (Stop/Synch)
' Note we're using 1 VS X as shown in text
A1_ON CON %111000000000 ' 12-bit code for House/Unit A1 ON
A1_OFF CON %011000000000 ' 12-bit code for House/Unit A1 OFF
' ||||||||||||____ 4-bit House code
' ||||||||________ 4-bit Unit code
' ||||____________ 3-bit Unknown code
' |_______________ 1-bit Activation code 1=ON 0=OFF
'
' House code Unit Code
' ------------------------
' | 0000 - A | 0000 - 1 |
' | X000 - B | X000 - 2 |
' | 0X00 - C | 0X00 - 3 |
' | XX00 - D | XX00 - 4 |
' | 00X0 - E | 00X0 - 5 |
' | X0X0 - F | X0X0 - 6 |
' | 0XX0 - G | 0XX0 - 7 |
' | XXX0 - H | XXX0 - 8 |
' | 000X - I | 000X - 9 |
' | X00X - J | X00X - 10 |
' | 0X0X - K | 0X0X - 11 |
' | XX0X - L | XX0X - 12 |
' | 00XX - M | 00XX - 13 |
' | X0XX - N | X0XX - 14 |
' | 0XXX - O | 0XXX - 15 |
' | XXXX - P | XXXX - 16 |
' ------------------------
D_PACKET VAR WORD ' Holds 12-bit data packet to send
INDEX VAR BYTE ' Data packet bit index pointer
LOOPS VAR BYTE ' Loop counter
TX VAR PORTB.0 ' Connects to RF transmitter data in
LOW TX ' TX output idles low for RF carrier OFF
Main:
D_PACKET = A1_ON
GOSUB Send
PAUSE 5000
D_PACKET = A1_OFF
GOSUB Send
PAUSE 5000
GOTO Main
Send:
FOR LOOPS = 1 TO 4 ' send each packet 4 times
FOR INDEX = 0 TO 11 ' sends 12 bits per pass LSB 1st
HIGH TX ' The 1st half of a 0 or X bit period is the
PAUSEUS T ' same so no need to repeat this sequence inside
LOW TX ' the IF block
PAUSEUS T3
IF D_PACKET.0[INDEX]=1 THEN
HIGH TX ' send a 1 bit (1=X here)
PAUSEUS T3
LOW TX
PAUSEUS T
ELSE
HIGH TX ' send a 0 bit
PAUSEUS T
LOW TX
PAUSEUS T3
ENDIF
NEXT INDEX ' loop until all 12-bits sent
' Start of Stop/Synch period after each 12-bit packet
HIGH TX
PAUSEUS T
LOW TX
PAUSEUS T32
' End of Stop/Synch period
NEXT LOOPS ' send 4 packets per pass
RETURN
END