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 ]

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
'------------------------------------------------------------------------------

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?

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! :D
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.