 |
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,682
|
|
نشاط [ عبدالله حجازى ]
قوة السمعة:
|
|
09-01-2020, 02:30 AM
المشاركة 108
|
|
شكرا لك اخي الكريم عرض مع شرح رائعين
عندما كتبت البرنامج و هممت ببناءه لتوليد ملف hex ظهرت لدي هذه الرسالة .
لم اشأ فعل شيء حتى استشريك
بارك الله بك

|
السلام عليكم ورحمه الله
أخي هل تم نسخ الكود ووضعة في مشروع جديد !!
واضح انه سقت من بعض التعليمات بالسهو ..
الكود كامل
كود:
// ENG / ABDALLA HEGAZY **
// DATA / 2019/12/30 **
// controller **
#define MOTOR_vibrator_M11 PORTC.F7
#define MOTOR_Mixing_M62 PORTC.F6
#define Helical_motor_M61 PORTC.F5
#define MOTOR_Y33 PORTC.F4
#define MOTOR_Water_valve_Y32 PORTA.F5
#define SENSOR_LEVEL_1 PORTD.F2
#define SENSOR_LEVEL_2 PORTD.F3
#define SENSOR_LEVEL_3 PORTD.F4
#define SENSOR_LEVEL_4 PORTD.F5
#define SENSOR_LEVEL_5 PORTD.F6
#define SENSOR_LEVEL_6 PORTD.F7
#define END_ALL Helical_motor_M61 =0; MOTOR_Y33 =0; MOTOR_Mixing_M62 =0; MOTOR_vibrator_M11=0; MOTOR_Water_valve_Y32 =0;
#define BEZR PORTD.F1=1; delay_ms(350); PORTD.F1=0; delay_ms(200);
#define BEZRR PORTD.F1=1; delay_ms(270); PORTD.F1=0; delay_ms(50); PORTD.F1=1; delay_ms(270); PORTD.F1=0; delay_ms(1500);
#define END_OFF PORTD.F1=1; delay_ms(3000); PORTD.F1=0; delay_ms(50);
unsigned X1=0,X2=0,X3=0,M=0,A=0;
unsigned DATA_SHOW=0,DATA_SHOW2=0;
unsigned W1=0,W2=0,W3=0,W4=0,W5=0;
//===================================//
//Timer0
//Prescaler 1:8; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
//Place/Copy this part in declaration section
void InitTimer0(){
OPTION_REG = 0x82;
TMR0 = 6;
INTCON = 0xA0;
}
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 6;
//Enter your code here
if ( W2==1 ){ W3++; }
if ( W3==250 ){PORTE.F0=1; }
if ( W3==550 ){PORTE.F0=0; W3=0; }
if ( W4==1 ){ W5++; }
if ( W5==250 ){PORTB.F7=1; }
if ( W5==550 ){PORTB.F7=0; W5=0; }
}
}
//===================================//
void AUTO() {
W1=0; W2=1;
while(X1==0){
if (Button(&PORTE, 1, 10, 0)){END_ALL END_OFF X1=1; } //END PROGRAM //
while(X1==0)
{
if(W1==0 ){
MOTOR_vibrator_M11=1; MOTOR_Water_valve_Y32 =1; W1=1; }
if (Button(&PORTE, 1, 10, 0)){END_ALL X1=1; } //END PROGRAM //
if( SENSOR_LEVEL_1 ==1 ){ MOTOR_Mixing_M62 =1; }
if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61 =1; }
if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11=0; }
if( SENSOR_LEVEL_4 ==1 )
{
MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
MOTOR_Y33 =1;
X1=1;
}
}
X1=0;
while( X1==0 )
{
if (Button(&PORTE, 1, 10, 0)){END_ALL END_OFF X1=1; } //END PROGRAM //
if( SENSOR_LEVEL_1 ==0){
for(X3=0; X3<M; X3++){ delay_ms(60000); }
END_ALL
X1 =1;
}
}
delay_ms(1000);
if (Button(&PORTE, 1, 10, 1)){ delay_ms(50); X1=0; }
X1=1; W2=0; PORTE.F0=0;
}
}
//====================================//
//************************************//
void MANUAL() {
W1=0; W4=1;
while(X1==0){
while(X1==0)
{
if(W1==0 ){
MOTOR_vibrator_M11=1; MOTOR_Water_valve_Y32 =1; W1=1; }
if( SENSOR_LEVEL_1 ==1 ){ MOTOR_Mixing_M62 =1; }
if( SENSOR_LEVEL_2 ==1 ){ Helical_motor_M61 =1; }
if( SENSOR_LEVEL_3 ==1 ){ MOTOR_vibrator_M11=0; }
if( SENSOR_LEVEL_4 ==1 )
{
MOTOR_Water_valve_Y32 =0; for(X3=0; X3<M; X3++){ delay_ms(60000); }
MOTOR_Y33 =1;
X1=1;
}
}
X1=0;
while( X1==0 )
{
if( SENSOR_LEVEL_1 ==0){
for(X3=0; X3<M; X3++){ delay_ms(60000); }
END_ALL
X1 =1;
}
}
X1=0; delay_ms(1000);
if (Button(&PORTE, 1, 10, 1)){END_ALL END_OFF X1=1; W4=0; PORTB.F7=0; }
}
W4=0;
}
//===========================================//
void SET_PROGRAM() {
PORTB.F0=1;
PORTD.F1=1; delay_ms(800); PORTD.F1=0; delay_ms(500);
PORTD.F1=1; delay_ms(800); PORTD.F1=0; delay_ms(500);
X2=0;
while(X2==0)
{
PORTB.F1=1;
if(PORTC.F1==1){BEZR M ++; }
if(PORTC.F2==1){BEZR M =0; }
if(PORTC.F3==1){BEZR X2=1; }
if( M > 20 ){ M =0; }
} EEPROM_Write(0, M); delay_ms(10);
X2=0; PORTB.F2=1; PORTB.F1=0;
while(X2==0)
{
if(PORTC.F1==1){BEZR A ++; }
if(PORTC.F2==1){BEZR A =0; }
if(PORTC.F3==1){BEZR X2=1; }
if( A > 20 ){ A =0; }
}
PORTB.F0=0; PORTB.F2=0;
X2=0; EEPROM_Write(1, A); delay_ms(10);
}
//===========================================//
//************************************//
void main() {
TRISB=0; PORTB=0;
TRISD=252; PORTD=0;
TRISC=15; PORTC=0;
TRISA=1; PORTA=0;
TRISE=6; PORTE=0;
ADC_Init(); // Initialize ADC module with default settings //
adcon1=0x07;
InitTimer0();
BEZRR BEZRR BEZRR delay_ms(250);
M = EEPROM_Read(0);
A = EEPROM_Read(1);
/*EEPROM_Write(0, 0);
EEPROM_Write(1, 0);
EEPROM_Write(2, 0);
EEPROM_Write(3, 0);*/
//====================//
while(1){
PORTE.F0=0;
PORTB.F7=0;
if (Button(&PORTC, 0, 10, 1)) {BEZR delay_ms(350); SET_PROGRAM();} // SET //
if (Button(&PORTE, 1, 10, 1))
{
delay_ms(5000);
if (Button(&PORTE, 1, 10, 1)){ X1=0; BEZR AUTO(); }
}
if (Button(&PORTE, 2, 10, 1))
{
delay_ms(5000);
if (Button(&PORTE, 2, 10, 1)){ X1=0; BEZR MANUAL(); }
}
}
}
يجب وضع تعريف للعنوان ولاجظ توجد عناوين بدون تعريف وهذا خطأ عند توليد ملف hex سوف تظهر لك رسالة خطأ من المترجم ..
يجب أن نكتب تعريف قبل العنوان ليصبح العنوان هكذا
كود:
#define MOTOR_Y33 PORTC.F4
ويجب وضع مسافة بين تعريف العنوان وأسم العنوان وايضا وضع مسافة بين أسم العنوان والتعليمات بعد أسم العنوان
لاحظ أخي هذة العناوين المستخدمه في البرنامج
كود:
#define MOTOR_vibrator_M11 PORTC.F7
#define MOTOR_Mixing_M62 PORTC.F6
#define Helical_motor_M61 PORTC.F5
#define MOTOR_Y33 PORTC.F4
#define MOTOR_Water_valve_Y32 PORTA.F5
#define SENSOR_LEVEL_1 PORTD.F2
#define SENSOR_LEVEL_2 PORTD.F3
#define SENSOR_LEVEL_3 PORTD.F4
#define SENSOR_LEVEL_4 PORTD.F5
#define SENSOR_LEVEL_5 PORTD.F6
#define SENSOR_LEVEL_6 PORTD.F7
#define END_ALL Helical_motor_M61 =0; MOTOR_Y33 =0; MOTOR_Mixing_M62 =0; MOTOR_vibrator_M11=0; MOTOR_Water_valve_Y32 =0;
#define BEZR PORTD.F1=1; delay_ms(350); PORTD.F1=0; delay_ms(200);
#define BEZRR PORTD.F1=1; delay_ms(270); PORTD.F1=0; delay_ms(50); PORTD.F1=1; delay_ms(270); PORTD.F1=0; delay_ms(1500);
#define END_OFF PORTD.F1=1; delay_ms(3000); PORTD.F1=0; de
|