امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
نرم افزار BasCom یا CodeVision
نویسنده پیام
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #23
RE: زمان دقیق با تایمر AVR
شما ثابت کن که اول به C تبدیل می کنه تا!!!



نگاه کنین هیچ کدوم از فایل های خروجی بسکام اسمبلی و یا C نیستش !!!!

[تصویر:  0eead56e84af4f3780b2.PNG]
۱۴-شهریور-۱۳۸۹, ۰۲:۳۵:۰۵
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, رسول
reza555 غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,073
موضوع‌ها: 17
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 3779
( 3261 تشکر در 1342 ارسال )
ارسال: #24
RE: زمان دقیق با تایمر AVR
چنین چیزی امکان داره کامپایلری مستقیم برنامه ای رو که کامپایل میکنه به زبان ماشین تبدیل کنه؟
اون که دلیل نمیشه.خوب فایل سی تولید نکنه دلیل نمیشه مستقیم هگز کنه

زندگی مدیریت فرصت هاست.
۱۴-شهریور-۱۳۸۹, ۰۲:۵۳:۳۶
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #25
RE: زمان دقیق با تایمر AVR
منطق اینه که تبدیل به اسمبلی بکنه ولی خوب اگه میکرد حتما خروجیشو می ذاشت !!!!!

ولی مطمئن باش تبدیل به سی نمی کنه !
مثلا می تونی معادل دستور DTMF رو تو زبان سی بگی !!!!
۱۴-شهریور-۱۳۸۹, ۰۳:۰۷:۲۹
ارسال‌ها
پاسخ
تشکر شده توسط : رسول
reza555 غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,073
موضوع‌ها: 17
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 3779
( 3261 تشکر در 1342 ارسال )
ارسال: #26
RE: زمان دقیق با تایمر AVR
ببین
میدونیم که بیسیک تابع یا دستوری تحت این عنوان نداره
پس خیلی دستورای دیگه مختص میکرو توی کامپایلر نوشته شده ، طراحی شده ، تابع نویسی شده
شما حسابشو بکن
این دستور DTMF چند درصد از حافظه ی یه مگا 16 رو اشغال میکنه؟
پس معلوم میشه این دستور باچهار تا دستور mov یا ldیا ldi یا setیا clr توی اسمبلی (توی سی رو نمیدنم) نوشته شده،برای اجرای هر این از این دستورات چند سیکل ساعت باید طی بشه؟این میشه اون اختلافی که میگفتم

حسابشو بکن . خودت میتونی یه کامپایلر بسازی ، خودت یه سری دستور از خودت در میاری
اما این دستوراتی که ایجاد کردی در اصل با چه دستوراتی ساخته شده؟اینها اختلاف و تاخیر درست میکنه.اما روی کاغذ باید درست در بیاد

زندگی مدیریت فرصت هاست.
۱۴-شهریور-۱۳۸۹, ۰۳:۳۶:۱۵
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #27
RE: زمان دقیق با تایمر AVR
درسته ولی اکثر دستورات اصلی بسکام و کدویژن مشابه هستن و نباید فرقی تو زمان اجرای اونها باشه !!
مثلا دستور for وقتی به اسمبلی تبدیل میشه یه کدهای مشابه داره و نباید بگیم چون اون بسکامه پس حتما سرعتش پایینه !!!

دستور DTMF حدود 3 درصد اتمگا 16 رو پر می کنه !!

شما همین دستور رو تو کدویژن شبیه سازی کن و ببین چند درصد میشه !!!!

کلا همه دستورات بسکام مختص کار با avr هستش ولی واسه اینکه یه روالی اشته باشه از منطق بیسیک پیروی کرده !! ( مثلا واسه تعریف کردن متغیرها و یا طریقه ایجاد حلقه ها )

winavr بحثش جداست !!!
ولی بین کدویژن و بسکام قدرت تو بسکامه !!!
شاید یه آدمی که برنامه نویسی هم بلد نباشه بتونه با بسکام راحت کارهاشو انجام بده ولی مطمئن باش دستورات و روال هایی که حرفه ای بسکام استفاده می کنه خیلی فرق داره !!!
هم واسه مبتدی هاست و هم حرفه ای ها !!!
۱۴-شهریور-۱۳۸۹, ۰۴:۴۱:۲۶
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, رسول
reza555 غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,073
موضوع‌ها: 17
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 3779
( 3261 تشکر در 1342 ارسال )
ارسال: #28
RE: زمان دقیق با تایمر AVR
ببین درسته
خیلی از حرفاتو قبول دارم
منتهاببین وقتی تو کدوِزن یه تایمرو پیکره بندی میکنیم ، مستقیم رجیسترارو مقدار دهی میکنیم
یه جور دیگه بگم
یه برنامه رو تو بسکام بنویس
همونو تو بسکام منتها با اسمبلی بنویس
فرقشون زیاد میشه
دستورات کد ویژن هم شبه سی هستند و شبه اسمبلی

زندگی مدیریت فرصت هاست.
۱۴-شهریور-۱۳۸۹, ۱۵:۱۰:۲۲
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #29
RE: زمان دقیق با تایمر AVR
تنظیمات رو شما تو ویزارد انجام میدین !
فقط اون میاد چیزهایی که انتخاب کردین رو به معادلش که همون مقداردهی مستقیم رجیستر هستش می نویسه !

ولی وقتی می خوای تایمر یک رو روی مد کانتر ببری خوب باید تو یه رجیستر خواص دیتایی بنویسی !!!

مطمئن باش بسکام هم فقط همون ار رو می کنه و دلیلی نداره بیاد بقیه رجیسترها رو هم دست بزنه !
فقط چون نشون نمی ده چی کار می کنه این حس القا میشه که کار اضافه می کنه !!!

و در ضمن میشه تو بسکام مستقیم تو رجیسترها نوشت !!!
ولی من که ت احالا لازمم نشده !! ( ولی از رجیستر DDR ها زیاد استفاده می کنم )

اسمبلی که مشخصه !!
ولی کدویژن هم همچین اسمبلی که میگی نیست !!!

یه حرکت فنی الان من انجام دادم !!!

برنامه زیر در کدویژن حجمش شد 768 بایت !!!

کد php:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 9/5/2010
Author  : Ali
Company : NT
Comments: 


Chip type               : ATmega8
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega8.h>
#include <delay.h>

unsigned char a,b,c;

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

while (
1)
      {
        
a=1;
        
b=2;
        
c=a+b;
        
        
delay_ms(100);
      };



و اینم معادل برنامه فوق در بسکام که حجمش شد 168 بایت !!
خودتون تست کنین و تفاوت رو احساس کنین !!!

کد php:
$regfile "M8def.dat"
$crystal 8000000

Dim A 
As Byte As Byte As Byte


Do

   
1
   B 
2
   C 
B
   Waitms 100

Loop 
۱۴-شهریور-۱۳۸۹, ۱۶:۰۰:۲۷
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, رسول
reza555 غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,073
موضوع‌ها: 17
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 3779
( 3261 تشکر در 1342 ارسال )
ارسال: #30
[split] زمان دقیق با تایمر AVR
منظورم این نیست که کار دیگه ای انجام میده
اون کاری که میخواد انجام بده رو با تاخیر بیشتر انجام میده
ساده بگم
هنه

تست کردم.قبولت دارمBiggrin
توی بقیه گفته هات همشونو قبول دارم
یه چیز دیگه
توی تنظیمات کامپایلر توی قسمت putput اگر تیک optimize code رو بزنی ظاهرا برنامه از نظر سرعت بهینه میشه
(چیزی که winavr یها خیلی براش پز میدن)

تست کردی؟
خود هلپ هم این طور گفته:
This options does additional optimization of the generated code. Since it takes more compile time it is an option

زندگی مدیریت فرصت هاست.
(آخرین ویرایش در این ارسال: ۱۴-شهریور-۱۳۸۹, ۱۶:۱۵:۲۵، توسط reza555.)
۱۴-شهریور-۱۳۸۹, ۱۶:۱۴:۵۸
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, embed.ir
reza555 غایب
مدیر بازنشسته
*****

ارسال‌ها: 1,073
موضوع‌ها: 17
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 3779
( 3261 تشکر در 1342 ارسال )
ارسال: #31
RE: نرم افزار BasCom یا CodeVision
آقای آقا بیگی نظری ندارن؟

زندگی مدیریت فرصت هاست.
۱۵-شهریور-۱۳۸۹, ۰۰:۰۷:۳۰
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, embed.ir
embed.ir آفلاین
تازه وارد

ارسال‌ها: 6
موضوع‌ها: 1
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 16
( 12 تشکر در 6 ارسال )
ارسال: #32
RE: نرم افزار BasCom یا CodeVision
با سلام
بنده یک نظر کلی دارم و آن اینست که هر شخص دوست دار سخت افزار و الکترونیک , با یک زبان و محیط برنامه نویسی احساس راحتی میکند و یک شخص حرفه ای در نهایت هرجا که محیط دستش را برای اعمال دستورات بسته کند میتواند از دستورات اسمبلی بهره ببرد و یا حتی کلا از اسمبلی استفاده کند.
۱۵-شهریور-۱۳۸۹, ۱۶:۴۶:۱۷
ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000
k1_elo0 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 41
موضوع‌ها: 3
تاریخ عضویت: دى ۱۳۸۹

تشکرها : 55
( 185 تشکر در 33 ارسال )
ارسال: #33
RE: نرم افزار BasCom یا CodeVision
به نظرمن اسمبلی با اینکه خیلی سخته ولی بسیار قدرت منده من خودم c و ترجیح می دم چون امکان نوشتن اسمبلی داخل کد سی و بهتون می ده فکر نکنم بیسیک این کارو کنه ولی از لحاظ سادگی واقعا بیسیک خوبه
۱۹-دى-۱۳۸۹, ۱۵:۰۹:۲۲
وب سایت ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  کتاب اموزش AVR به زبان بیسیک ( بسکام - BASCOM ) 1nafar 12 81,986 ۱۴-خرداد-۱۳۹۵, ۱۵:۱۵:۲۳
آخرین ارسال: partotelecom
  BASCOM-AVR 2.0.7.5 Full - Xmega p3rtic@n 4 44,661 ۰۵-آبان-۱۳۹۱, ۱۳:۴۲:۳۲
آخرین ارسال: p3rtic@n
  دریافت جدید ترین نسخه بسکام BASCOM AVR eng_hamedani 20 43,890 ۳۰-خرداد-۱۳۹۱, ۰۲:۱۰:۴۱
آخرین ارسال: abbasalifix

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 7 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS