› Foros › Xbox 360 › Modificación de lectores
reaf escribió:[NisteR] escribió:deberian banear a todos los que usan esto, loq mas gracia mace es q la gente qusa esto se cree buena jajajaja
Seguro que acabas del modificar el mando xDDDD.
[NisteR] escribió:PD: no entiendo como pueden dejar que este post siga adelante que claramente va a perjudicar el online y a los jugadores que juegan al live ya que acer esto no tiene otra intencion q la de acer trampas.
REHome escribió:Hola:
He pasado el tutorial de este tema a PDF para que sea poortable y lo tengan todo el mundo.
Descargar
Si lo deseas, puedes publicarlo en el primer tema para que lo sepan.
Lo pondré, pero recuerda que el tutorial es mio, debes ponerlo.
Saludo.
cervantes escribió:bien lo que mencionas en la placa matrix si se ocupa tan cual viene en el diagrama, lo que comente que es ocional es un capacitor de valor 0.1uf pero tanto la resistencia de 330 ohm y la 1n4148 se ocupan para no quemar el led saludos
andresete escribió:REHome escribió:Hola:
He pasado el tutorial de este tema a PDF para que sea poortable y lo tengan todo el mundo.
Descargar
Si lo deseas, puedes publicarlo en el primer tema para que lo sepan.
Lo pondré, pero recuerda que el tutorial es mio, debes ponerlo.
Saludo.
narwin escribió:Bueno, ahi las teneis, no tienen mucha calidad ya que estan hechas con el movil ,que necesita jubilacion por cierto.Una vez montado los cables quedan encima del zocalo recogiditos. El cable que he usado es un cable ide,ya que es fino y resistente ,por si al cerrar el mando pillo alguno con las tapas.
; XBOX360 Rapidfire / Sleeperfire Opensource Project *
; on the PICmicro PIC12F683. This file contains the basic code *
; building blocks to build upon. *
; *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PICmicro data sheet for additional *
; information on the instruction set. REPEAT: READ the #$%^&*&*ing *
; datasheet. Its all in there, so stop wasting others time by asking*
; questions already asnwered.If you dont understand the datasheet *
; then by all means ask the question. *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: Now *
; File Version: *
; *
; Author: Hazer *
; Company: *
; *
; *
;**********************************************************************
; *
; Files required: p12F683.inc *
; *
; *
; *
;**********************************************************************
; *
; Notes: *
; *
; *
; *
; *
;**********************************************************************
list p=12F683 ; list directive to define processor
#include <p12F683.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
__CONFIG _FCMEN_OFF & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSCIO
;***** VARIABLE DEFINITIONS******************
w_temp EQU 0x70 ; variable used for context saving
status_temp EQU 0x71 ; variable used for context saving
FLAGS EQU 0x20 ;software state register
PULSER EQU 0x21 ;pulse on counter
DWELLTIMER EQU 0x22 ;pulse off counter
STATE EQU 0x23 ;programmed state
BUTTONHOLD EQU 0x24
FREQR EQU 0x25 ;frequency value
TEMP1 EQU 0x26
TEMP2 EQU 0x27
PULSEL EQU 0x28
DWELLTIMEL EQU 0x29
TEMP5 EQU 0x2A
LEDBLINK EQU 0x2B
TEMP3 EQU 0x2C
;*******bits in FLAGS register***********
PULSEONR equ 0
PULSEONL equ 1
TRIGOUT equ 2
LEDHI equ 3
STATECHANGE equ 4
;*******bits in STATE register***********
RIGHTACTIVE equ 0
LEFTACTIVE equ 1
;*********GPIO pin names*****************
LEDL equ 5
LEDR equ 4
BUTTONR equ 2
BUTTONL equ 3
TRIGGERR equ 0
TRIGGERL equ 1
;**********Speed settings: change these to change speed (0x05-0xFF)
FIRERATE1 equ 0x2F
FIRERATE2 equ 0x16
FIRERATE3 equ 0x12
FIRERATE4 equ 0x0F
;**********************************************************************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
;Take a good note here. OSC is left at default 4MHz.
; We are running at 1MHz instruction cycle, or 1 micro second
;Timer 2 is prescaled 1:4 and compared (PR2) to 250.
; we now have hardware interupt that falls every 1ms exactly
;within limitation of osctune. Main code is inconsequential.
;PULSE and DWELL values control the signals precisely.
;All pulse logic is switched within the few microseconds to
;service the interupt routine. DO NOT modify the ISR
;with any kind of 'wait' or 'loop'. If you want to trigger
; timed events do so by setting an open FLAG bit and have the
;event done in the main loop.
btfss PIR1, TMR2IF ;timer 2 int happened
retfie
;**************** LED blinking *********************************************
;Our main routine will turn the flag bit
;LEDON on or off. The 10ms pulse is a duty cycle
;for the code to work with both CG and
;matrix controllers.
BlinkLed
btfss FLAGS, LEDHI
goto LedLow
decfsz LEDBLINK, f ;if pulse is active, count down 10ms
goto RightLED
movlw 0x0A
movwf LEDBLINK
bcf FLAGS, LEDHI ;10ms done, turn off LEDHI bit
goto RightLED
LedLow
decfsz LEDBLINK, f ;LEDLO time, count down 10ms
goto RightLED
movlw 0x0A
movwf LEDBLINK
bsf FLAGS, LEDHI ;10ms done, turn LEDHI bit on
RightLED
btfsc STATE, RIGHTACTIVE ;is RF on?
goto OutputRightLED
bsf STATUS, RP0 ;bank 1
bsf TRISIO, LEDR ;tristate LED
bcf STATUS, RP0 ;bank 0
goto LeftLED
OutputRightLED
btfsc FLAGS, LEDHI ;if ledhi true,
bsf GPIO, LEDR ;turn output hi
btfss FLAGS, LEDHI ;if ledhi flase,
bcf GPIO, LEDR ;turn led output lo
bsf STATUS, RP0 ;bank 1
bcf TRISIO, LEDR ;turn output on
bcf STATUS, RP0 ;bank 0
LeftLED
btfsc STATE, LEFTACTIVE ;is RF on?
goto OutputleftLED
bsf STATUS, RP0 ;bank 1
bsf TRISIO, LEDL ;tristate LED
bcf STATUS, RP0 ;bank 0
goto RightTrigger
OutputleftLED
btfsc FLAGS, LEDHI ;if ledhi true,
bsf GPIO, LEDL ;turn output hi
btfss FLAGS, LEDHI ;if ledhi flase,
bcf GPIO, LEDL ;turn led output lo
bsf STATUS, RP0 ;bank 1
bcf TRISIO, LEDL ;turn output on
bcf STATUS, RP0 ;bank 0
;**************** Right trigger logic***************************************
RightTrigger
btfsc STATE, RIGHTACTIVE ;is RF on?
goto ActiveR
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERR ;output off
bcf STATUS, RP0 ;bank 0
goto LeftTrigger
ActiveR
btfss FLAGS, TRIGOUT ;controllertype
bcf GPIO, TRIGGERR ;determines
btfsc FLAGS, TRIGOUT ;output state
bsf GPIO, TRIGGERR
btfss FLAGS, PULSEONR ;is pulse active?
goto OffstateR
decfsz PULSER, f ;if pulse is active, count down 10ms
goto LeftTrigger
bcf FLAGS, PULSEONR ;10ms is over, clear flags and
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERR ;tristate output
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;and reset pulse time.
movwf PULSER
goto LeftTrigger
OffstateR
decfsz DWELLTIMER, f ;count down dwell time to next pulse
goto LeftTrigger
bsf FLAGS, PULSEONR ;if dwell is done turn on outputs
bsf STATUS, RP0 ;bank 1
bcf TRISIO, TRIGGERR ;and reset pulse time
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;from frequency value
movwf DWELLTIMER
LeftTrigger
btfsc STATE, LEFTACTIVE ;is RF on?
goto ActiveL
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERL ;output off
bcf STATUS, RP0 ;bank 0
goto EndInterupt
ActiveL
btfss FLAGS, TRIGOUT ;controllertype
bcf GPIO, TRIGGERL ;determines
btfsc FLAGS, TRIGOUT ;output state
bsf GPIO, TRIGGERL
btfss FLAGS, PULSEONL ;is pulse active?
goto OffstateL
decfsz PULSEL, f ;if pulse is active, count down 10ms
goto EndInterupt
bcf FLAGS, PULSEONL ;10ms is over, clear flags and
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERL ;tristate output
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;and reset pulse time.
movwf PULSEL
goto EndInterupt
OffstateL
decfsz DWELLTIMEL, f ;count down dwell time to next pulse
goto EndInterupt
bsf FLAGS, PULSEONL ;if dwell is done turn on outputs
bsf STATUS, RP0 ;bank 1
bcf TRISIO, TRIGGERL ;and reset pulse time
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;from frequency value
movwf DWELLTIMEL
EndInterupt
bcf PIR1, TMR2IF
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
;*************************************SUBROUTINES**********************************
Wait10ms
clrf TEMP2
movlw 0x0D
movwf TEMP1 ;rough 10ms timer for button debounce.
Loop1
decfsz TEMP2, f ;count down 256*3=768 cycles
goto Loop1
decfsz TEMP1, f ;count down 768*13=9986 cycles
goto Loop1
return
;*************************************************************
ReadEE
bsf STATUS , RP0 ;Bank1
movlw 0x02
movwf EEADR
bsf EECON1 , RD ;start read
movf EEDAT , W
bcf STATUS , RP0 ;Bank0
return
;*************************************************************
WriteEE
bsf STATUS , RP0
movwf EEDAT
movlw 0x02
movwf EEADR
bsf EECON1,WREN ;Enable write
bcf INTCON, GIE ;Disable INTs
btfsc INTCON, GIE ;See AN576
goto $-2
movlw 0x55 ;Unlock write
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1, WR ;Start the write
WaitForEEWrite
btfsc EECON1, WR ;wait for hardware to clear (done writing)
goto WaitForEEWrite
bcf STATUS , RP0 ;Bank0
bsf INTCON, GIE ;Enable INTS
return
;**********************************************************************************
;**********************************************************************************
;**********************************************************************************
main
clrf GPIO
clrf FLAGS ;clear outputs and code status register
movlw 0x07
movwf CMCON0 ;comparators off
bsf STATUS, RP0 ;bank 1
movlw 0x0F ;start with 0-3 inputs (ADC read)
movwf TRISIO ;pin 0 & 1 & 5 out, all other inputs
movlw 0x51 ;Fosc/16, pin 0 analog
movwf ANSEL ;Right trigger is analog input
movlw 0x04
movwf WPU ;enable week pullups
bcf OPTION_REG, 7 ;enable all week pullups
bcf STATUS, RP0 ;bank 0
movlw 0x01 ;Left just, Vdd, channel 0
movwf ADCON0 ;module on.
movlw 0x10
movwf TEMP1
Wait4ADC
decfsz TEMP1, f
goto Wait4ADC ;acquisition time
bsf ADCON0, 1 ;start ADC
btfsc ADCON0, 1
goto $-1 ;wait for conversion to be done
movlw 0x40 ;about 0.5V from 2V ref
subwf ADRESH, w ;if f > W, C=1
btfsc STATUS, C ;ie- if trigger > 0.5V, then matrix
bsf FLAGS, TRIGOUT ;matrix config sources (output high)
bsf STATUS, RP0 ;bank 1
movlw 0x0C ;restore pin IO
movwf TRISIO
clrf ANSEL ;all digital now
bcf STATUS, RP0 ;bank 0
movlw 0x0A ;start with 10ms pulse width
movwf LEDBLINK ;for the LEDs
movlw FIRERATE1 ;this will get overwritten,
movwf PULSER ; but start with a default value
movwf PULSEL
movwf DWELLTIMER
movwf DWELLTIMEL
call ReadEE ;get state value
movwf STATE
movlw 0x01
movwf T2CON ;timer 2, prescale 1:4, no postscale
bsf STATUS, RP0 ;bank 1
movlw 0xFA
movwf PR2 ;setup 1ms hardware interupt
bsf PIE1, TMR2IE ;enable timer2 interupt
bcf STATUS, RP0 ;bank 0
bsf T2CON, TMR2ON ;turn on timer2
movlw 0xC0
movwf INTCON ;turn on interupts globally
goto InitState ;get first firerate value
;******MAIN LOOP***************
Start
TestLeft
btfsc GPIO, BUTTONL
goto TestRight ;Test for left button press
call Wait10ms
btfsc GPIO, BUTTONL ;button is down for 10ms
goto TestRight
ReleaseLeft
btfss GPIO, BUTTONL ;wait for button release
goto ReleaseLeft
call Wait10ms
btfss GPIO, BUTTONL ;wait for button release
goto ReleaseLeft
movlw 0x02
xorwf STATE, f ;toggle left trigger
call WriteEE ;store state
TestRight
btfsc GPIO, BUTTONR
goto Start
; goto DisplayState ;Test for right button press
call Wait10ms
btfsc GPIO, BUTTONR ;button is down for min 10ms
goto Start
; goto DisplayState
movlw 0xC8
movwf BUTTONHOLD ;setup for 2 second hold
First2seconds
call Wait10ms
btfsc GPIO, BUTTONR ;button is down for more than 10ms
goto ReleaseRight
decfsz BUTTONHOLD, f
goto First2seconds
movlw 0xC8
movwf BUTTONHOLD ;setup for 2 second hold
Second2seconds
call Wait10ms
btfsc GPIO, BUTTONR
goto ReleaseRight
decfsz BUTTONHOLD, f
goto Second2seconds ;button down for 4 seconds, change firerate
NextState
movlw 0x40
addwf STATE, f ;change firerate state
InitState ;begin test for
btfsc STATE, 7 ;state 1 or 2
goto State3
btfsc STATE, 6
goto State2
State1
movlw FIRERATE1 ;state 1
movwf FREQR
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop01
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop01
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
goto ReleaseRight
State2
movlw FIRERATE2 ;state 2
movwf FREQR
bcf STATE, RIGHTACTIVE ;blink twice, led off
movlw 0x0A
movwf TEMP3
Loop02
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop02
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop03
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop03
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop04
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop04
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
goto ReleaseRight
State3
btfsc STATE, 6
goto State4
movlw FIRERATE3 ;state 3
movwf FREQR
bcf STATE, RIGHTACTIVE ;blink 3 times, led off
movlw 0x0A
movwf TEMP3
Loop05
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop05
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop06
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop06
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop07
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop07
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop08
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop08
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop09
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop09
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
goto ReleaseRight
State4
movlw FIRERATE4 ;state 4, 22ms cycle
movwf FREQR
bcf STATE, RIGHTACTIVE ;blink 4 times, led off
movlw 0x0A
movwf TEMP3
Loop10
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop10
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop11
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop11
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop12
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop12
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop13
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop13
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop14
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop14
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop15
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop15
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop16
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop16
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
ReleaseRight
btfss GPIO, BUTTONR ;wait for button release
goto ReleaseRight
call Wait10ms
btfss GPIO, BUTTONL ;wait for button release
goto ReleaseRight
btfsc FLAGS, STATECHANGE ;test for button tap or state change
goto Continue01
movlw 0x01
xorwf STATE, f ;toggle left trigger if button tap
Continue01
bcf FLAGS, STATECHANGE
call WriteEE ;store state
goto Start
; initialize eeprom locations
ORG 0x2100
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07
END ; directive 'end of program'
REHome escribió:Hola:
Lo puedes comnprar aquí, no tienen el catálogo pero ellos te los puede conseguir si son varios PIC.
http://msebilbao.com/tienda/index.php
Donde se suele comprar PIC directamente es desde la web del fabricante. Se recomienda comprar muchos si quieres que los gastos de envío valga la pena pagarlos.
http://www.microchipdirect.com/
¿Tienes intención de modificar algo en el código?; XBOX360 Rapidfire / Sleeperfire Opensource Project *
; on the PICmicro PIC12F683. This file contains the basic code *
; building blocks to build upon. *
; *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PICmicro data sheet for additional *
; information on the instruction set. REPEAT: READ the #$%^&*&*ing *
; datasheet. Its all in there, so stop wasting others time by asking*
; questions already asnwered.If you dont understand the datasheet *
; then by all means ask the question. *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: Now *
; File Version: *
; *
; Author: Hazer *
; Company: *
; *
; *
;**********************************************************************
; *
; Files required: p12F683.inc *
; *
; *
; *
;**********************************************************************
; *
; Notes: *
; *
; *
; *
; *
;**********************************************************************
list p=12F683 ; list directive to define processor
#include <p12F683.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
__CONFIG _FCMEN_OFF & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSCIO
;***** VARIABLE DEFINITIONS******************
w_temp EQU 0x70 ; variable used for context saving
status_temp EQU 0x71 ; variable used for context saving
FLAGS EQU 0x20 ;software state register
PULSER EQU 0x21 ;pulse on counter
DWELLTIMER EQU 0x22 ;pulse off counter
STATE EQU 0x23 ;programmed state
BUTTONHOLD EQU 0x24
FREQR EQU 0x25 ;frequency value
TEMP1 EQU 0x26
TEMP2 EQU 0x27
PULSEL EQU 0x28
DWELLTIMEL EQU 0x29
TEMP5 EQU 0x2A
LEDBLINK EQU 0x2B
TEMP3 EQU 0x2C
;*******bits in FLAGS register***********
PULSEONR equ 0
PULSEONL equ 1
TRIGOUT equ 2
LEDHI equ 3
STATECHANGE equ 4
;*******bits in STATE register***********
RIGHTACTIVE equ 0
LEFTACTIVE equ 1
;*********GPIO pin names*****************
LEDL equ 5
LEDR equ 4
BUTTONR equ 2
BUTTONL equ 3
TRIGGERR equ 0
TRIGGERL equ 1
;**********Speed settings: change these to change speed (0x05-0xFF)
FIRERATE1 equ 0x2F
FIRERATE2 equ 0x16
FIRERATE3 equ 0x12
FIRERATE4 equ 0x0F
;**********************************************************************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
;Take a good note here. OSC is left at default 4MHz.
; We are running at 1MHz instruction cycle, or 1 micro second
;Timer 2 is prescaled 1:4 and compared (PR2) to 250.
; we now have hardware interupt that falls every 1ms exactly
;within limitation of osctune. Main code is inconsequential.
;PULSE and DWELL values control the signals precisely.
;All pulse logic is switched within the few microseconds to
;service the interupt routine. DO NOT modify the ISR
;with any kind of 'wait' or 'loop'. If you want to trigger
; timed events do so by setting an open FLAG bit and have the
;event done in the main loop.
btfss PIR1, TMR2IF ;timer 2 int happened
retfie
;**************** LED blinking *********************************************
;Our main routine will turn the flag bit
;LEDON on or off. The 10ms pulse is a duty cycle
;for the code to work with both CG and
;matrix controllers.
BlinkLed
btfss FLAGS, LEDHI
goto LedLow
decfsz LEDBLINK, f ;if pulse is active, count down 10ms
goto RightLED
movlw 0x0A
movwf LEDBLINK
bcf FLAGS, LEDHI ;10ms done, turn off LEDHI bit
goto RightLED
LedLow
decfsz LEDBLINK, f ;LEDLO time, count down 10ms
goto RightLED
movlw 0x0A
movwf LEDBLINK
bsf FLAGS, LEDHI ;10ms done, turn LEDHI bit on
RightLED
btfsc STATE, RIGHTACTIVE ;is RF on?
goto OutputRightLED
bsf STATUS, RP0 ;bank 1
bsf TRISIO, LEDR ;tristate LED
bcf STATUS, RP0 ;bank 0
goto LeftLED
OutputRightLED
btfsc FLAGS, LEDHI ;if ledhi true,
bsf GPIO, LEDR ;turn output hi
btfss FLAGS, LEDHI ;if ledhi flase,
bcf GPIO, LEDR ;turn led output lo
bsf STATUS, RP0 ;bank 1
bcf TRISIO, LEDR ;turn output on
bcf STATUS, RP0 ;bank 0
LeftLED
btfsc STATE, LEFTACTIVE ;is RF on?
goto OutputleftLED
bsf STATUS, RP0 ;bank 1
bsf TRISIO, LEDL ;tristate LED
bcf STATUS, RP0 ;bank 0
goto RightTrigger
OutputleftLED
btfsc FLAGS, LEDHI ;if ledhi true,
bsf GPIO, LEDL ;turn output hi
btfss FLAGS, LEDHI ;if ledhi flase,
bcf GPIO, LEDL ;turn led output lo
bsf STATUS, RP0 ;bank 1
bcf TRISIO, LEDL ;turn output on
bcf STATUS, RP0 ;bank 0
;**************** Right trigger logic***************************************
RightTrigger
btfsc STATE, RIGHTACTIVE ;is RF on?
goto ActiveR
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERR ;output off
bcf STATUS, RP0 ;bank 0
goto LeftTrigger
ActiveR
btfss FLAGS, TRIGOUT ;controllertype
bcf GPIO, TRIGGERR ;determines
btfsc FLAGS, TRIGOUT ;output state
bsf GPIO, TRIGGERR
btfss FLAGS, PULSEONR ;is pulse active?
goto OffstateR
decfsz PULSER, f ;if pulse is active, count down 10ms
goto LeftTrigger
bcf FLAGS, PULSEONR ;10ms is over, clear flags and
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERR ;tristate output
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;and reset pulse time.
movwf PULSER
goto LeftTrigger
OffstateR
decfsz DWELLTIMER, f ;count down dwell time to next pulse
goto LeftTrigger
bsf FLAGS, PULSEONR ;if dwell is done turn on outputs
bsf STATUS, RP0 ;bank 1
bcf TRISIO, TRIGGERR ;and reset pulse time
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;from frequency value
movwf DWELLTIMER
LeftTrigger
btfsc STATE, LEFTACTIVE ;is RF on?
goto ActiveL
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERL ;output off
bcf STATUS, RP0 ;bank 0
goto EndInterupt
ActiveL
btfss FLAGS, TRIGOUT ;controllertype
bcf GPIO, TRIGGERL ;determines
btfsc FLAGS, TRIGOUT ;output state
bsf GPIO, TRIGGERL
btfss FLAGS, PULSEONL ;is pulse active?
goto OffstateL
decfsz PULSEL, f ;if pulse is active, count down 10ms
goto EndInterupt
bcf FLAGS, PULSEONL ;10ms is over, clear flags and
bsf STATUS, RP0 ;bank 1
bsf TRISIO, TRIGGERL ;tristate output
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;and reset pulse time.
movwf PULSEL
goto EndInterupt
OffstateL
decfsz DWELLTIMEL, f ;count down dwell time to next pulse
goto EndInterupt
bsf FLAGS, PULSEONL ;if dwell is done turn on outputs
bsf STATUS, RP0 ;bank 1
bcf TRISIO, TRIGGERL ;and reset pulse time
bcf STATUS, RP0 ;bank 0
movf FREQR, w ;from frequency value
movwf DWELLTIMEL
EndInterupt
bcf PIR1, TMR2IF
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
;*************************************SUBROUTINES**********************************
Wait10ms
clrf TEMP2
movlw 0x0D
movwf TEMP1 ;rough 10ms timer for button debounce.
Loop1
decfsz TEMP2, f ;count down 256*3=768 cycles
goto Loop1
decfsz TEMP1, f ;count down 768*13=9986 cycles
goto Loop1
return
;*************************************************************
ReadEE
bsf STATUS , RP0 ;Bank1
movlw 0x02
movwf EEADR
bsf EECON1 , RD ;start read
movf EEDAT , W
bcf STATUS , RP0 ;Bank0
return
;*************************************************************
WriteEE
bsf STATUS , RP0
movwf EEDAT
movlw 0x02
movwf EEADR
bsf EECON1,WREN ;Enable write
bcf INTCON, GIE ;Disable INTs
btfsc INTCON, GIE ;See AN576
goto $-2
movlw 0x55 ;Unlock write
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1, WR ;Start the write
WaitForEEWrite
btfsc EECON1, WR ;wait for hardware to clear (done writing)
goto WaitForEEWrite
bcf STATUS , RP0 ;Bank0
bsf INTCON, GIE ;Enable INTS
return
;**********************************************************************************
;**********************************************************************************
;**********************************************************************************
main
clrf GPIO
clrf FLAGS ;clear outputs and code status register
movlw 0x07
movwf CMCON0 ;comparators off
bsf STATUS, RP0 ;bank 1
movlw 0x0F ;start with 0-3 inputs (ADC read)
movwf TRISIO ;pin 0 & 1 & 5 out, all other inputs
movlw 0x51 ;Fosc/16, pin 0 analog
movwf ANSEL ;Right trigger is analog input
movlw 0x04
movwf WPU ;enable week pullups
bcf OPTION_REG, 7 ;enable all week pullups
bcf STATUS, RP0 ;bank 0
movlw 0x01 ;Left just, Vdd, channel 0
movwf ADCON0 ;module on.
movlw 0x10
movwf TEMP1
Wait4ADC
decfsz TEMP1, f
goto Wait4ADC ;acquisition time
bsf ADCON0, 1 ;start ADC
btfsc ADCON0, 1
goto $-1 ;wait for conversion to be done
movlw 0x40 ;about 0.5V from 2V ref
subwf ADRESH, w ;if f > W, C=1
btfsc STATUS, C ;ie- if trigger > 0.5V, then matrix
bsf FLAGS, TRIGOUT ;matrix config sources (output high)
bsf STATUS, RP0 ;bank 1
movlw 0x0C ;restore pin IO
movwf TRISIO
clrf ANSEL ;all digital now
bcf STATUS, RP0 ;bank 0
movlw 0x0A ;start with 10ms pulse width
movwf LEDBLINK ;for the LEDs
movlw FIRERATE1 ;this will get overwritten,
movwf PULSER ; but start with a default value
movwf PULSEL
movwf DWELLTIMER
movwf DWELLTIMEL
call ReadEE ;get state value
movwf STATE
movlw 0x01
movwf T2CON ;timer 2, prescale 1:4, no postscale
bsf STATUS, RP0 ;bank 1
movlw 0xFA
movwf PR2 ;setup 1ms hardware interupt
bsf PIE1, TMR2IE ;enable timer2 interupt
bcf STATUS, RP0 ;bank 0
bsf T2CON, TMR2ON ;turn on timer2
movlw 0xC0
movwf INTCON ;turn on interupts globally
goto InitState ;get first firerate value
;******MAIN LOOP***************
Start
TestLeft
btfsc GPIO, BUTTONL
goto TestRight ;Test for left button press
call Wait10ms
btfsc GPIO, BUTTONL ;button is down for 10ms
goto TestRight
ReleaseLeft
btfss GPIO, BUTTONL ;wait for button release
goto ReleaseLeft
call Wait10ms
btfss GPIO, BUTTONL ;wait for button release
goto ReleaseLeft
movlw 0x02
xorwf STATE, f ;toggle left trigger
call WriteEE ;store state
TestRight
btfsc GPIO, BUTTONR
goto Start
; goto DisplayState ;Test for right button press
call Wait10ms
btfsc GPIO, BUTTONR ;button is down for min 10ms
goto Start
; goto DisplayState
movlw 0xC8
movwf BUTTONHOLD ;setup for 2 second hold
First2seconds
call Wait10ms
btfsc GPIO, BUTTONR ;button is down for more than 10ms
goto ReleaseRight
decfsz BUTTONHOLD, f
goto First2seconds
movlw 0xC8
movwf BUTTONHOLD ;setup for 2 second hold
Second2seconds
call Wait10ms
btfsc GPIO, BUTTONR
goto ReleaseRight
decfsz BUTTONHOLD, f
goto Second2seconds ;button down for 4 seconds, change firerate
NextState
movlw 0x40
addwf STATE, f ;change firerate state
InitState ;begin test for
btfsc STATE, 7 ;state 1 or 2
goto State3
btfsc STATE, 6
goto State2
State1
movlw FIRERATE1 ;state 1
movwf FREQR
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop01
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop01
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
goto ReleaseRight
State2
movlw FIRERATE2 ;state 2
movwf FREQR
bcf STATE, RIGHTACTIVE ;blink twice, led off
movlw 0x0A
movwf TEMP3
Loop02
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop02
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop03
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop03
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop04
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop04
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
goto ReleaseRight
State3
btfsc STATE, 6
goto State4
movlw FIRERATE3 ;state 3
movwf FREQR
bcf STATE, RIGHTACTIVE ;blink 3 times, led off
movlw 0x0A
movwf TEMP3
Loop05
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop05
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop06
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop06
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop07
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop07
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop08
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop08
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop09
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop09
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
goto ReleaseRight
State4
movlw FIRERATE4 ;state 4, 22ms cycle
movwf FREQR
bcf STATE, RIGHTACTIVE ;blink 4 times, led off
movlw 0x0A
movwf TEMP3
Loop10
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop10
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop11
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop11
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop12
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop12
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop13
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop13
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop14
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop14
bsf STATE, RIGHTACTIVE ;led on
movlw 0x0A
movwf TEMP3
Loop15
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop15
bcf STATE, RIGHTACTIVE ;led off
movlw 0x0A
movwf TEMP3
Loop16
call Wait10ms ;100 ms
decfsz TEMP3, f
goto Loop16
bsf STATE, RIGHTACTIVE ;led on
bsf FLAGS, STATECHANGE ;notify a state change
ReleaseRight
btfss GPIO, BUTTONR ;wait for button release
goto ReleaseRight
call Wait10ms
btfss GPIO, BUTTONL ;wait for button release
goto ReleaseRight
btfsc FLAGS, STATECHANGE ;test for button tap or state change
goto Continue01
movlw 0x01
xorwf STATE, f ;toggle left trigger if button tap
Continue01
bcf FLAGS, STATECHANGE
call WriteEE ;store state
goto Start
; initialize eeprom locations
ORG 0x2100
DE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07
END ; directive 'end of program'
Saludo.
REHome escribió:Buenas:
¿Qué valor deseas para el condensador o capacitor?
Se puede comprar también.
http://www.msebilbao.com/tienda/advance ... 9c&x=0&y=0
Cualquier componente electrónico en:
http://es.rs-online.com/web/
Sobre programación. ¿En quñe sentido quieres programar? ¿Grabar el .hex al PIC o programando el PIC?
Grabar el PIC lo puedes ver en estos manuales:
Ic-Prog:
http://www.slideshare.net/Metaconta/man ... esentation
WinPic800:
http://www.slideshare.net/Metaconta/man ... esentation
Si quieres aprender a programar y poder hacer lo que quieras, con este libro y sus ejemplos. http://www.pic16f84a.org/index.php?option=com_content&view=article&id=66&Itemid=87
Salu2.
cervantes escribió:andresete... edita la informacion del primer post con respecto a que deberia de poder funcionar tambien con pics 12F629 y 12F675.. te confirmo que con los 12f629 no funciona.. al momento de grabar lo hace pero al verificar da un error y si lo pruebas no sirve... estos codigos estan especialmente hechos para que funcionen en pics 12f683.....
emex9103 escribió:cervantes escribió:andresete... edita la informacion del primer post con respecto a que deberia de poder funcionar tambien con pics 12F629 y 12F675.. te confirmo que con los 12f629 no funciona.. al momento de grabar lo hace pero al verificar da un error y si lo pruebas no sirve... estos codigos estan especialmente hechos para que funcionen en pics 12f683.....
Pues debe de ser verdad ya que compre ese pic y parece no funcionar programe el pic y todo el cual me da un error de verificacion pero se comenta que es normal
Al ponerlo en el mando lo no hace nada sigue funcionando el mando menos los gatillos LT RT y al pulsar el boton de sincronizar pues tampoco hace nada xD
Que puede ser? pic incompatible? el error de verificacion parece ser debido a que no graba nada en la pestaña de datos se queda todo a 0 pero el codigo si que lo graba
Saludos
REHome escribió:No se el valor del condensador deseas.
Lo del libro es para aprender desce cero en ASM. Ya está la tercera edicción hace meses actualizada.
http://www.ra-ma.es/libros/MICROCONTROL ... 7897-917-2
Cuando domines algo del PIC, eres un maestro en esta materia, sobre todo modificación de consolas o crear tus propias variantes del CHIP.
Aprovechen antes de salir la PS4 que ya no habrá formato físico, incluyendo las dos consolas.
REHome escribió:No lo se porque no lo he probado, claro que afectará el funcionamiento. Pruebalo a ver si te funciona, no esperes buenos resultados. No se romperá nada, por probar no pasa nada.
Sobre el PIC16F629 no funciona porque no se incluye los siguientes registros.
TMR2IF
ADCON0 ---> SOLO LO TIENE EL PIC12F675
CMCON0 ---> TIENE EL CMCON
ADRESH ---> TIENE EL ADRESL
ANSEL ---> SOLO LO TIENE EL PIC12F675
T2CON ---> SOLO TIENE EL T1CON
PR2
TMR2IE
T2CON ---> SOLO TIENE EL T1CON
TMR2ON
Por último, no tiene la característica del BODEM sino que tiene BOD
Resumiendo, no te sirve el 12F629.
REHome escribió:Por dentro es idéntico, por fuera hay varios modelos. Los pueden tener zócalos y los que no. Como son de soldadura de superficie normalmente no usan zócalos. Son más caro. Debes tener un soldador de punta muy fina.
emex9103 escribió:REHome escribió:Por dentro es idéntico, por fuera hay varios modelos. Los pueden tener zócalos y los que no. Como son de soldadura de superficie normalmente no usan zócalos. Son más caro. Debes tener un soldador de punta muy fina.
Ya se lo del soldador mi idea era soldar un socalo sobre la placa del mando justamente en la placa ahy una parte en la que lleva unos puntos de soldaduras para un chip el cual no esta mi idea era soldarlo ahy y llevar los cables asta esos puntos pero antes ahy que cortar las pistas de la placa que noo hacen nada ya que no ahy nada soldado
Te dejo una imagen
Las lineas rojas seria por donde abria que cortar las pistas con un cutter y el punto rojo pues donde va el pic evientemente xD pero me gustaria soldar un zocalo pequeño en vez del pic directamente ya que el dia que lo quiera quitar tendria que sacar el soldador nuevamente pero segun leo los pic de estos tipos son solo para soldarlo y no ahy zocalos para ellos con lo que me fastidia el dia que lo quiera reprogramar ya que abria que desoldar todo o soldar cables del pic al programador
Raziel_DSM escribió:Segun nuestro querido FourZeroTwo, se acabaron los mandos modificados con turbo en Modern Warfare 2
Foros de Infinity WardFOURZEROTWO en los Foros de Infinity Ward escribió:Modded Controllers will not be usable in Modern Warfare 2.
Sigrid escribió:Para todos los tramposos que usais o teneis pensado usar el controles modificados en xbox live, os tengo que dar una mala noticia:Raziel_DSM escribió:Segun nuestro querido FourZeroTwo, se acabaron los mandos modificados con turbo en Modern Warfare 2
Foros de Infinity WardFOURZEROTWO en los Foros de Infinity Ward escribió:Modded Controllers will not be usable in Modern Warfare 2.
Sigrid escribió:Para todos los tramposos que usais o teneis pensado usar el controles modificados en xbox live, os tengo que dar una mala noticia:Raziel_DSM escribió:Segun nuestro querido FourZeroTwo, se acabaron los mandos modificados con turbo en Modern Warfare 2
Foros de Infinity WardFOURZEROTWO en los Foros de Infinity Ward escribió:Modded Controllers will not be usable in Modern Warfare 2.
khazad escribió:
Si lo modifico no es para jugar al live,es mas ni siquiera tengo live.
Lo quiero para mis partidas a lo bestia
khazad escribió:Sigrid escribió:Para todos los tramposos que usais o teneis pensado usar el controles modificados en xbox live, os tengo que dar una mala noticia:
Segun nuestro querido FourZeroTwo, se acabaron los mandos modificados con turbo en Modern Warfare 2
Foros de Infinity WardFOURZEROTWO en los Foros de Infinity Ward escribió:Modded Controllers will not be usable in Modern Warfare 2.
Si lo modifico no es para jugar al live,es mas ni siquiera tengo live.
Lo quiero para mis partidas a lo bestia
itineranT escribió:Sigrid escribió:Para todos los tramposos que usais o teneis pensado usar el controles modificados en xbox live, os tengo que dar una mala noticia:
Segun nuestro querido FourZeroTwo, se acabaron los mandos modificados con turbo en Modern Warfare 2
Foros de Infinity Ward
FOURZEROTWO en los Foros de Infinity Ward escribió:Modded Controllers will not be usable in Modern Warfare 2.
cierto , si lo quieres te tienes que comprar los modificados por ellos que hacen lo mismo pero mejor
http://gear.ign.com/dor/articles/101848 ... 82509.html
rafaliyo86 escribió:Señores tengo un problema que por lo visto a alguien ya le ha pasado
Al grabar el codigo en el icprog al verificar me da el fallo 0001h, he visto que dicen que no pasa nada y que no da problema pero a mi si que me lo da, al instalarlo no me funciona y ya me he cargado dos pic 12f683 . Estoy usando el programador con el portatil hay algun dato que deba tener en cuenta en cuanto a la configuración? En el ic prog es directo pero en el winpic800 veo que hay que configurar el puerto y como yo no uso ningun puerto COM (uso el usb), no se si se deberá a esto el fallo.
Si alguien me puede ayudar no me gustaria malgastar mas pic.
Saludos
REHome escribió:rafaliyo86 escribió:Señores tengo un problema que por lo visto a alguien ya le ha pasado
Al grabar el codigo en el icprog al verificar me da el fallo 0001h, he visto que dicen que no pasa nada y que no da problema pero a mi si que me lo da, al instalarlo no me funciona y ya me he cargado dos pic 12f683 . Estoy usando el programador con el portatil hay algun dato que deba tener en cuenta en cuanto a la configuración? En el ic prog es directo pero en el winpic800 veo que hay que configurar el puerto y como yo no uso ningun puerto COM (uso el usb), no se si se deberá a esto el fallo.
Si alguien me puede ayudar no me gustaria malgastar mas pic.
Saludos
Mira el manual en PDF del IC-PROG aquí y solucionarás tus problemas.
http://electronica-pic.blogspot.com/200 ... -prog.html
Saludo.
rafaliyo86 escribió:Señores tengo un problema que por lo visto a alguien ya le ha pasado
Al grabar el codigo en el icprog al verificar me da el fallo 0001h, he visto que dicen que no pasa nada y que no da problema pero a mi si que me lo da, al instalarlo no me funciona y ya me he cargado dos pic 12f683 . Estoy usando el programador con el portatil hay algun dato que deba tener en cuenta en cuanto a la configuración? En el ic prog es directo pero en el winpic800 veo que hay que configurar el puerto y como yo no uso ningun puerto COM (uso el usb), no se si se deberá a esto el fallo.
Si alguien me puede ayudar no me gustaria malgastar mas pic.
Saludos