NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3274 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 1 از 1

موضوع: کمک در تشخیص علت خطا در کدویژن

  1. #1
    عضو جدید
    تاریخ عضویت
    Apr 2015
    نوشته ها
    6
    تشکر
    2
    تشکر شده 0 بار در 0 پست

    پیش فرض کمک در تشخیص علت خطا در کدویژن

    سلام خدمت اساتید.
    من برنامه ی ماشین حساب مهندسی رو که داخل کتاب مهندس الوندی هست عینا" توی کدویژن نوشتم.برنامه به این صورته که برنامه ی اسکن صفحه کلید به نام keypad.c به صورت فایل الحاقی به برنامه ی اصلی به نام calculator.c اضافه میشه و توی برنامه، keypad.h فراخوانی میشه
    اما بعد از فراخوانی،وقتی کامپایل میکنم حدود 15 تا خطا دارم که بیشتر اینطوری هستن:
    undifined PORTD
    undifined PIND
    undifined DDRDD
    undifined PORTC
    undifined PINC
    undifined DDRC
    و یکی دوتا خطای دیگه.توی نسخه های دیگه از کدویژن هم انجام دادم و خطا گرفتم.کد برنامه رو میذارم.لطفا اگر تونستید،کامپایلش کنید و مشکلو بهم بگید.مثل همیشه روی کمکتون حساب میکنم.ممنون

    کد برنامه اصلی calculator.c:
    کد:
    # define pp 3.14159327
    # define SIN PINC.0
    # define COS PINC.1
    # define TAN PINC.2
    # define LOG PINC.3
    # define SHIFT PINC.4
    #include <mega16a.h>
    #include <delay.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    #asm
       .equ _lcd_port=0x1B
       #endasm
    #include <lcd.h>
    #include "keypad.h"
    float number1 =0;
    float number2 =0;
    float result=0.0;
    static char last_key;
    unsigned char mmz=0,count=0,num_dis=0;
    char *save_str="";
    void display(){
    char lcd_buf[32];
    sprintf(lcd_buf,"%f",number1);
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_puts(lcd_buf);
    delay_ms(500);
    }
    void config_number(float f_number){
    static float division[]={1,10,100,1000,10000,100000,1000000};
    f_number=(f_number/division[mmz]);
    result=f_number;
    }
    void sin_DRG(){
    number1 = atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    number1=(number1*pp)/180;
    number1=sin(number1);
    num_dis=1;
    count=0;
    mmz=0;
    last_key='+';
    display();
    while(SHIFT==1 && SIN==0) {};
    }
    void arcsin_DRG(){
    number1 = atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    number1=asin(number1);
    number1=(number1*180)/pp;
    display();
    num_dis=1;
    count=0;
    mmz=0;
    last_key='+';
    while(SHIFT==0 && SIN==0) {};
    }
    void cos_DRG(){
    number1 = atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    number1=(number1*pp)/180;
    number1=cos(number1);
    num_dis=1;
    count=0;
    mmz=0;
    last_key='+';
    display();
    while(SHIFT==1 && COS==0) {};
    }
    void arccos_DRG(){
    number1 = atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    number1=acos(number1);
    number1=(number1*180)/pp;
    num_dis=1;
    count=0;
    mmz=0;
    last_key='+';
    display();
    while(SHIFT==0 && COS==0) {};
    }
    //
    void tan_DRG(){
    number1 = atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    number1=(number1*pp)/180;
    number1=tan(number1);
    number1=number1+0.0001;
    num_dis=1;
    count=0;
    mmz=0;
    last_key='+';
    display();
    while(SHIFT==1 && TAN==0) {};
    }
    //
     void arctan_DRG(){
    number1 = atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    number1=atan(number1);
    number1=(number1*180)/pp;
    number1=number1+0.0001;
    num_dis=1;
    count=0;
    mmz=0;
    last_key='+';
    display();
    while(SHIFT==1 && TAN==0) {};
    }
    //
    void log_10(){
    number1 = atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    number1=log10(number1);
    num_dis=1;
    count=0;
    mmz=0;
    last_key='+';
    display();
    while(LOG==0) {};
    }
    signed char test_key (char key){
    if ((key == '.')|| ((key >= '0') && (key <= '9')))return 1;
    else return 0;
    }
    //
    void ack_opretion(char opretion){
    signed char res = 0;
    switch (opretion){
    case '+' : number1 += number2;break;
    case '-' : number1 -= number2;break;
    case '*' : number1 *= number2;break;
    case '%' :
    if (number2 != 0) number1 /= number2;
    else {res = 2;break;}
    }if (res == 0){
    if ((number1>=-999999999)&&(number1<=999999999)) display();
    else { 
    lcd_gotoxy(0,0);
    lcd_putsf("error number");
    delay_ms(1000);
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putchar('0');
    lcd_gotoxy(0,0);
    }
    }
    if (res == 2){
    lcd_clear();
    lcd_putsf("*ERROR*");
    }
    }
    //
    void calculator(){
    unsigned char key=0;
    char *helper="";
    signed char data_in;
    number1=0;
    number2=0;
    last_key=0;
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("0");
    data_in=0;
    lcd_gotoxy(0,0);
    for (;;){
    start:
    key = keypad();
    if (test_key(key)){
    if(num_dis==1){
    lcd_clear();
    num_dis=0;
    }
    if (data_in != 9){
    data_in++;
    if((key=='.')&&(count!=1)){
    count=1;
    data_in--;
    lcd_putchar(key);
    goto start;
    }
    if(key=='.'){
    data_in--;
    goto start;
    }
    lcd_putchar(key);
    if(count==1) mmz++;
    helper=0;
    key&=0x0f;
    itoa(key,helper);
    strcat(save_str,helper);
    }
    }
    else{
    if(data_in != 0){
    if (last_key == 0){
    number1=atof(save_str);
    *save_str=NULL;
    config_number(number1);
    number1=result;
    count=0;
    mmz=0;
    num_dis=1;
    }
    else{
    number2=atof(save_str);
    *save_str=NULL;
    config_number(number2);
    number2=result;
    count=0;
    mmz=0;
    num_dis=1;
    }
    }
    data_in=0;
    if (last_key != 0) ack_opration(last_key);
    if (key != '=') last_key = key;
    else last_key = 0;
    }
    }
    }
    void main(){
    setting();
    calculator();
    }
    کد keypad.h:
    کد:
    unsigned char keypad();
    void setting();
    کد keypad.c:
    کد:
    #define c1 PIND.4
    #define c2 PIND.5
    #define c3 PIND.6
    #define c4 PIND.7
    #define SIN PINC.0
    #define COS PINC.1
    #define TAN PINC.2
    #define LOG PINC.3
    #define SHIFT PINC.4
    flash char row[]={~1,~2,~4,~8};
    flash char data_key[]={
    '7','8','9','%',
    '4','5','6','*',
    '1','2','3','-',
    '.','0','=','+'};
    unsigned char ac,table;
    unsigned int r;
    //
    unsigned char keypad(){
    while (1){
    for (r=0;r<4;r++){
    ac=4;
    PORTD =row[r];
    DDRD=0x0f;
    if (c1==0) ac=0;
    if (c2==0) ac=1;
    if (c3==0) ac=2;
    if (c4==0) ac=3;
    //
    if (LOG==0) log_10();
    if (SHIFT==1 && SIN==0) sin_DRG();
    if (SHIFT==1 && COS==0) cos_DRG();
    if (SHIFT==1 && TAN==0) tan_DRG();
    if (SHIFT==0 && SIN==0) arcsin_DRG();
    if (SHIFT==0 && COS==0) arccos_DRG();
    if (SHIFT==0 && TAN==0) arctan_DRG();
    if (!(ac==4)){
    table=data_key[(r*4)+ac];
    while (c1==0){}
    while (c2==0){}
    while (c3==0){}
    while (c4==0){}
    delay_ms(20);
    while (c1==0){}
    while (c2==0){}
    while (c3==0){}
    while (c4==0){}
    delay_ms(20);
    return table;
    }
    }
    };
    }
    //
    void setting(){
    PORTD=0xff;
    DDRD=0x0f;
    PORTC=0xFF;
    DDRC=0x00;
    lcd_init(16);
    }

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

موضوعات مشابه

  1. تشخیص حروف فارسی در کدویژن
    توسط Caspian1361 در انجمن AVR
    پاسخ: 11
    آخرين نوشته: 21-06-2011, 21:19
  2. برنامه نقاشی ویندوز 7 را به ویندوزهای ویستا و ایکس پی اضافه کنید
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 1
    آخرين نوشته: 20-01-2010, 15:43
  3. نواز وظیفه ویندوزهای ایکس پی و ویستا را به نوار وظیفه ویندوز 7 تبدیل کنید
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 0
    آخرين نوشته: 19-01-2010, 13:39
  4. Xp ویندوزهای ویندوز 2003 سرور را دقیقا به ویندوز 7 تبدیل نمائید
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 0
    آخرين نوشته: 19-01-2010, 12:59

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •