السلام عليكم ورحمة الله
لقد وجدت هدا الكود الدي كتب بلغة ماتلب ولريد تحويله
الى ميكروسي
كود:
#define _XTAL_FREQ 4000000
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
//prototypes
void main(void);
void convert(void);
void send(unsigned char bytex);
__CONFIG(LVPDIS & WDTDIS & UNPROTECT & XT);
void main(void){
//init
TRISB = 0b11111111; //all inputs
TRISA = 0b1111; //RA0-RA3 inputs
TRISC = 0b10000000;
ADCON0 = 0b1000000; //Fosc/8,adon=0
ADCON1 = 0b10000010; //AN0-AN3, right justified
//UART init
RCSTA = 0b10010000; //rx enable, continuous receive
TXSTA = 0b100100; //tx=ON, high speed
SPBRG = 25; //baud rate 9600bps
RCIF = 0;
while(1){
if(RCIF){
if(RCREG < 128){ //PC transmits 128 to signal start of reading inputs
PORTC=RCREG;
}else{
ADCON0=0b1000001; convert(); //analogue ch0 convertion
ADCON0=0b1001001; convert(); //ch1
ADCON0=0b1010001; convert(); //ch2
ADCON0=0b1011001; convert(); //ch3
send(PORTB); //send digital inputs
}
RCIF=0;
}
}
}
void convert(void){
ADIF=0;
__delay_us(50); //convertion time
GODONE=1;
while(!ADIF){}
send(ADRESL);
send(ADRESH);
}
void send(unsigned char bytex){ //transmit bytes
TXREG = bytex;
while (!TRMT){} //wait for UART to finish TRMT
}
المصدر
http://www.moty22.co.uk/