السلام عليكم اعضاء المنتدى الرائع الرجاء منكم مساعدتي
لدي مشروع عن المايكروكنترولر Atmega8515 ولدي الكود مكتوب بلغة السي ولكن لا اعلم اية compiler يجب ان استخدم ليتم برمجة المتحكم سوف اعرض لكم جزء من الكود والرجاء منكم مساعدتي بسرعة وسوف اكون ممتن لكم كثيرا
وهذا جزء من الكود
#include <mega8515.h>
#include <stdio.h> //for debugging using printf,etc
#include <math.h>
#include <ftoa.h> //timeout values for each task
#define t1 1
#define t2 2500
#define t6 15
#define t3 700
#define t4 100
#define t5 20
#define t7 5000
#define kgC 1770
#define koC 29
#define kgL 1590
#define koL 69
#define kgR 1590
#define koR 69 //PWM speed options:
#define full 0x3ff
#define speed2 0x380;
#define speed3 0x1ff;
#define speed4 0xff;
#define speed0 0x00; //the subroutines
void sensor(void); //start a new conversion
void initialize(void); //all the usual mcu stuff
void centralcontrol(void);
unsigned char reload; //timer 0 reload to set 1 mSec
int time1,time2,time3,time4,time5,time6,time7; //task scheduling timeout counter
unsigned char count,flag,Cdis,Rdis,Ldis,index,indexR,indexL,Ct[8],Lt[8],Rt[8],sensorstart;
float Ccm,Lcm,Rcm;
char C[6],L[6],R[6];
char Crange, Lrange, Rrange;
void initialize(void) { //serial setop for debugging using printf, etc.
UCR = 0x10 + 0x08 ;
UBRR = 25 ;
DDRB = 0xff;
PORTB = 0xff;
DDRC.0=1; //output on PA0 and input on PA1
PORTC.0=1; //PA0 = 1;
DDRC.1=0;
PORTC.1=0;
DDRC.2=0;
PORTC.2=0;
DDRC.3=0;
PORTC.3=0; //Now I use portA for the direction control
DDRA=0xff; //output
PORTA=0xff; //turn on pull-up resistors
DDRD = 0xff;
PORTD = 0xff;
reload = 206;
TCNT0= reload;
TCCR0 = 2;
TIMSK = 2;
/********************/ //set up timer 1
TIMSK=TIMSK| 0x40; //turn on timer 1 compare match interrupt
TCCR1B = 0; //disable timer 1 until song starts
TCNT1 = 0; //and zero the timer
//PWM Stuffs:
TCCR1A = TCCR1A | 0x03;
TCCR1A = TCCR1A | 0x80;
TCCR1A = TCCR1A | 0x20;
TCCR1B = 0;
TCCR1B = TCCR1B | 0x04;
/*************************/
time1 = t1;
time2 = t2;
time3 = t3;
time4 = t4;
time5 = t5;
time6 = t6;
time7 = t7;
flag = 0;
count = 0;
Cdis = 0;
for(index=0;index<8;index++){
Ct[index]=0;
Lt[index]=0;
Rt[index]=0;
}
index = 0;
indexL=0;
indexR=0;
sensorstart=1;
/****Initialisations for the centrolcontrol**/
Crange = 3;
Lrange = 3;
Rrange = 3;
PORTA.0=1;
PORTA.1=1;
/*********************************************/
#asm
sei
#endasm
}
interrupt[TIM0_OVF] void timer0_overflow(void)
{
TCNT0=reload;
if(time3 > 0) --time3; //70ms
if(time4 > 0) --time4; //10ms
if(time5 > 0) --time5; //2ms
if(time1 > 0) --time1;
if(time7 > 0) --time7; //500ms for the centralcontrol
if(time2 > 0) --time2;
}