|
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 619
|
|
نشاط [ مشتاق الله ]
قوة السمعة:
|
|
08-11-2016, 09:51 AM
المشاركة 443
|
|
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
توكل على الله الذى لا اله الا هو :
اخى العزيز اعذرنى على كثرة التجارب لعله لصعوبة المحاكاة على بروتيوس او لعدم شغلى فى مثل هذه الفكرة قبلا .
و الله المستعان , هذا الكود به تغيير بسيط , اذا لم يعمل, ان شاء الله ساقوم بتعديل اكبر .
ملاحظة : الكود الاحمر اذا مسحته سيتحرك الحروك لدورة واحدة ثم تتعطل .
طلب : ارجو معرفة بالنظر تقريبا عدد خطوات الحروف التى تتحركها حتى تكمل الدورة الاولى و تنتهى .
كود:
void step_Move(char step);
char i = 0 , START_flag = 0 , RELOAD_flag = 0 ;
char stepdelay = 0;
unsigned int numbofturns = 0;
char letter_M[] = {0xfe,0xfe,0x60,0x30,0x60,0xfe,0xfe};
char letter_i[] = { 0x00,0x82,0xfe,0xfe,0x82,0x00,0x00};
char letter_c[] = { 0x38,0x7c,0xc6,0x82,0x82,0xc6,0x44};
char letter_R[] = {0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};
char letter_O[] = {0X38,0X7C,0XC6,0X82,0XC6,0X7C,0X38};
char letter_p[] = { 0x82,0xfe,0xfe,0x92,0x90,0xf0,0x60};
char letter_Rr[] = { 0x82,0xfe,0xfe,0x98,0x9c,0xf6,0x62};
void interrup() iv IVT_ADDR_PCINT0 ics ICS_AUTO {
PCIFR.PCIF0 = 1;
if ((PINB & 0X02) && (START_flag == 0) ) {START_flag = 1;}
if ((PINB & 0X02) && (START_flag == 1) ) {RELOAD_flag = 1;}
}
void step_Move(char step){
for (i=0; i< step; i++){
delay_us(600); //
}
}
void main() {
DDRD = 0XFF;
PORTD = 0;
DDRB = 0XFD;
PORTB = 2;
SREG_I_bit = 1;
PCICR |= 1<<PCIE0;
PCMSK0 |= 1<<PCINT1;
while(1){
if (START_flag == 1){
numbofturns++;
if (numbofturns == 4 ) {
numbofturns = 0;
stepdelay++;
}
step_Move(stepdelay);
for(i=0; i<7; i++){PORTD=letter_M[i]; if (RELOAD_flag == 1){ if (i <=1){stepdelay = 0;}
PORTD = 0;
break ;
}
delay_us(300);
}
if (RELOAD_flag == 1) {RELOAD_flag = 0;
continue;
}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_I[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_C[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_R[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_O[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_P[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
PORTD=0; delay_us(1200);
for(i=0; i<7; i++){PORTD=letter_Rr[i]; if (RELOAD_flag == 1) {PORTD = 0; break ;} delay_us(300);}
if (RELOAD_flag == 1) {RELOAD_flag = 0; continue;}
PORTD=0; delay_us(1200);
START_flag = 0;
}
}
}
و ما توفيقى الا بالله
و لا حول و لا قوة الا بالله
اللهم صبرك و نصرك
|