ايران ويج

نسخه‌ی کامل: کمک درتبدیل برنامه C به بیسیک (لطفا بخونید)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام ، یه برنامه زبان C دارم که برای یه میکرو pic نوشته شده، میخوام این برنامه به بیسیک برای میکروهای AVR مثلا ATMEGA 32 بنویسم ، دوستان اگه به این دو زبان تسلط دارند ممنون میشم که این برنامه به بیسیک تبدیل کنند. خیلییی خیلیییییییی ممنون.Rolleyes
شکل مدار پیوست کردم .
این هم خود برنامه :

/*
Description : CapMeter based on RC time constant
MCU: PIC16F28A
Oscillator: HS, 4.0000 MHz externa

*/

// 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;

sbit Va at RA0_bit;
sbit Switch at RB0_bit;

char message1[] = "Capacitance";
char message2[] = "Meter";

unsigned int T_Value, Num;
unsigned short i, j, TimerValue, OverRange = 0;
char Capacitance[] = "00.000 uF";

void interrupt(){
if(PIR1.TMR2IF){
TMR2 = TimerValue;
Num ++;
if(Num > 9999) OverRange = 1; // Range is 99.99 uF
PIR1.TMR2IF =0; // Clear TMR0 interrupt flag
}
}

void Display_Cap(unsigned int n){
Capacitance[0] = n/10000 + 48;
Capacitance[1] = (n/1000)%10 + 48;
Capacitance[3] = (n/100)%10 + 48;
Capacitance[4] = (n/10)%10 + 48;
Capacitance[5] = (T_Value*10)/153 + 48;
Lcd_Cmd(_Lcd_Clear);
Lcd_Out(1, 1, "C = ");
Lcd_Out(1, 5, Capacitance);

}

void reset(){
TRISA = 0b00000100;
CMCON = 7;
RA1_bit = 0;
Delay_ms(2000);
TRISA = 0b00000110;
CMCON = 5;
}

void main(){

char cap_size;
TRISB = 0b00000001;
PORTB = 0;
TRISA = 0b00000110;
OPTION_REG.T0CS = 0;
INTCON.GIE = 1; //Enable global interrupt
INTCON.PEIE = 1; //Enable peripheral interrupt

// Configure Timer2 module
PIE1.TMR2IE = 1; // Enable Timer2 interrupt
T2CON = 0; // Prescaler 1:1, and Timer2 is off initially
PIR1.TMR2IF =0; // Clear int bit

// Configure Comparator module
CMCON = 5; // Independent comparator between RA1 (-) and RA2(+)

Lcd_Init();
Lcd_Cmd(_Lcd_Clear);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1, 1, message1);
Lcd_Out(2, 1, message2);
delay_ms(2000);
Lcd_Cmd(_Lcd_Clear);

Lcd_Out(1, 1, "C = ");
Lcd_Out(1, 5, Capacitance);
Va = 0;
TimerValue = 108; // 104 + 4 additional clock cycles delay on branching to ISR
while(1){
if(!Switch) {
Num = 0;
OverRange =0;
Lcd_Cmd(_Lcd_Clear);
Lcd_Out(1, 1, "Testing.");
Lcd_Out(2, 1, "...");
TMR2 = TimerValue; // Initialize Timer2
Va = 1; //apply voltage
T2CON.TMR2ON = 1; // start timer
while(CMCON.C2OUT) {
if(OverRange) break;
}
T2CON.TMR2ON = 0; // stop timer
T_Value = TMR2 - TimerValue; // T_Value is used for improved resolution
Va = 0;
//---------------------------------
if(!OverRange){
Display_Cap(Num*10);
}
else{
OverRange = 0;
Lcd_Cmd(_Lcd_Clear);
Lcd_Out(1, 1, "Out of Range!");
}
reset();
}
}
}
دوستان لطفا کمک کنید ، یعنی کسی با این برنامه آشنا نیست ، تقریبا یکروز شده ولی کسی پاسخی نداده .!!!!!
خواهشا اگه می تونید راهنمایی کنید، من با زبان C یکم آشنایی دارم ولی با میکرو pic کار نکردم نمی تونم تبدیلش کنم به بیسیک .

حالا ما یکبار کمک خواستیم کسی نیست جواب بده ، هرچند انتظار اینو نداشتم ولی کم کم نامید شدم از اینکه کسی پاسخ بده.Sad
سایت با این همه مطالب متنوع و جالب ، پس این افراد کجا هستند یکی بیاد یه نگاهی به این برنامه کنه .017
سلام
من تازه وارد و تازه كارم
گمون نميكنم بشه
مگه اينكه از اول برنامه ي بيسك رو بنويسي
يا متوجه بشي كار اين برنامه به زبان c چي هست بعد معادل اونو به زبان بيسيك بنويسي
حالا صبر كنيد دوستان حرفه اي تر نظر بدند
میدونم برنامه چیکار میکنه ، فقط فکر میکنم بعضی از دستورات مخصوص همون pic باشه نمی تونم تغییر بدم، تازه اونقدر به C تسلط ندارم ، بخاطر همین از دوستان که به این زبان آشنایی دارند میخوام که کمک کنند.
سلام
متاسفانه کار با pic تو ایران زیاد جانیافتاده و اکثریت بدلیل راحتی کار با avr، این میکرو رو به pic ترجیح میدن.
برای تبدیل حتما باید کار مدار رو بدونید و برنامه جدیدی واسش بنویسید واگرنه تبدیل لاین به لاین یا ممکن نیست یا حداقل زمان زیادی لازم داره.
شما می تونید یه کتاب برنامه نویسی بگیرید یا از سایت دانلود کنید تا متوجه بشید مدار چه عملکردی رو داره و بعد برنامه بیسیک رو بنویسید.
متاسفانه اینو باید هر جوری شده به بیسیک بنویسم ، یا یه برنامه بیسیک به خوبی این برنامه بنویسم ، چون من این برنامه در پرتئوس شبیه سازی کردم و خیلی عالیی بود هرچند رنجش از یک نانو تا 99 میکرو بود ، ولی اگه من این برنامه به بیسیک بنویسم میتونم رنجش زیاد کنم مثلا از پیکو تا فاراد ، ایدش تو ذهن دارم ، حالا اگه یکی بیاد کمک کنه کم کم اینو درستش کنیم عالی میشه.
(۱۷-آذر-۱۳۹۱, ۲۱:۳۲:۳۵)sarfraz3 نوشته است: [ -> ]متاسفانه اینو باید هر جوری شده به بیسیک بنویسم ، یا یه برنامه بیسیک به خوبی این برنامه بنویسم ، چون من این برنامه در پرتئوس شبیه سازی کردم و خیلی عالیی بود هرچند رنجش از یک نانو تا 99 میکرو بود ، ولی اگه من این برنامه به بیسیک بنویسم میتونم رنجش زیاد کنم مثلا از پیکو تا فاراد ، ایدش تو ذهن دارم ، حالا اگه یکی بیاد کمک کنه کم کم اینو درستش کنیم عالی میشه.

فایل کامل پروژه رو بزارید رو سایت یه نگاه بندازیم، شاید بشه کمکتون کردWink
باشه ، خود برنامه که گذاشتم ، این هم شبیه سازیش . فقط هرچه زودتر یکی کمک کنه.
http://www.up2up.org/images/t5dxpmw63xtytd69ju1p.rar
چی شد!!!!! ، فایل شبیه سازیش هم که گذاشتم.
سلام
برای یاد گیری avr با زبان سی© شروع کنم یا ویرژال بیسیک؟
(۱۱-دى-۱۳۹۱, ۲۳:۰۰:۳۰)ashkanzx1 نوشته است: [ -> ]سلام
برای یاد گیری avr با زبان سی© شروع کنم یا ویرژال بیسیک؟
سلام
با هر کدوم که آشنایی داری (منظورم زبان برنامه نویسیشه) اگر با هیچ کدوم آشنایی نداری بهتره از بیسیک شروع کنی چون خیلی ساده تر و قابل فهم ترهWink
در کل فرقی ندارن فقط c قدرتش یکم بیشتره
بازم میگم اگر کاملا مبتدی هستی بهتره بیسک شروع کنیWink
صفحه‌ها: 1 2