Z
zanor
Guest
Hei!
Olen käynnissä tehdä oman rullata johti sign.Almoast kaikki toimii sakkoa nyt.Olen perustanut timer1 (btw, pic16f648a) ja 1:8 prescale, ja keskeyttää on ylivuoto.Tämä toimii hyvin, mutta joskus se vaan toteaa, että se ei keskeytä mitään lisää.
Merkki rullaa, mutta sitten yhtäkkiä se pysähtyy (satunnaisesti asema merkkijono) ja pysyy siellä.Tiedän muun PIC-ohjelma jatkaa toimintaansa, koska voin käyttää 5 riviä ja vain 1 on pala kerrallaan.
Minulla on myös joitakin taulukoita minun koodi, että minun täytyy muuttaa PCLATCH ennen kuin hypätä, se voisi olla jotain mieltä?
Please help me!
Olen Jätä koko koodi, Se on vähän sekainen
<img src="http://www.edaboard.com/images/smiles/icon_razz.gif" alt="Razz" border="0" />Olen yrittänyt toisen sirun niin thats not foult ...
Koodi:__config 0x3F50
LIST P = PIC16F648A
ovat <P16F648A.INC>; Muuttujat ja vakiot
cblock 0x20; alusta yleiskäyttöön tarkoitettujen rekisterien
määrä, joita käytetään välittömästi rutiini
count1, joita käytetään välittömästi rutiini
LASKE.A, joita käytetään välittömästi rutiini
countb, joita käytetään välittömästi rutiini
SENDME
CR; riville
LOOPC; Loop counter
LOOPD; Loop tiedot
STRING_I; String hakemisto
CHAR_I; Char hakemisto
C_FONT Current font
O_FONT; Offset
P_FONT Page
Temp
temp2
tmp_status; Käytetään tallentaa info aikana keskeyttää
tmp_w; Käytetään tallentaa info aikana keskeyttää
endcSCK EQU 0x06; HC595 Serial Clock
SI EQU 0x05; HC595 Serial Data
RCK EQU 0x07; HC595 Output kellon, Nieriä ja string osoite
Merkkijonotaulukkoon EQU 0x500
FontTable EQU 0xA00ORG 000h, palauttaa ohjaa ohjelman tähän kohtaanGOTO PRG_STARTORG 004H, keskeyttää ohjaa ohjelman täältä
Movwf tmp_w
MOVFW TILA
Movwf tmp_statusBiologinen kertymistekijä BCF PIR1, TMR1IFINCF CHAR_IMOVFW CHAR_I
SUBLW 0x06
BTFSS STATUS, Z
GOTO DoneMOVLW 0x01
Movwf CHAR_I
INCF STRING_Itehty
MOVFW tmp_status
Movwf STATUS
MOVFW tmp_w
RETFIE
PRG_START
; Alusta sataman
BSF STATUS, RP0; Bank1
MOVLW 0x02; Set RX (RB1) syöttää
Movwf TRISB
MOVLW 0x00
Movwf Trisa, Aseta nopeus 4MHz
MOVLW 0x08
Movwf PCON; USART alustaa
MOVLW 0x24; lähetin: RS232
Movwf TXSTA;
Biologinen kertymistekijä BCF STATUS, RP0; Bank 0
MOVLW 0x90; Receiver: RS232
Movwf RCSTA;; USART Siirtonopeus säätää
BSF STATUS, RP0; Bank1
MOVLW 0x19; Aseta Siirtonopeus 9,6000 @ 4 MHz
Movwf SPBRG
Biologinen kertymistekijä BCF STATUS, RP0; Bank 0; Näet Timer1
MOVLW 0x31;
Movwf T1CON; Salli keskeytykset
BSF INTCON, GIE, maailmanlaajuinen keskeyttää, jotta
BSF INTCON, PEIE, jotta reuna interrrupt
BSF STATUS, RP0; Bank1
BSF PIE1, TMR1IE, jotta timer1 keskeyttää
Biologinen kertymistekijä BCF STATUS, RP0; Bank0
MOVLW 0x05; alkaa klo alariville
Movwf CR, työ-ja ylöspäin.MOVLW 0x01, 1 - 5, 1 = Space
Movwf CHAR_I
MOVLW 0x00
Movwf STRING_ITÄRKEIMMISTÄ
MOVLW 0x08; Loop trough 8 bittiä
Movwf LOOPCBSF PORTB, SCK; Lähetä alku
Biologinen kertymistekijä BCF PORTB, SCK; kellon pulssiaCLRF LOOPD; aloittaa alustaMOVF STRING_I, F, Katso, jos se
BTFSC STATUS, Z, on ensimmäinen char
GOTO täällä, Yes?
jätä tämä osaDECF STRING_I, FCALL get_char
CALL get_font; Get rivin tietojaMovwf LOOPDINCF STRING_I, FTÄSTÄCALL get_char
CALL get_font; Get rivin tietojaMovwf temp2
RLF temp2, F
RLF temp2, F
RLF temp2, FMOVFW CHAR_I
Movwf TempLOOP1
RLF temp2, F
RLF LOOPD, FDECFSZ Temp, F
GOTO LOOP1TILAAJAYHTEYKSIENBCF PORTB, SI, Vapaa vähän lähettää
RLF LOOPD, F, Kierto niin saamme vähän
; Haluamme ottaa Carrey
BTFSC STATUS, C; Saimmeko 1?
BSF PORTB, SI, kyllä sitten asettaa vähän lähettämäänBSF PORTB, SCK ja lähetä
Biologinen kertymistekijä BCF PORTB, SCKDECFSZ LOOPC, F, Otto silmukan laskuri,
GOTO LOOP; me valmis kiehkura?MOVLW 0x00
Movwf PORTABSF PORTB, RCK, kyllä, niin näyttö
Biologinen kertymistekijä BCF PORTB, RCK, linja lähettiMOVFW CR; Siirry nykyisen rivin W
CALL tbl_row; Get PORTA tavu
Movwf PORTA; Näytä riville; CALL Delay1DECFSZ CR, F
GOTO MAIN, ei viimeisen rivin näyttö Seuraava
MOVLW 0x05; viimeisen rivin alkaa
Movwf CR; alariville uudelleen.GOTO MAINget_char
MOVLW HIGH tbl_string
Movwf PCLATHMOVFW STRING_I
CALL tbl_stringMovwf Temp
MOVLW HIGH MAIN
Movwf PCLATHMOVFW tempPALAUTTAMISTAget_font
Movwf C_FONTMOVLW HIGH tbl_font; Get aloitussivu
Movwf P_FONT; osoite.MOVLW LOW tbl_font; Get offset
ADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF CR, W
Movwf O_FONTMOVFW P_FONT
Movwf PCLATHMOVFW O_FONT
CALL tbl_fontMovwf Temp
MOVLW HIGH MAIN
Movwf PCLATH
MOVFW tempPALAUTTAMISTAtbl_row
addwf PCL, F
retlw 0x00; Dummy merkintä .....
(PCL 0)
retlw 0x01, rivi 1 (PORTA tavu)
retlw 0x02; Row 2
retlw 0x04; ...
retlw 0x08
retlw 0x80tbl_data
addwf PCL, F
retlw 0x00; Dummy merkintä .....
(PCL 0)
retlw 0xDB; Rivi 1 tiedot
retlw 0xAA; Row 2
retlw 0x81; ...
retlw 0x0F
retlw 0xFF, Delay rutiinit (Ripped muodostavat noin sivusto)Long_Delay
movlw d'50 '; viive 5 sekuntia
call Delay100W
tuotonDelay100W movwf count; viive W x 100ms
D2 soittaa Delay100 suurin sallittu viive 25,5 sekuntia
decfsz määrä, f
goto d2
tuotonDelay255 movlw 0xff; viive 255 mS
goto d0
Delay100 movlw d'100 '; viive 100ms
goto d0
Delay50 movlw d'50 '; viive 50ms
goto d0
Delay20 movlw d'20 '; viive 20ms
goto d0
Delay10 movlw d'10 '; viive 10 mS
goto d0
Delay1 movlw d'1 '; viive 1ms
goto d0
Delay5 movlw 0x05; viive 5,000 ms (4 MHz Clock)
d0 movwf count1
d1 movlw 0xE7
movwf LASKE.A
movlw 0x04
movwf countb
Delay_0 decfsz LASKE.A, f
goto 2 dollaria
decfsz countb, f
goto Delay_0decfsz count1, f
goto d1
tuoton
ORG merkkijonotaulukkoon
tbl_stringADDWF PCL, Fdt "Stian AAAABBBBCCCCAAAABBBBCCCC"
dt "B B B B B"
dt "D D D D D"ORG FontTable
tbl_fontMovwf PCLdt 0x00, 0x00, 0x00, 0x00, 0x00, 0, Dummy merkintä
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
Olen käynnissä tehdä oman rullata johti sign.Almoast kaikki toimii sakkoa nyt.Olen perustanut timer1 (btw, pic16f648a) ja 1:8 prescale, ja keskeyttää on ylivuoto.Tämä toimii hyvin, mutta joskus se vaan toteaa, että se ei keskeytä mitään lisää.
Merkki rullaa, mutta sitten yhtäkkiä se pysähtyy (satunnaisesti asema merkkijono) ja pysyy siellä.Tiedän muun PIC-ohjelma jatkaa toimintaansa, koska voin käyttää 5 riviä ja vain 1 on pala kerrallaan.
Minulla on myös joitakin taulukoita minun koodi, että minun täytyy muuttaa PCLATCH ennen kuin hypätä, se voisi olla jotain mieltä?
Please help me!
Olen Jätä koko koodi, Se on vähän sekainen
<img src="http://www.edaboard.com/images/smiles/icon_razz.gif" alt="Razz" border="0" />Olen yrittänyt toisen sirun niin thats not foult ...
Koodi:__config 0x3F50
LIST P = PIC16F648A
ovat <P16F648A.INC>; Muuttujat ja vakiot
cblock 0x20; alusta yleiskäyttöön tarkoitettujen rekisterien
määrä, joita käytetään välittömästi rutiini
count1, joita käytetään välittömästi rutiini
LASKE.A, joita käytetään välittömästi rutiini
countb, joita käytetään välittömästi rutiini
SENDME
CR; riville
LOOPC; Loop counter
LOOPD; Loop tiedot
STRING_I; String hakemisto
CHAR_I; Char hakemisto
C_FONT Current font
O_FONT; Offset
P_FONT Page
Temp
temp2
tmp_status; Käytetään tallentaa info aikana keskeyttää
tmp_w; Käytetään tallentaa info aikana keskeyttää
endcSCK EQU 0x06; HC595 Serial Clock
SI EQU 0x05; HC595 Serial Data
RCK EQU 0x07; HC595 Output kellon, Nieriä ja string osoite
Merkkijonotaulukkoon EQU 0x500
FontTable EQU 0xA00ORG 000h, palauttaa ohjaa ohjelman tähän kohtaanGOTO PRG_STARTORG 004H, keskeyttää ohjaa ohjelman täältä
Movwf tmp_w
MOVFW TILA
Movwf tmp_statusBiologinen kertymistekijä BCF PIR1, TMR1IFINCF CHAR_IMOVFW CHAR_I
SUBLW 0x06
BTFSS STATUS, Z
GOTO DoneMOVLW 0x01
Movwf CHAR_I
INCF STRING_Itehty
MOVFW tmp_status
Movwf STATUS
MOVFW tmp_w
RETFIE
PRG_START
; Alusta sataman
BSF STATUS, RP0; Bank1
MOVLW 0x02; Set RX (RB1) syöttää
Movwf TRISB
MOVLW 0x00
Movwf Trisa, Aseta nopeus 4MHz
MOVLW 0x08
Movwf PCON; USART alustaa
MOVLW 0x24; lähetin: RS232
Movwf TXSTA;
Biologinen kertymistekijä BCF STATUS, RP0; Bank 0
MOVLW 0x90; Receiver: RS232
Movwf RCSTA;; USART Siirtonopeus säätää
BSF STATUS, RP0; Bank1
MOVLW 0x19; Aseta Siirtonopeus 9,6000 @ 4 MHz
Movwf SPBRG
Biologinen kertymistekijä BCF STATUS, RP0; Bank 0; Näet Timer1
MOVLW 0x31;
Movwf T1CON; Salli keskeytykset
BSF INTCON, GIE, maailmanlaajuinen keskeyttää, jotta
BSF INTCON, PEIE, jotta reuna interrrupt
BSF STATUS, RP0; Bank1
BSF PIE1, TMR1IE, jotta timer1 keskeyttää
Biologinen kertymistekijä BCF STATUS, RP0; Bank0
MOVLW 0x05; alkaa klo alariville
Movwf CR, työ-ja ylöspäin.MOVLW 0x01, 1 - 5, 1 = Space
Movwf CHAR_I
MOVLW 0x00
Movwf STRING_ITÄRKEIMMISTÄ
MOVLW 0x08; Loop trough 8 bittiä
Movwf LOOPCBSF PORTB, SCK; Lähetä alku
Biologinen kertymistekijä BCF PORTB, SCK; kellon pulssiaCLRF LOOPD; aloittaa alustaMOVF STRING_I, F, Katso, jos se
BTFSC STATUS, Z, on ensimmäinen char
GOTO täällä, Yes?
jätä tämä osaDECF STRING_I, FCALL get_char
CALL get_font; Get rivin tietojaMovwf LOOPDINCF STRING_I, FTÄSTÄCALL get_char
CALL get_font; Get rivin tietojaMovwf temp2
RLF temp2, F
RLF temp2, F
RLF temp2, FMOVFW CHAR_I
Movwf TempLOOP1
RLF temp2, F
RLF LOOPD, FDECFSZ Temp, F
GOTO LOOP1TILAAJAYHTEYKSIENBCF PORTB, SI, Vapaa vähän lähettää
RLF LOOPD, F, Kierto niin saamme vähän
; Haluamme ottaa Carrey
BTFSC STATUS, C; Saimmeko 1?
BSF PORTB, SI, kyllä sitten asettaa vähän lähettämäänBSF PORTB, SCK ja lähetä
Biologinen kertymistekijä BCF PORTB, SCKDECFSZ LOOPC, F, Otto silmukan laskuri,
GOTO LOOP; me valmis kiehkura?MOVLW 0x00
Movwf PORTABSF PORTB, RCK, kyllä, niin näyttö
Biologinen kertymistekijä BCF PORTB, RCK, linja lähettiMOVFW CR; Siirry nykyisen rivin W
CALL tbl_row; Get PORTA tavu
Movwf PORTA; Näytä riville; CALL Delay1DECFSZ CR, F
GOTO MAIN, ei viimeisen rivin näyttö Seuraava
MOVLW 0x05; viimeisen rivin alkaa
Movwf CR; alariville uudelleen.GOTO MAINget_char
MOVLW HIGH tbl_string
Movwf PCLATHMOVFW STRING_I
CALL tbl_stringMovwf Temp
MOVLW HIGH MAIN
Movwf PCLATHMOVFW tempPALAUTTAMISTAget_font
Movwf C_FONTMOVLW HIGH tbl_font; Get aloitussivu
Movwf P_FONT; osoite.MOVLW LOW tbl_font; Get offset
ADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF C_FONT, W
BTFSC STATUS, C
INCF P_FONT, FADDWF CR, W
Movwf O_FONTMOVFW P_FONT
Movwf PCLATHMOVFW O_FONT
CALL tbl_fontMovwf Temp
MOVLW HIGH MAIN
Movwf PCLATH
MOVFW tempPALAUTTAMISTAtbl_row
addwf PCL, F
retlw 0x00; Dummy merkintä .....
(PCL 0)
retlw 0x01, rivi 1 (PORTA tavu)
retlw 0x02; Row 2
retlw 0x04; ...
retlw 0x08
retlw 0x80tbl_data
addwf PCL, F
retlw 0x00; Dummy merkintä .....
(PCL 0)
retlw 0xDB; Rivi 1 tiedot
retlw 0xAA; Row 2
retlw 0x81; ...
retlw 0x0F
retlw 0xFF, Delay rutiinit (Ripped muodostavat noin sivusto)Long_Delay
movlw d'50 '; viive 5 sekuntia
call Delay100W
tuotonDelay100W movwf count; viive W x 100ms
D2 soittaa Delay100 suurin sallittu viive 25,5 sekuntia
decfsz määrä, f
goto d2
tuotonDelay255 movlw 0xff; viive 255 mS
goto d0
Delay100 movlw d'100 '; viive 100ms
goto d0
Delay50 movlw d'50 '; viive 50ms
goto d0
Delay20 movlw d'20 '; viive 20ms
goto d0
Delay10 movlw d'10 '; viive 10 mS
goto d0
Delay1 movlw d'1 '; viive 1ms
goto d0
Delay5 movlw 0x05; viive 5,000 ms (4 MHz Clock)
d0 movwf count1
d1 movlw 0xE7
movwf LASKE.A
movlw 0x04
movwf countb
Delay_0 decfsz LASKE.A, f
goto 2 dollaria
decfsz countb, f
goto Delay_0decfsz count1, f
goto d1
tuoton
ORG merkkijonotaulukkoon
tbl_stringADDWF PCL, Fdt "Stian AAAABBBBCCCCAAAABBBBCCCC"
dt "B B B B B"
dt "D D D D D"ORG FontTable
tbl_fontMovwf PCLdt 0x00, 0x00, 0x00, 0x00, 0x00, 0, Dummy merkintä
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00
dt 0x00, 0x00, 0x00, 0x00, 0x00