C
c36041254
Guest
, what I want to do is that LED # 1 lights continiously as power is switched on and as interrupt occur (RB4 goes HIGH ) LED # 1 gets off and LED # 2 lights on and this remains so untill interrupt is not removed.
Snažím se používat IOC (interr. o změnu) v roce 628, zde je kód, který dobře funguje na simmulator ale ne na hardware,
to, co chci udělat, je, že LED # 1 světel continiously jak moc je zapnutý a jako přerušení nastat (RB4 jde HIGH) LED # 1 dostane off a LED # 2 světla, a to tak zůstane až do přerušení není odstraněna.
Ale, co se vlastně děje, je, že jako interr.nastat (RB4 jde vysoká) LED # 1 zhasne, ale LED # 2 není rozsvítí, nemůže pochopit, co je špatně, prosím pomozte!
Kód:
Seznam p = 16f628
# Include <p16f628.inc>
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
ERRORLEVEL -302
cblock 0x20
temp
temp_s
endc
;************************************************* *****************
org 0x00
goto hlavní
;*********************************** Přerušit LOOP ************ *****
org 0x04
inter:
MOVWF temp
swapf STATUS, W
clrf STATUS
MOVWF temp_s
MOVLW b'10000000 '
MOVWF PORTA
btfsc PORTB, 0x04
goto inter
BCF INTCON, 0x00
swapf temp_s, w
MOVWF STATUS
swapf temp, w
retfiehlavní:
BSF INTCON, 0x07; Globel přerušení povolit (používáme interr.)BSF INTCON, 0x03, RB4-RB7 přerušení na změnu je povolena / jinými slovy, tyto piny budou fungovat i jako
, Přerušení a přerušení dojde pokaždé, když některý z těchto pin změny stavu
, Tj.: vysoké až nízké, nebo od nejnižší k nejvyšší, nemůžeme nastavit tak, aby se na eather jednoho státu změnu
BCF INTCON, 0x00, jasná RB4-RB7 přerušení vlajku tak, že jiný interr.
může dojít.
;********************************** SET UP Porty *********** ******
BSF STATUS, Rp0, přepínač bance 1
MOVLW b'00010001 '
MOVWF TRISB; nastavit RB0 & RB4 jako vstupní
MOVLW b'00000000 '
MOVWF TRISA; setPORT všech výstupních
BCF OPTION_REG, 0x07, aby slabé zatáhněte na port b / zatáhněte rozumí vnitřní odpory
BSF OPTION_REG, 0x06, interuupt na rostoucí věk / toto je defoult nastavení
BCF STATUS, Rp0, zpět na bankovní 0
MOVLW 0x07; zase komparátory off, tak vysoko, bude jednoduché
, HIGH spíše než 5 V (v porovnání se dodávky), takže s nízkým
MOVWF CMCONSmyčky:MOVLW b'00000001 '
MOVWF PORTA, nastavte pin 0 z přístavu HIGH
goto Smyčka
END
Snažím se používat IOC (interr. o změnu) v roce 628, zde je kód, který dobře funguje na simmulator ale ne na hardware,
to, co chci udělat, je, že LED # 1 světel continiously jak moc je zapnutý a jako přerušení nastat (RB4 jde HIGH) LED # 1 dostane off a LED # 2 světla, a to tak zůstane až do přerušení není odstraněna.
Ale, co se vlastně děje, je, že jako interr.nastat (RB4 jde vysoká) LED # 1 zhasne, ale LED # 2 není rozsvítí, nemůže pochopit, co je špatně, prosím pomozte!
Kód:
Seznam p = 16f628
# Include <p16f628.inc>
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT
ERRORLEVEL -302
cblock 0x20
temp
temp_s
endc
;************************************************* *****************
org 0x00
goto hlavní
;*********************************** Přerušit LOOP ************ *****
org 0x04
inter:
MOVWF temp
swapf STATUS, W
clrf STATUS
MOVWF temp_s
MOVLW b'10000000 '
MOVWF PORTA
btfsc PORTB, 0x04
goto inter
BCF INTCON, 0x00
swapf temp_s, w
MOVWF STATUS
swapf temp, w
retfiehlavní:
BSF INTCON, 0x07; Globel přerušení povolit (používáme interr.)BSF INTCON, 0x03, RB4-RB7 přerušení na změnu je povolena / jinými slovy, tyto piny budou fungovat i jako
, Přerušení a přerušení dojde pokaždé, když některý z těchto pin změny stavu
, Tj.: vysoké až nízké, nebo od nejnižší k nejvyšší, nemůžeme nastavit tak, aby se na eather jednoho státu změnu
BCF INTCON, 0x00, jasná RB4-RB7 přerušení vlajku tak, že jiný interr.
může dojít.
;********************************** SET UP Porty *********** ******
BSF STATUS, Rp0, přepínač bance 1
MOVLW b'00010001 '
MOVWF TRISB; nastavit RB0 & RB4 jako vstupní
MOVLW b'00000000 '
MOVWF TRISA; setPORT všech výstupních
BCF OPTION_REG, 0x07, aby slabé zatáhněte na port b / zatáhněte rozumí vnitřní odpory
BSF OPTION_REG, 0x06, interuupt na rostoucí věk / toto je defoult nastavení
BCF STATUS, Rp0, zpět na bankovní 0
MOVLW 0x07; zase komparátory off, tak vysoko, bude jednoduché
, HIGH spíše než 5 V (v porovnání se dodávky), takže s nízkým
MOVWF CMCONSmyčky:MOVLW b'00000001 '
MOVWF PORTA, nastavte pin 0 z přístavu HIGH
goto Smyčka
END