proteusta sorunsuz calışan ve kütüphanesi olan ad8403 lü dijital potansiyometre kodlarını ve isis şemasını sunuyorum umarım işinize yarar..
Kod:
'
****************************************************************
'* Name : AD8403.BAS *
'* Author : [ergunbt] *
'* Notice : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 09.09.2015 *
'* Version : 1.0 *
'* Notes : AD8403 dijital pot uygalaması *
'* : *
'****************************************************************
REMARKS On
Include "proton_20.inc"
Device 16F877A
Symbol CS PORTB.5
Symbol Sdi PORTB.4
Symbol Clk PORTB.3
Symbol AZALT PORTB.0
Symbol ARTTIR PORTB.1
Symbol MODE PORTB.2
Symbol true = 1
Symbol false = 0
Dim HESAP1 As Word
Dim P_OUT1 As Word
Dim HESAP2 As Word
Dim P_OUT2 As Word
Dim HESAP3 As Word
Dim P_OUT3 As Word
Dim HESAP4 As Word
Dim P_OUT4 As Word
Dim MOD As Byte
Print $FE,$50,$08,$04,$02,$0D,$02,$04,$08,$00 'LCD 2. KARAKTER HAFIZASI YÖN İŞARETİ
Cls
'EData 0
HESAP1 = 0
HESAP2 = 0
HESAP3 = 0
HESAP4 = 0
OPTION_REG.7=0
DelayMS 200
Print At 1,1, " ERGUNBT AD8403 "
Print At 2,1, "DIJITAL POT 2015 "
DelayMS 2500
Main:
If MODE=0 Then
While MODE=0 : Wend
MOD=MOD+1
If MOD>3 Then MOD=0
EndIf
If MOD=0 Then
If AZALT=0 Then
If HESAP1 >0 Then
Dec HESAP1
GoSub Potout1
DelayMS 200
EndIf
EndIf
If ARTTIR=0 Then
If HESAP1 <510 Then
Inc HESAP1
If HESAP1>50 Then HESAP1=50
GoSub Potout1
DelayMS 200
EndIf
EndIf
Print At 1,1,2, "POT1 ",DEC2,HESAP1," POT2 ",DEC2,HESAP2
Print At 2,1, " POT3 ",DEC2,HESAP3, " POT4 ",DEC2,HESAP4
EndIf
If MOD=1 Then
If AZALT=0 Then
If HESAP2 >0 Then
Dec HESAP2
GoSub Potout2
DelayMS 200
EndIf
EndIf
If ARTTIR=0 Then
If HESAP2 <510 Then
Inc HESAP2
If HESAP2>50 Then HESAP2=50
GoSub Potout2
DelayMS 200
EndIf
EndIf
Print At 1,1, " POT1 ",DEC2,HESAP1,2,"POT2 ",DEC2,HESAP2
Print At 2,1, " POT3 ",DEC2,HESAP3," POT4 ",DEC2,HESAP4
EndIf
If MOD=2 Then
If AZALT=0 Then
If HESAP3 >0 Then
Dec HESAP3
GoSub Potout3
DelayMS 200
EndIf
EndIf
If ARTTIR=0 Then
If HESAP3 <510 Then
Inc HESAP3
If HESAP3>50 Then HESAP3=50
GoSub Potout3
DelayMS 200
EndIf
EndIf
Print At 1,1, " POT1 ",DEC2,HESAP1, " POT2 ",DEC2,HESAP2
Print At 2,1,2,"POT3 ",DEC2,HESAP3, " POT4 ",DEC2,HESAP4
EndIf
If MOD=3 Then
If AZALT=0 Then
If HESAP4 >0 Then
Dec HESAP4
GoSub Potout4
DelayMS 200
EndIf
EndIf
If ARTTIR=0 Then
If HESAP4 <510 Then
Inc HESAP4
If HESAP4>50 Then HESAP4=50
GoSub Potout4
DelayMS 200
EndIf
EndIf
Print At 1,1, " POT1 ",DEC2,HESAP1, " POT2 ",DEC2,HESAP2
Print At 2,1, " POT3 ",DEC2,HESAP3,2,"POT4 ",DEC2,HESAP4
EndIf
GoTo Main
'POT KONTROLÜNÜ SAĞLAYAN KISIM DATASHEETTEKİ ADRESLERİ VE HESAP DÖNÜŞÜMÜ
Potout1:
P_OUT1=(HESAP1*510)/100
P_OUT1.8=0 'POT ADRESLERİ
P_OUT1.9=0 'POT ADRESLERİ
Low CS
SHOut Sdi,Clk,msbfirst,[P_OUT1\10]
High CS
Return
Potout2:
P_OUT2=(HESAP2*510)/100
P_OUT2.8=1 'POT ADRESLERİ
P_OUT2.9=0 'POT ADRESLERİ
Low CS
SHOut Sdi,Clk,msbfirst,[P_OUT2\10]
High CS
Return
Potout3:
P_OUT3=(HESAP3*510)/100
P_OUT3.8=0 'POT ADRESLERİ
P_OUT3.9=1 'POT ADRESLERİ
Low CS
SHOut Sdi,Clk,msbfirst,[P_OUT3\10]
High CS
Return
Potout4:
P_OUT4=(HESAP4*510)/100
P_OUT4.8=1 'POT ADRESLERİ
P_OUT4.9=1 'POT ADRESLERİ
Low CS
SHOut Sdi,Clk,msbfirst,[P_OUT4\10]
High CS
Return