CCS C ve Proteus 8 - DS1867

Başlatan R3t0qX, 15 Mart 2016, 22:01:37

R3t0qX

Merhaba arkadaslar,

bu altta resimdeki sema icin kod yazdim ama nedense potansiyometrenin bir cikisini dogru duzgun idare edebilsemde 2. cikisi kontrol etmeye kalktigimda 1. cikisindaki voltaj istemsiz yükseliyor. bu istemsiz voltaj yukselmesine nasil engel olabilirim? normalde ds1868 in library sini kullanmadan direk include etmek yerine kodlari yazarak calistirmayi deniyorum. kullandigim kodlarda su:

#include <main.h>

#use fast_io(a)
#use fast_io(b)

#define pot_reset  pin_a3
#define pot_sec    pin_a2
#define arttir pin_a1
#define azalt  pin_a0

#define RST1 PIN_B0
#define CLK PIN_B1
#define DI PIN_B2
#define NUM_POTS 2

BYTE pots[2];

int i = 0;
int b = 0;
int secmesayi = 0;

set_pot (int pot_num, int new_value) {
BYTE i;
BYTE cmd[3];

if (pot_num >= NUM_POTS)
return;

pots[pot_num] = new_value;
cmd[0]=pots[0];
cmd[1]=pots[1];
cmd[2]=0;

for(i=1;i<=7;i++)
shift_left(cmd,3,0);

output_high(RST1);
delay_us(2);

for(i=1;i<=17;i++) {
int z = shift_left(cmd,3,0);
output_bit(DI, z);
delay_us(2);
output_high(CLK);
delay_us(2);
if(i==17)
output_low(RST1);
output_low(CLK);
delay_us(2);
}
}

init_pots ()
{
set_pot (0,0);
set_pot (1,0);
}


void resetfonksiyonu(){
set_pot(0,0);
set_pot(1,0);
}

void sesarttir(int potnumarasi){
if(potnumarasi==0){
if(i<255){
i++;
set_pot(1,b);
set_pot(0,i);
}
}
if(potnumarasi==1){
if(b<255){
b++;
set_pot(potnumarasi,b);
set_pot(0,i);
}
}

}

void sesazalt(int potnumarasi){
if(i>0){
set_pot(potnumarasi,i);
i--;
}
}

void tusicinzaman(){
delay_ms(500);
}
void main()
{
setup_timer_1(T1_DISABLED);      //T1 zamanlayicisi devre disi
setup_timer_2(T2_DISABLED,0,1);  //T2 zamanlayicisi devre disi 
setup_adc_ports(NO_ANALOGS);     //Analog girisi yok
setup_adc(ADC_OFF);              //ADC birimi devre disi
setup_CCP1(CCP_OFF);             //CCP1 birimi devre disi
setup_CCP2(CCP_OFF);             //CCP2 birimi devre disi

set_tris_b(0x00); //B portu cikis olarak tanimlandi
init_pots();

while(TRUE)
{
if(input(pot_reset)){
tusicinzaman();
resetfonksiyonu();
}

if(input(pot_sec)){
tusicinzaman();
secmesayi++;
if(secmesayi==2){
secmesayi=0;
}

}
if(input(arttir)){
tusicinzaman();
sesarttir(secmesayi);
}
if(input(azalt)){
tusicinzaman();
sesazalt(secmesayi);
}

}

}