'****************************************************************
'* Name : Dev_board_demo.BAS *
'* Author : Coenen Stijn [Stynus] *
'* Notice : Copyright (c) 2008 © Elektronica Stynus *
'* : All Rights Reserved *
'* Date : 23/12/2008 *
'* Version : 1.2 *
'* Voor meer info zie: *
'* http://www.schematheek.net/index.php?p=forum/topic&t=72 *
'****************************************************************
Device 16F877A
Config WDT_Off, PWRTE_ON, XT_OSC , LVP_off
Xtal 4
All_Digital = true
'****************************************************************
'RS232
'Symbol TX = PORTC.6
'Symbol RX = PORTC.7
Hserial_Clear = On 'Zorgt ervoor dat de buffer automatisch
'leeg wordt gemaakt voordat er data wordt
'ontvangen
Declare Hserial_Baud 9600 'Snelheid op 9600 bits/seconde instellen
Hserial_RCSTA = %10010000 'Hardware seriële poort opzetten in
'continue mode
Hserial_TXSTA = %00100000 'Verzenden via uart opzetten in assynchrone
'mode
INTCON = %11000000 'Interrupt opzetten
On_Interrupt GoTo SeriIn 'Bij interrupt naar SeriIn springen
PIE1.5 = 1 'Interrupt voor usart opzetten
Symbol klok = PORTB.5
Symbol ZetVast = PORTB.4
Symbol Data0 = PORTD.1 : TRISD.1 = 0
Symbol Data1 = PORTD.0 : TRISD.0 = 0
Symbol Data2 = PORTC.3 : TRISC.3 = 0
Symbol Data3 = PORTC.2 : TRISC.2 = 0
Symbol Data4 = PORTC.1 : TRISC.1 = 0
Symbol Data5 = PORTC.0 : TRISC.0 = 0
Symbol Data6 = PORTE.2 : TRISE.2 = 0
Symbol Data7 = PORTB.3 : TRISB.3 = 0
'****************************************************************
'Variabelen declareren
Dim temp As Byte
Dim index As Byte
Dim serdata As Byte
Dim temp_Data0 As Word
Dim temp_Data1 As Word
Dim temp_Data2 As Word
Dim temp_Data3 As Word
Dim temp_Data4 As Word
Dim temp_Data5 As Word
Dim temp_Data6 As Word
Dim temp_Data7 As Word
Dim Huid_data0 As Word
Dim Huid_data1 As Word
Dim Huid_data2 As Word
Dim Huid_data3 As Word
Dim Huid_data4 As Word
Dim Huid_data5 As Word
Dim Huid_data6 As Word
Dim Huid_data7 As Word
'****************************************************************
Clear
'****************************************************************
Main:
Huid_data0 = %0000000100000001 ^ $FFFF
Huid_data1 = %0000001000000010 ^ $FFFF
Huid_data2 = %0000010000000100 ^ $FFFF
Huid_data3 = %0000100000001000 ^ $FFFF
Huid_data4 = %0001000000010000 ^ $FFFF
Huid_data5 = %0010000000100000 ^ $FFFF
Huid_data6 = %0100000001000000 ^ $FFFF
Huid_data7 = %1000000010000000 ^ $FFFF
For index = 0 To 15
temp_Data0 = Huid_data0
temp_Data1 = Huid_data1
temp_Data2 = Huid_data2
temp_Data3 = Huid_data3
temp_Data4 = Huid_data4
temp_Data5 = Huid_data5
temp_Data6 = Huid_data6
temp_Data7 = Huid_data7
Low Data0 : Low Data1 : Low Data2 : Low Data3
Low Data4 : Low Data5 : Low Data6 : Low Data7
GoSub KlokPuls
For temp = 0 To 15
GoSub DataUit
GoSub KlokPuls
GoSub DataShift
Next
High ZetVast
DelayUS 10
Low ZetVast
DelayMS 500
Huid_data0 = Huid_data0 << 1
Huid_data0 = Huid_data0 ^ $0001
Huid_data1 = Huid_data1 << 1
Huid_data1 = Huid_data1 ^ $0001
Huid_data2 = Huid_data2 << 1
Huid_data2 = Huid_data2 ^ $0001
Huid_data3 = Huid_data3 << 1
Huid_data3 = Huid_data3 ^ $0001
Huid_data4 = Huid_data4 << 1
Huid_data4 = Huid_data4 ^ $0001
Huid_data5 = Huid_data5 << 1
Huid_data5 = Huid_data5 ^ $0001
Huid_data6 = Huid_data6 << 1
Huid_data6 = Huid_data6 ^ $0001
Huid_data7 = Huid_data7 << 1
Huid_data7 = Huid_data7 ^ $0001
Next
GoTo Main
'****************************************************************
KlokPuls:
High klok
DelayUS 20
Low klok
DelayUS 10
Return
DataUit:
Data0 = temp_Data0.0
Data1 = temp_Data1.0
Data2 = temp_Data2.0
Data3 = temp_Data3.0
Data4 = temp_Data4.0
Data5 = temp_Data5.0
Data6 = temp_Data6.0
Data7 = temp_Data7.0
Return
DataShift:
temp_Data0 = temp_Data0 >> 1
temp_Data1 = temp_Data1 >> 1
temp_Data2 = temp_Data2 >> 1
temp_Data3 = temp_Data3 >> 1
temp_Data4 = temp_Data4 >> 1
temp_Data5 = temp_Data5 >> 1
temp_Data6 = temp_Data6 >> 1
temp_Data7 = temp_Data7 >> 1
Return
SeriIn: 'Interrupt routine
HSerIn [serdata] 'ontvangen data in serdata zetten
Print serdata 'ontvangen data op het lcd printen
HSerOut [serdata] 'Data terug naar pc sturen ter
'bevestiging
Context Restore 'Data herstellen en teruggaan
'****************************************************************
End