|
есть фунция в программе:
#define SCLK P1_0
#define DOUT P1_1
#define DIN P1_1
#define DRDY P1_2
#define PIN P1_3
void putint(unsigned char bw)
{
unsigned char i,j;
//int i;
//8-битный вывод старшим битом вперед! 16 ???.2004
for(i=0;i<8;i++){
SCLK=0;
bw=bw<<1;
DOUT=CY;
for(j=0;j<4;j++);//даём устаканиться
SCLK=1;
for(j=0;j<4;j++);//тоже
}
DIN=1;
}
в дебаггере есть ини-файл(имитируем AD7714):
signal void get_mess(void)
{
int i;
unsigned char sum;
while(1){
printf("wait\n");
while(!P1_0)twatch(1);//ждём перехода 0->1
while(P1_0)twatch(1); //ждём перехода 1- 0
printf("transmit begin\n");
sum=0;
for(i=0;i<8;i++){
sum=sum*2;
while(!P1_0)twatch(1);//ждём перехода 0-1
printf("%d \n",sum); //проверочный вывод
if(P1_1) sum++;
while(P1_0)twatch(1); //ждём перехода 1-0
//if(i==7)_break_=1;
}
printf("Sending =%d\n",sum);
P1_2=1;
}
}
signal void SET_DRDY(void)
{
P1_2=0;
twatch(16);
P1_2=1;
}
signal void start(void){
P1_3=0;
twatch(10);
P1_3=1;
}
signal void SET_SCLK(){
P1_0=0;
twatch(16);
P1_0=1;
}
exec("KILL BUTTON *")
define button "DRDY", "SET_DRDY()"
define button "get", "get_mess()"
define button "start", "start()"
define button "SCLK", "SET_SCLK()"
Так вопрос: при приёме байта почему-то не добивается последний SCLK?! Приходится делать SET_SCLK() из дебаггера.
E-mail: info@telesys.ru