Проблема е следния: 32 битово число трябва да се предаде по сериен канал.Написах следната програма на PICC на HiTech за PIC16F874 ама нещо неще да става:
#ifndef _16F874
#define _16F874
#endif
#include <pic.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include "delay.h"
__CONFIG( HS & PWRTEN & BORDIS & WDTDIS & LVPDIS & DEBUGDIS & UNPROTECT);
static bit EN @ ((unsigned)&PORTE*8+0);
static bit DATA @ ((unsigned)&PORTE*8+1);
static bit CLOCK @ ((unsigned)&PORTE*8+2);
unsigned long x,y,z,data1;
void init_2 (void){
GIE=0;
// enable A2D converter
ADIE = 0; // not interrupt driven
ADCON0= 0b00000001; //DISABLE ADC
ADCON1= 0b00000110; //ALL DIGITAL
PORTA = 0;
TRISA = 0b0000000; // ALL OUTPUT
PORTA = 0;
PORTB = 0;
TRISB = 0b00000000;
PORTB = 0;
PORTC = 0;
TRISC = 0b00000000;
PORTC = 0;
PORTD = 0;
TRISD = 0b00000000;
PORTD = 0;
PORTE = 0;
TRISE = 0b00000000;
PORTE = 0;
}
SendByte(unsigned long z )
{
int i;
i=0;
EN=0;
DATA=0;
CLOCK=0;
for(i=0;i<32;i++)
{
y=0x800000; //маска
x=((z)&(y));
if(x>0)
{ DATA=1; }
else
{ DATA=0; }
z=(z<<1);
CLOCK=1;
asm("nop");
CLOCK=0;
asm("nop");
DATA=0;
}
EN=1;
}
void main()
{
init_2();
for(;;)
{
data1=0x3F3F3F3F;
SendByte(data1);
DelayMs(500);
DelayMs(500);
}
}
И не работи пущината

След леко колебание и почивка си написах на асемблер програмката
и нещата се оправиха,но не ми е ясно къде греша в С-то.Някой да има някаква идея
след като е погледнал програмката ?