E
eem2am
Guest
Zdravo,
Pišem v MPASM za PIC12F675.
Moja številka temelji kazen, ampak ne dela pravilno.
Jaz sem z ADC, tako da se glasi analogni inputi za AN0 in AN1 v zanki.
Npr .... V bistvu nekako podobno ... ..
-----------------------
Ponavljanje:
Preberite AN0
Preberite AN1
Goto Zanka
-----------------------
Kakorkoli že, kaj se dejansko zgodi, je, da če je analogna konverzija v ADRESH vrednost večja od 0x7F za AN0 obravnavi, nato GPIO2 vzame veliko .... Če je nižje, GPIO2 sprejme nizko
In če je analogna konverzija vrednost v ADRESH večja nato 0x7F za AN1 obravnavi, nato GPIO4 vzame veliko .... Če je nižje, GPIO4 sprejme nizko
---------------------
Vendar, da se odčitki so vedno vzeta iz AN1, in čeprav sem spremeniti kanal AN0 je še samo zapisano AN1.
Poznam AN0 kanal deluje, kot sem to delo v različnih košček kode.
Torej, ne kateri koli bralec vedeti, zakaj ne morete spremeniti kanale iz AN1 za AN0 in preberite analognih vhodnih obstaja v mojem zanko?
Tukaj je moja koda ...
... ... ... ....
Koda:;******************************************; PIC12F675
; MPASM sestavljavcu
; MPLAB 8,10; Programer = Pickit2
; Uporaba različica 2.11.00
; Device datoteke Različica 1.12.00
; OS Verzija 2.20.01; Notranji oscilator na 4MHz
;--------------------------------------
; PIN usage
; AN0 = analogni input;
; AN1 = analogni input;
; RA2 = digitalni izhod;
; RA4 = digitalni izhod;
; RA5 = digitalni vhod;
;--------------------------------------# vključujejo <p12f675.inc>
LIST P = PIC12F675__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BODEN_OFF & _CPD_OFF)cnt0 equ 0x20
cnt1 equ 0x21
cnt2 equ 0x22
cnt3 equ 0x23ccd0 equ 0x24val0 equ 0x25
VAL1 equ 0x26ded0 equ 0x27
DED1 equ 0x28BANK0 makro
BCF STATUS, RP0
endmBANK1 makro
BSF STATUS, RP0
endmFET_ON makro
BSF GPIO, 2
endmFET_OFF makro
BCF GPIO, 2
endmOmogočajo makro
BSF GPIO, 4
endmOnemogoči makro
BCF GPIO, 4
endmENABLE_ADC makro
BSF ADCON0, 0
nop
endmDISABLE_ADC makro
BCF ADCON0, 0
nop
endmADC_CH0 makro
BCF ADCON0, 3
nop, nop, da bi se izognili RMW problem
BCF ADCON0, 2
nop
endmADC_CH1 makro
BCF ADCON0, 3
nop, nop, da bi se izognili RMW problem
BSF ADCON0, 2
nop
endmDO_ADC makro
BSF ADCON0, 1
nop
endmorg 0
Goto StartStart:FET_OFF
OnemogočitiBANK1; Nastavitev Ansel register (sklop Analogni / digi pristaniščih
; .. ustanovila AD pretvorbo ura)
movlw 0x63
movwf Ansel; Razvrsti primerjalni referenčni ven, čeprav
i dont želite uporabiti primerjalni
movlw 0x00
movwf Vrčonmovlw 0x2B
movwf TRISIOBANK0
; Onemogoči prekinja kot ne želim, da jih uporabljajo
BCF INTCON, GIE
BCF PIR1, ADIF; Razvrsti primerjalni ven čeprav i dont
; želite uporabiti.
movlw 0x06
movwf CMCON; Primerjalni ref morajo biti omogočeni
; čeprav i dont želite uporabiti primerjalni
BANK1
BSF Vrčon, VREN; Omogoči primerjalni ref
BANK0; Nastavitev ADCON0 = Ljust; Vdd = ref; xx; CHS = 00; GODONE; Onemogoči
movlw 0x00
movwf ADCON0ENABLE_ADCFET_OFF
Onemogočiti; VVVVVVVVVVVVVVVVVVVVV
* PROGRAM MAIN LOOP *
zanke:;...........................
; Ali ADC na kanalu 0
BCF PIR1, ADIF
nop
DISABLE_ADC
ADC_CH0; Spremeni ADC kanal
ENABLE_ADCklic ADC_channel_changeover_delay
D0_ADC
jajce:
btfsc ADCON0, 1
Goto jajce
;............................
movf ADRESH, 0
movwf val0movlw 0x7F
subwf val0, 0
btfsc STATUS, C
FET_OFF
movlw 0x7F
subwf val0, 0
btfss STATUS, C
FET_ON
;............................;............................;----------------------------
; Ali ADC na kanal 1
BCF PIR1, ADIF
nop
DISABLE_ADC
ADC_CH1; Spremeni ADC kanal
ENABLE_ADC
klic ADC_channel_changeover_delay
DO_ADC
pes:
btfsc ADCON0, 1
Goto pes
;............................
movf ADRESH, 0
movwf VAL1movlw 0x7F
subwf VAL1, 0
btfsc STATUS, C
Onemogočiti
movlw 0x7F
subwf val0, 0
btfss STATUS, C
Omogočajo;----------------------------
Goto zanka
; * END OF MAIN PROGRAM LOOP *
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ADC_channel_changeover_delay:
movlw 0x0F
movwf ccd0
FFF:
decfsz ccd0, 1
Goto FFF
retlw 0x00konec
Pišem v MPASM za PIC12F675.
Moja številka temelji kazen, ampak ne dela pravilno.
Jaz sem z ADC, tako da se glasi analogni inputi za AN0 in AN1 v zanki.
Npr .... V bistvu nekako podobno ... ..
-----------------------
Ponavljanje:
Preberite AN0
Preberite AN1
Goto Zanka
-----------------------
Kakorkoli že, kaj se dejansko zgodi, je, da če je analogna konverzija v ADRESH vrednost večja od 0x7F za AN0 obravnavi, nato GPIO2 vzame veliko .... Če je nižje, GPIO2 sprejme nizko
In če je analogna konverzija vrednost v ADRESH večja nato 0x7F za AN1 obravnavi, nato GPIO4 vzame veliko .... Če je nižje, GPIO4 sprejme nizko
---------------------
Vendar, da se odčitki so vedno vzeta iz AN1, in čeprav sem spremeniti kanal AN0 je še samo zapisano AN1.
Poznam AN0 kanal deluje, kot sem to delo v različnih košček kode.
Torej, ne kateri koli bralec vedeti, zakaj ne morete spremeniti kanale iz AN1 za AN0 in preberite analognih vhodnih obstaja v mojem zanko?
Tukaj je moja koda ...
... ... ... ....
Koda:;******************************************; PIC12F675
; MPASM sestavljavcu
; MPLAB 8,10; Programer = Pickit2
; Uporaba različica 2.11.00
; Device datoteke Različica 1.12.00
; OS Verzija 2.20.01; Notranji oscilator na 4MHz
;--------------------------------------
; PIN usage
; AN0 = analogni input;
; AN1 = analogni input;
; RA2 = digitalni izhod;
; RA4 = digitalni izhod;
; RA5 = digitalni vhod;
;--------------------------------------# vključujejo <p12f675.inc>
LIST P = PIC12F675__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BODEN_OFF & _CPD_OFF)cnt0 equ 0x20
cnt1 equ 0x21
cnt2 equ 0x22
cnt3 equ 0x23ccd0 equ 0x24val0 equ 0x25
VAL1 equ 0x26ded0 equ 0x27
DED1 equ 0x28BANK0 makro
BCF STATUS, RP0
endmBANK1 makro
BSF STATUS, RP0
endmFET_ON makro
BSF GPIO, 2
endmFET_OFF makro
BCF GPIO, 2
endmOmogočajo makro
BSF GPIO, 4
endmOnemogoči makro
BCF GPIO, 4
endmENABLE_ADC makro
BSF ADCON0, 0
nop
endmDISABLE_ADC makro
BCF ADCON0, 0
nop
endmADC_CH0 makro
BCF ADCON0, 3
nop, nop, da bi se izognili RMW problem
BCF ADCON0, 2
nop
endmADC_CH1 makro
BCF ADCON0, 3
nop, nop, da bi se izognili RMW problem
BSF ADCON0, 2
nop
endmDO_ADC makro
BSF ADCON0, 1
nop
endmorg 0
Goto StartStart:FET_OFF
OnemogočitiBANK1; Nastavitev Ansel register (sklop Analogni / digi pristaniščih
; .. ustanovila AD pretvorbo ura)
movlw 0x63
movwf Ansel; Razvrsti primerjalni referenčni ven, čeprav
i dont želite uporabiti primerjalni
movlw 0x00
movwf Vrčonmovlw 0x2B
movwf TRISIOBANK0
; Onemogoči prekinja kot ne želim, da jih uporabljajo
BCF INTCON, GIE
BCF PIR1, ADIF; Razvrsti primerjalni ven čeprav i dont
; želite uporabiti.
movlw 0x06
movwf CMCON; Primerjalni ref morajo biti omogočeni
; čeprav i dont želite uporabiti primerjalni
BANK1
BSF Vrčon, VREN; Omogoči primerjalni ref
BANK0; Nastavitev ADCON0 = Ljust; Vdd = ref; xx; CHS = 00; GODONE; Onemogoči
movlw 0x00
movwf ADCON0ENABLE_ADCFET_OFF
Onemogočiti; VVVVVVVVVVVVVVVVVVVVV
* PROGRAM MAIN LOOP *
zanke:;...........................
; Ali ADC na kanalu 0
BCF PIR1, ADIF
nop
DISABLE_ADC
ADC_CH0; Spremeni ADC kanal
ENABLE_ADCklic ADC_channel_changeover_delay
D0_ADC
jajce:
btfsc ADCON0, 1
Goto jajce
;............................
movf ADRESH, 0
movwf val0movlw 0x7F
subwf val0, 0
btfsc STATUS, C
FET_OFF
movlw 0x7F
subwf val0, 0
btfss STATUS, C
FET_ON
;............................;............................;----------------------------
; Ali ADC na kanal 1
BCF PIR1, ADIF
nop
DISABLE_ADC
ADC_CH1; Spremeni ADC kanal
ENABLE_ADC
klic ADC_channel_changeover_delay
DO_ADC
pes:
btfsc ADCON0, 1
Goto pes
;............................
movf ADRESH, 0
movwf VAL1movlw 0x7F
subwf VAL1, 0
btfsc STATUS, C
Onemogočiti
movlw 0x7F
subwf val0, 0
btfss STATUS, C
Omogočajo;----------------------------
Goto zanka
; * END OF MAIN PROGRAM LOOP *
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ADC_channel_changeover_delay:
movlw 0x0F
movwf ccd0
FFF:
decfsz ccd0, 1
Goto FFF
retlw 0x00konec