Martijn v
KIS!!: Keep It Simple
Goedenavond,
Ik ben al een week aan het klooien om een 16f77 met de PC te communiceren. datasheet ken ik nu uit het hoofd.
Van de pic data ontvangen lukt, en werkt perfect.
Data naar de pic toe, reageert niet.
Hyperterminal, proton terminal, VB6 proggramtje, werkt allemaal niet.
Iemand ervaring met dit probleem?
of kan iemand me verder helpen.
[Bericht gewijzigd door Martijn v op ]
Martijn v
KIS!!: Keep It Simple
schop.
' Read and write the hardware USART
DEVICE 16F77 ; We gebruiken een 16F77 type
CONFIG HS_OSC, WDT_OFF, PWRTE_ON ;,LVP_OFF, MCLRE_OFF
DECLARE XTAL 10
ALL_DIGITAL TRUE ; Alle ingangen digitaal
SYMBOL MidP_RED = portA.5 ;'Midpoints' (leds) red
SYMBOL BackLight = portD.4 ;Led naar Vdd
Dim B1 as Byte
'set pin's
' 76543210 'Set 1nput 0utput
TRISA = %00000000
TRISB = %11100000 'Button1, 2 and 3
TRISC = %11000000
TRISD = %01100000 'Calender and temp alert
TRISE = %00000000
PortA = 0 'no output.
PortB = 0
PortC = %00100000 'LampTest = 1 'Active low Lamptest pin on the 74LS47
PortD = %00010000 'BackLight = 1 'Led to Vdd active low
PortE = %00000001 'Tor groen = 1 'Active low tor
SPBRG = 64 ' Set baudrate to 9600(9615) (BR = Fosc/(S*(SPBRG+1))
' 76543210 ' S=Hi speed, =>>> =10*10^6/(16*(64+1)) )
TXSTA = %00100100 ' Enable transmit asynchronous mode, hyspeed
RCSTA = %10010000 ' Enable serial continuous receive
goto loop
'------------------------------------------------------------------------------
' Get a character from the USART receiver
GetChar: B1 = 0 ' Preset to no character received
If PIR1.5 = 1 Then B1 = RCREG ' If receive flag then get character
return
'------------------------------------------------------------------------------
' Send a character to the USART transmitter
PutChar: If PIR1.4 = 0 Then PutChar ' Wait for transmit register empty
TXREG = B1 ' Send character to transmit register
'hrsout b1
Return ' Go back to caller
'------------------------------------------------------------------------------
' Echo received characters in an infinite loop
Loop:
B1 = 50
gosub PutChar
'delayms 500
Gosub GetChar ' Get a character from serial input
If B1 = 0 Then ' No character yet
MidP_RED = 1
Delayms 200
MidP_RED = 0
delayms 200
end if
'Gosub PutChar ' Send character to serial output
Goto Loop ' Do it forever
end
'------------------------------------------------------------------------------
Robbertbd
robotica rules :D
deze heeft shiptronic gemaakt:
DEVICE 16F628 ;Gebruik een 16F628 type
CONFIG WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF, HS_OSC ; de config
XTAL 4 ;Kristal van 4 MHz
ALL_DIGITAL TRUE ;Alle ingangen digitaal
declare HSERIAL_BauD 9600 'set baudrate op 9600
DEclare HSERIAL_RCSTA $90 ' << VUL DEZE WAAREN IN MET HET PROGRAMMA
Declare HSERIAL_TXSTA $24 ' << PIC multi CALC
DECLARE HSERIAL_CLEAR = ON ' reset buffer bij een overflow?
dim waarde as byte ' zet de grote van waarde als een byte
begin: 'hoofdprogramma
hrsin dec waarde 'haal waarde op van de serieele poort (rs232)
hrsout dec waarde 'stuur de waarde die opgehaald is weer serieel uit (rs232)
delayms 10 'wacht 10 miliseconden
TOGGLE PORTA.1 'wissel de status an poort a.1 (pen 18)
DELAYMS 100 'wacht 500 miliseconden
goto begin ' ga naar het begin van het programma
END ' hier is het gedan met de pret, einde programma
mischien dat je hier iets mee kan.
Robbert
Op 7 juni 2007 18:58:55 schreef Martijn v:
schop.' Read and write the hardware USART DEVICE 16F77 ; We gebruiken een 16F77 type CONFIG HS_OSC, WDT_OFF, PWRTE_ON ;,LVP_OFF, MCLRE_OFF DECLARE XTAL 10 ALL_DIGITAL TRUE ; Alle ingangen digitaal SYMBOL MidP_RED = portA.5 ;'Midpoints' (leds) red SYMBOL BackLight = portD.4 ;Led naar Vdd Dim B1 as Byte 'set pin's ' 76543210 'Set 1nput 0utput TRISA = %00000000 TRISB = %11100000 'Button1, 2 and 3 TRISC = %11000000 TRISD = %01100000 'Calender and temp alert TRISE = %00000000 PortA = 0 'no output. PortB = 0 PortC = %00100000 'LampTest = 1 'Active low Lamptest pin on the 74LS47 PortD = %00010000 'BackLight = 1 'Led to Vdd active low PortE = %00000001 'Tor groen = 1 'Active low tor SPBRG = 64 ' Set baudrate to 9600(9615) (BR = Fosc/(S*(SPBRG+1)) ' 76543210 ' S=Hi speed, =>>> =10*10^6/(16*(64+1)) ) TXSTA = %00100100 ' Enable transmit asynchronous mode, hyspeed RCSTA = %10010000 ' Enable serial continuous receive goto loop '------------------------------------------------------------------------------ ' Get a character from the USART receiver GetChar: B1 = 0 ' Preset to no character received If PIR1.5 = 1 Then B1 = RCREG ' If receive flag then get character return '------------------------------------------------------------------------------ ' Send a character to the USART transmitter PutChar: If PIR1.4 = 0 Then PutChar ' Wait for transmit register empty TXREG = B1 ' Send character to transmit register 'hrsout b1 Return ' Go back to caller '------------------------------------------------------------------------------ ' Echo received characters in an infinite loop Loop: B1 = 50 gosub PutChar 'delayms 500 Gosub GetChar ' Get a character from serial input If B1 = 0 Then ' No character yet MidP_RED = 1 Delayms 200 MidP_RED = 0 delayms 200 end if 'Gosub PutChar ' Send character to serial output Goto Loop ' Do it forever end '------------------------------------------------------------------------------
declare voor je Xtal weghalen ?
er staat een REM (",") voor Gosub PutChar dus die regel word nooit uitgevoerd
en ook hiet staat een REM voor en word dus nooit uitgevoerd :
'hrsout b1
welke taal gebruik je?
Martijn v
KIS!!: Keep It Simple
omte beginnnen, dank voor de reacties, ook is crosposten niet gewenst, excuus daarvoor.
Ik gebruik Picbasic van Proton+
decleratie voor Xtal kun je op 4 manieren doen, maar okay, ff geprobeerd, geen geluk.
Putchar staat er 2x
bovenin de loop ook.
Ik heb een sample gepakt uit de sample dirextory, (wel de goie natuurlijk
, en die geprobeerd.
alle registers enz zijn correct volgens de datasheet.
met bovenstaande code schijf je echt direct naar het buffer, en lees je het in uit het buffer.
Ik heb dus ook met Hrsout en Hrsin geprobeerd, maar geen geluk.
maar, Ik heb goed nieuws: het werkt! 
ik vermoed dat het probleem zat in de volgorde van declareren, of in de declaratie van usart.
' Read and write the hardware USART
DEVICE 16F77 ; We gebruiken een 16F77 type
CONFIG HS_OSC, WDT_OFF, PWRTE_ON ;,LVP_OFF, MCLRE_OFF
DECLARE XTAL 10
ALL_DIGITAL TRUE ; Alle ingangen digitaal
SYMBOL MidP_RED = portA.5 ;'Midpoints' (leds) red
SYMBOL BackLight = portD.4 ;Led naar Vdd
Dim Waarde as Byte
'set pin's
' 76543210 'Set 1nput 0utput
TRISA = %00000000
TRISB = %11100000 'Button1, 2 and 3
TRISC = %11000000
TRISD = %01100000 'Calender and temp alert
TRISE = %00000000
PortA = 0 'no output.
PortB = 0
PortC = %00100000 'LampTest = 1 'Active low Lamptest pin on the 74LS47
PortD = %00010000 'BackLight = 1 'Led to Vdd active low
PortE = %00000001 'Tor groen = 1 'Active low tor
DECLARE HSERIAL_BAUD = 2400
' 76543210
Declare HSERIAL_TXSTA %00100000 ' Enable transmit asynchronous mode, hyspeed
Declare HSERIAL_RCSTA %10010000 ' Enable serial continuous receive
DECLARE HSERIAL_CLEAR = ON ' reset buffer bij een overflow?
waarde = 0
goto loop
' Echo received characters in an infinite loop
Loop:
waarde = 0
Waarde = HRSIN , {1000 , Timeout} ' Receive a byte serially into VAR1
Hrsout waarde
GOTO Loop ' Loop forever
Timeout:
delayms 250
BackLight = 0
delayms 250
BackLight = 1
goto loop
end
'------------------------------------------------------------------------------
eigenlijk precies volgens de help dus...
igg thanks voor het meedenken boys.