 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
TRIROG Član

Pridružen-a: Čet 30 Avg 2007 12:23 Prispevkov: 84 Aktiv.: 0.39 Kraj: Ljubljana
|
Objavljeno: Čet Dec 09, 2010 9:34 am Naslov sporočila: PIC UART TEST - port iz 628 na 627 - pomoč? |
|
|
Dobro jutro!
Včeraj sem se malo igral s spodnjim programčkom, ki naj bi ob zagonu izpisal 16627 Alive potem pa vračal vse vnešene znake ( pic je preko MAX 232 priklopljen na PC)
Težava je v tem, da je program v originalu pisan za 628ko.
Ob priklopu se mi sicer v terminalu izpišejo neki znakci, vendar niti približno ne gre za napis ki bi naj bil poslan?
Lahko kdo prosim preveri ali je koda sploh ustrezna?
Hvala!
Koda: |
;*******************************************************************
; Function: Sends alive message, then echoes characters at 9600 bps
; Processor: PIC16F628 at 4 MHz using internal RC oscillator
; Hardware: Testboard K4
; Filename: 628uart.asm
; Author: Lars Petersen, oz1bxm@pobox.com
; Website: www.qsl.net/oz1bxm/PIC/pic.htm
; Credit: Tony Nixon's test program at
; www.piclist.com/techref/microchip/16f877/setup.htm
;*******************************************************************
LIST P=16F627, R=DEC ; Use the PIC16F628 and decimal system
#include "P16F627.INC" ; Include header file
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
CBLOCK 0x20 ; Declare variable addresses starting at 0x20
dataL
ENDC
ORG 0x000 ; Program starts at 0x000
;
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
movlw 7
movwf CMCON ; CMCON=7 set comperators off
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
movlw b'00000000' ; set up portA
movwf PORTA
movlw b'00000100' ; RB2(TX)=1 others are 0
movwf PORTB
bsf STATUS,RP0 ; RAM PAGE 1
movlw 0xFF
movwf TRISA ; portA all pins input
movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output
movwf TRISB
; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
;
movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps)
movwf SPBRG
movlw b'00100100' ; brgh = high (2)
movwf TXSTA ; enable Async Transmission, set brgh
bcf STATUS,RP0 ; RAM PAGE 0
movlw b'10010000' ; enable Async Reception
movwf RCSTA
;
; ------------------------------------
; PROVIDE A SETTLING TIME FOR START UP
; ------------------------------------
;
clrf dataL
settle decfsz dataL,F
goto settle
movf RCREG,W
movf RCREG,W
movf RCREG,W ; flush receive buffer
;
; ---------
; MAIN LOOP
; ---------
;
call message ; send "16F628 alive"
loop call receive ; wait for a char
call send ; send the char
goto loop
;
; -------------------------------------------
; RECEIVE CHARACTER FROM RS232 AND STORE IN W
; -------------------------------------------
; This routine does not return until a character is received.
;
receive btfss PIR1,RCIF ; (5) check for received data
goto receive
movf RCREG,W ; save received data in W
return
;
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send movwf TXREG ; send data in W
TransWt bsf STATUS,RP0 ; RAM PAGE 1
WtHere btfss TXSTA,TRMT ; (1) transmission is complete if hi
goto WtHere
bcf STATUS,RP0 ; RAM PAGE 0
return
;
; -------
; MESSAGE
; -------
;
message movlw '1'
call send
movlw '6'
call send
movlw 'F'
call send
movlw '6'
call send
movlw '2'
call send
movlw '7'
call send
movlw ' '
call send
movlw 'a'
call send
movlw 'l'
call send
movlw 'i'
call send
movlw 'v'
call send
movlw 'e'
call send
movlw 0x0D ; CR
call send
movlw 0x0A ; LF
call send
return
END
|
|
|
Nazaj na vrh |
|
 |
bferlic Član

Pridružen-a: Tor 09 Dec 2003 17:28 Prispevkov: 99 Aktiv.: 0.42 Kraj: Brezula, Rače
|
Objavljeno: Čet Dec 09, 2010 10:42 am Naslov sporočila: |
|
|
Nisem gledal vsega, ampak za delovanje USART-a morata biti postavljena TRISB<2:1> oba na 1, kljub temu, da je en pin izhod.
LP Boštjan |
|
Nazaj na vrh |
|
 |
TRIROG Član

Pridružen-a: Čet 30 Avg 2007 12:23 Prispevkov: 84 Aktiv.: 0.39 Kraj: Ljubljana
|
Objavljeno: Pet Dec 10, 2010 10:19 am Naslov sporočila: |
|
|
Sem rešil... zadeva dela ... hvala! |
|
Nazaj na vrh |
|
 |
TRIROG Član

Pridružen-a: Čet 30 Avg 2007 12:23 Prispevkov: 84 Aktiv.: 0.39 Kraj: Ljubljana
|
Objavljeno: Pet Dec 10, 2010 10:59 am Naslov sporočila: |
|
|
bferlic je napisal/a: |
Nisem gledal vsega, ampak za delovanje USART-a morata biti postavljena TRISB<2:1> oba na 1, kljub temu, da je en pin izhod.
LP Boštjan |
Lahko razložiš kaj pomeni TRISB<2:1>?
Hvala! |
|
Nazaj na vrh |
|
 |
bferlic Član

Pridružen-a: Tor 09 Dec 2003 17:28 Prispevkov: 99 Aktiv.: 0.42 Kraj: Brezula, Rače
|
Objavljeno: Pet Dec 10, 2010 3:33 pm Naslov sporočila: |
|
|
Zdravo
Mišljeni so TRISB biti "od 2 do 1", v tem primeru sta samo 2 in 1, biti pa se označujejo 0-7.
V zgornjem primeru si v TRISB shranil b'11110010', torej je TRISB<2> 0, kar pa glede na datasheet pomeni, da je USART izklopljen. Zdaj če si pa kaj drugega popravil, to pa ne, in ti vseeno dela, sem pa mogoče še kaj spregledal
LP |
|
Nazaj na vrh |
|
 |
TRIROG Član

Pridružen-a: Čet 30 Avg 2007 12:23 Prispevkov: 84 Aktiv.: 0.39 Kraj: Ljubljana
|
Objavljeno: Sob Dec 11, 2010 12:01 am Naslov sporočila: |
|
|
Hoj, hvala oznaka mi ni bila poznana...rookie pač...
nekje sem prebral, da je v takšnem modeu ne glede na to ali ga določiš kot vhhodnega ali ne vhoden... |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|