This is an adaptation of some code for NEC remotes that is on this forum. Up till now I've just been using it for decoding the leader pulse to enable a simple on/off switch and it works great, but now I want to use it for a specific keypress on my remote. The key will output 0xFF629D. (11111111 0110 0010 1001 1101).
I'm a bit confused on where and what is going to show up on each of the bytes when it sees the 0xFF629D --
ADDR '00000110 ?
ADDRINV '00000010 ?
COMM '00001001 ?
COMMINV '00001101 ?
probably have that all wrongthanks for any help on this. trying to save time -- didn't want to breadboard something.
was going to an IF byte = then high an led. but thought i'd just ask instead.
Code:'12F508 nec REMOTE CONTROL RECEIVER (RENTRON) #CONFIG __config _OSC_IntRC & _WDT_OFF & _MCLRE_OFF & _CP_OFF #ENDCONFIG TRISIO = %000001 'GPIO.0 IS REMOTE RCVR INPUT, GPIO2 IS OUTPUT DEFINE OSC 4 LEADERr VAR WORD ' will be up to 900 for a 9mS leader pulse BTNVAL VAR BYTE[32] ' holds 32 pulse results ADDR VAR BYTE ' address byte ADDRINV VAR BYTE ' inverse of address byte COMM VAR BYTE ' command byte COMMINV VAR BYTE ' inverse of command byte X VAR BYTE ' loop count MAIN: PULSIN GPIO.0,0,Leader ' leader pulse is ~9mS low-going IF Leader < 850 THEN mAIN FOR X = 0 TO 31 ' grab 32 incoming pulses PULSIN GPIO.0,1,BtnVal(X) ' measuring high-going pulse widths NEXT X 'we'll decode 4 bytes from 32 pulses.... FOR X = 0 TO 7 'FIRST 8 PULSES ADDRESS BYTE IF BtnVal[X] > 150 THEN ' > 150 x 10uS = > 1.5mS pulse period addr.0[X] = 1 ELSE addr.0[X] = 0 ENDIF NEXT X FOR X = 8 TO 15 'SECOND 8 PULSES ADDRESS BYTE (INVERSE) IF BtnVal[X] > 150 THEN addrinv.0[X-8] = 1 ELSE addrinv.0[X-8] = 0 ENDIF NEXT X FOR X = 16 TO 23 'THIRD 8 PULSES COMMAND BYTE IF BtnVal[X] > 150 THEN comm.0[X-16] = 1 ELSE comm.0[X-16] = 0 ENDIF NEXT X FOR X = 24 TO 31 'FOURTH 8 PULSES COMMAND BYTE (INVERSE) IF BtnVal[X] > 150 THEN comminv.0[X-24] = 1 ELSE comminv.0[X-24] = 0 ENDIF NEXT X PAUSE 1000 GOTO Main


thanks for any help on this. trying to save time -- didn't want to breadboard something.

Bookmarks