قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

MAAASD
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 93
نشاط [ MAAASD ]
قوة السمعة:0
قديم 22-08-2012, 05:31 AM المشاركة 1   
ha مشكلة في برنامج الة حاسبة Twitter FaceBook Google+



السلام عليكم
ده برنامج الة حاسبة بسيطة هو شغال كويس بس فيه مشكلة
لو هتطرح رقم كبير من رقم صغير (الناتج المفروض بالسالب) بيطلع الناتج بالسالب بس غلط
يعني مثلاً لو جربت تعمل
صفر - واحد =؟ هيطلع لك
-65537
ايه الحل ؟ انا هرفعلكم الفايلات بتاعة المشروع وارجو المساعدة
شكراً مقدماً
http://www.4shared.com/zip/ll_SfUzh/...Keypad_an.html

اعلانات

MAAASD
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 93
نشاط [ MAAASD ]
قوة السمعة:0
قديم 22-08-2012, 05:33 AM المشاركة 2   
ha


وده الكود علشان لو حد كسل يعمل دونلود

كود:
//kaypad module connections
char keypadport at portd;
//end keypad module connections

// LCD module connections
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// End LCD module connections

const unsigned char kp_manager[]={7,8,9,'/',4,5,6,
'*',1,2,3,'-','c',0,'=','+'};  //keypad mapping
char kp,temp,res_txt[12],res_txt2[12],i,j;
unsigned long op1,op2,res;


unsigned long GetSeconedOp(){
unsigned long x=0;
lcd_out(2,1,"No2: ");
while(1){
kp=0;
while(!kp){
kp=keypad_key_click();
delay_ms(50);
}
if(kp_manager[kp-1]=='=') break;
lcd_chr_cp(kp_manager[kp-1]+0x30);
x=x*10+kp_manager[kp-1];

}
return x;
}

void main() {

keypad_init();     //initialize keypad
lcd_init();        //initialize lcd
lcd_cmd(_lcd_clear);
lcd_out(1,3,"Calculator");
lcd_cmd(_lcd_cursor_off);
//delay_ms(2000);
lcd_cmd(_lcd_clear);
while(1){
op1=0; op2=0; res=0;
lcd_out(1,1,"No1: ");
//getting the 1st number
while(1){
kp=0;
while(!kp){
kp=keypad_key_click();
delay_ms(50);
}
temp=kp_manager[kp-1];
if(temp=='+') goto plus;
if(temp=='-') goto minus;
if(temp=='/') goto divide;
if(temp=='*') goto multiply;

lcd_chr_cp(temp+0x30); //display ascii equivalent to decimal digit (0 to 9)
op1=op1*10+temp;       //calculate 1st operand from entered digits
}

plus:
op2=GetSeconedOp();
res=op1+op2;
goto done; //to print result on LCD

minus:
op2=GetSeconedOp();
res=op1-op2;
goto done;

divide:
op2=GetSeconedOp();
res=op1/op2;
goto done;

multiply:
op2=GetSeconedOp();
res=op1*op2;

done:
longtostr(res,res_txt);
lcd_cmd(_lcd_clear);
lcd_out(1,1,"Result:");
lcd_cmd(_lcd_second_row); //move cursor to 2nd row\\
//The following method is to have output without leading blanks(spaces)
//remove blanks of result_txt áÇÒã ÊÊÚãá ÈÇáØÑíÞÉ Ïí ÚáÔÇä ãíÍÕáÔ ÇÎØÇÁ
j=0;
for(i=0;i<12;i++){
if(res_txt[i]!=' ')
{
res_txt2[j]=res_txt[i];
j++;
}
}

lcd_out_cp(res_txt2);
delay_ms(2000);
lcd_cmd(_lcd_clear);
}

}

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

MAAASD
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 93
نشاط [ MAAASD ]
قوة السمعة:0
قديم 22-08-2012, 08:29 AM المشاركة 3   
ha


يا ريت يا جماعة تجاوبوني
اعمل ايه


MAAASD
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 93
نشاط [ MAAASD ]
قوة السمعة:0
قديم 22-08-2012, 10:33 AM المشاركة 4   
ha


?????????????????????????????????????????


الصورة الرمزية alnour1
alnour1
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2009
الدولة: Egypt, As Senbelawayn
المشاركات: 59
نشاط [ alnour1 ]
قوة السمعة:0
قديم 22-08-2012, 03:24 PM المشاركة 5   
Exclamation



كود:
.
.
.
unsigned long op1,op2,res;
.
.
.
.
minus:
op2=GetSeconedOp();
res=op1-op2;
goto done;
.
.
.
.
}
المشكلة فى تعريف المتغير ans اللى بيحفظ القيمة انت عامله unsigned وكدا معناه انه ماينفعش يشيل قيم سالبه ... جرب اعمل signed وشوف آيه اللى هايحصل



كود:
.
.
.
unsigned long op1,op2;
signed long res;
.
.
.
.
minus:
op2=GetSeconedOp();
res=op1-op2;
goto done;
.
.
[/quote]


MAAASD
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 93
نشاط [ MAAASD ]
قوة السمعة:0
قديم 22-08-2012, 07:20 PM المشاركة 6   
افتراضي


المشكلة فى تعريف المتغير ans اللى بيحفظ القيمة انت عامله unsigned وكدا معناه انه ماينفعش يشيل قيم سالبه ... جرب اعمل signed وشوف آيه اللى هايحصل

انا جربت فعلاً ومفيش حاجة حصلت
هو بيطلع نواتج بالسالب بس نواتج غلط

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 05:27 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025