Re: Probléma 16F871 UART inicializálásakor?

Jozsef CSEH jozsef.cseh at herterkom.hu
Wed Aug 21 19:48:54 CEST 2002


Hello!

1. Kerdes: a szintilleszto HW-t megcsinaltad?
(soros port:+/-12V , PIC:TTL logikai szintek)
Ellenorzes:vedd ki a PIC-t, helyette rakj be rovidzarat az RX(26.lab)
es TX(25.lab)laba koze(helyett), majd a hyperterminalban (windows-hoz
adott soros terminalprogram) latnod kell visszajonni a karaktereket
amiket begepelsz.
2. Lapozod a PIC-t amikor kell?(de undorodom ettol a lapozastol!)
pl. a:
        MOVWF   TXREG
KEZDET
        INCF    TRISB,F
tuti nem egy lapon van(TXREG ill TRISB).
Nem inkabb PORTB a TRISB helyett?

3. Reszletek egy nalam mukodiko progibol (poll-os kezelessel),
kicsit belenyultam, ezert lehet, hogy belekerult hiba.
Ezt is a hyperterminallal lehet ellenorizni.
(nalam 4MHz-es orajellel, ha nalad 20MHz, akkor az SPBRG=129 jo):

list            p=16f871        ; list directive to defineprocessor
#include        <p16f871.inc>   ; processorspecific variable definitions

page0           equ     H'000'
page1           equ     H'080'
page2           equ     H'100'
page3           equ     H'180'

reset           ORG     0x0000
                goto    USARTinic

                ORG     0x0004
                RETFIE

USARTinic
                banksel page1           ; Go to Bank1
                MOVLW   D'25'           ; Set Baud rate
                MOVWF   SPBRG           ; 4000000/16/(25+1)=9615 Baud
                MOVLW   0x24            ; 8-bit transmit, transmitter enabled,
                MOVWF   TXSTA           ; asynchronous mode, high speed mode
                banksel page0           ; Go to Bank 0
                MOVLW   0x90            ; 8-bit receive, receiver enabled,
                MOVWF   RCSTA           ; serial port enabled

chkseria        BTFSS   PIR1,RCIF       ;erkezett-e uj karakter?
                GOTO    chksere         ;  nem. Vetel vege, mehetunk tovabb.
                BTFSS   PIR1,TXIF       ;  igen,ures-e az adas reg.?
                GOTO    chksere         ;    nem
                MOVF    RCREG,W         ;    igen, vett kar.-t az adas reg-be
                MOVWF   TXREG
chksere         RETURN

Main            CALL    chkseria
                GOTO    Main
                end                     ; directive 'end of program'

4.Szerintem ezek feleslegesek:
        BCF     INTCON,GIE      ;hogy ne szakitson felbe
amig nincs retfie addig ugysem jon ujabb interrupt
        BSF     INTCON,GIE      ;mert csak
ezt megteszi a RETFIE, sot talan hiba is mert ujabb IT johet a retfie
elott.
5.Hiba!!!:
        MOVLW   0XBF            ;ezt nem tudom kell-e
        MOVWF   TRISC           ;csak a biztonsag kedveert
manual 95.oldal:"TRISC<7:6> have to be set "!!!!
ezert nem ad! Igy nem a soros port vezerli az RC6 labat, hanem a
PORTB 6. bitje.
6. Ki kezeli a veteli IT-t? Mivel az erkezett byte-ot nem olvasod ki,
ezert az IT bit nem torlodik. Vagy venni nem akarsz?(nem is
engedelyezted, de akkor minek konfiguralni?)
7. Az adasoldal mindenfele shiftelt zagyvasagot kuldene egyfolytaban
(ha nem lenne az 5. pontbeli hiba), ezt igy akarod?
                
Hello Simon,

Tuesday, August 20, 2002, 5:30:46 PM, you wrote:

SD> Sziasztok!

SD> Probaltam irni egy 1xű kis progit PIC16F871- re, amivel
SD> ossze tudnam kapcsolni a PIC-et egy PC-vel, de sajna
SD> valamiert nem műkodik.





More information about the Elektro mailing list