پرسش و پاسخ پيرامون AVR

Taßa§om

عضو جدید
کاربر ممتاز
سوالتو بپرس جوان... :w02:

:D

خوب وسط فاکتوریلو گیر کردم توش!!!


ما با avr studio مینویسیما!
آخه اکثرا کد ویژن بلدن!
 

Taßa§om

عضو جدید
کاربر ممتاز
کجاش؟ میخوای سورس کاملشو بهت بدم؟

خوب چه جوری بگم من یه چیزایی نوشتم بعد دیدم اصلا نمیشه!

مثلا تو ضربش؟!

اگه بدین که عالـــیه!
یعنی جدی دارین؟!

منبع خاصی دارین یا خودتون؟!
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
خوب اگه خسته این....؟!


پس اگه میشه ضربشو ی کوچولو توضیح میدین؟!
حالا چرا avr ؟
این دیباگر که اصولا" مورد نیاز بروبچ برقه؟
کدوم قسمتشو فرزندم؟
 

Taßa§om

عضو جدید
کاربر ممتاز
حالا چرا avr ؟
این دیباگر که اصولا" مورد نیاز بروبچ برقه؟
کدوم قسمتشو فرزندم؟

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

کلا
یعنی چه جوری دستور ضرب رو واسه فاکتوریل بنویسم؟!

می بخشیدا
 

HaMiD.TcI

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

کلا
یعنی چه جوری دستور ضرب رو واسه فاکتوریل بنویسم؟!

می بخشیدا
ببین توی دستورات فاکتوریل همیشه اصل کار به این صورته یه عدد از وروردی گرفته که میزاریمش n (مثلا" وقتی بخوایم فاکتوریل 1000 رو به دست بیاریم.)
بعد یک حلقه با تعداد مشخص از 0 تا n مینویسیم که میزاریمش i
بعد عمل اصلی یعنی p=p*i را مینویسیم
در خط بعدی p رو چاپ یا نمایش میدیم

n=1000
for i = 0 to n
p=p*i
print p
next i
end

عدد نمایش داده شده اینقدر بزرگ در میاد که ...
 

Taßa§om

عضو جدید
کاربر ممتاز
ببین توی دستورات فاکتوریل همیشه اصل کار به این صورته یه عدد از وروردی گرفته که میزاریمش n (مثلا" وقتی بخوایم فاکتوریل 1000 رو به دست بیاریم.)
بعد یک حلقه با تعداد مشخص از 0 تا n مینویسیم که میزاریمش i
بعد عمل اصلی یعنی p=p*i را مینویسیم
در خط بعدی p رو چاپ یا نمایش میدیم

n=1000
for i = 0 to n
p=p*i
print p
next i
end

عدد نمایش داده شده اینقدر بزرگ در میاد که ...

خیلی ممنونم
اما
ببینید من تو الگوریتمش مشکل ندارم

توavr studio دستور ضرب وجود نداره!منم موندم چجوری بنویسمش ؟بر چه اساسی!!!
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
توی instruction set رو نگاه کن.
در مورد دستورات ضرب ی چیزایی نوشته
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
خیلی ممنونم
اما
ببینید من تو الگوریتمش مشکل ندارم

توavr studio دستور ضرب وجود نداره!منم موندم چجوری بنویسمش ؟بر چه اساسی!!!
از این دستور اصولا" واسه ی ضرب اعداد بدون علامت استفاده میشه. اینجا هم یه تستی بزن شاید شد : MUL

خدا بگم چیکارت نکنه که تمام جزوه هامو ریختم بهم امشب :دی
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
گشتم نبود چیزیا...

بازم میبینم حالا
دقیق نگاه کن فرزندم... توی قسمت دستورات محاسباتی میتونی دستورای مربوط به ضرب اعشاری علامت دار و بدون علامت رو ببینی
زمان ما که اینطوری بود :دی
 

Taßa§om

عضو جدید
کاربر ممتاز
از این دستور اصولا" واسه ی ضرب اعداد بدون علامت استفاده میشه. اینجا هم یه تستی بزن شاید شد : MUL

خدا بگم چیکارت نکنه که تمام جزوه هامو ریختم بهم امشب :دی

می بینم الان!

:D

آقا ما شرمنده!!!

چی کار کنیم جبران شه!؟؟
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
گشتم نبود چیزیا...

بازم میبینم حالا
البته یه زمانی واسه ی ضرب از آلگوریتم جمع میشد استفاده کردا. همونطور که واسه تقسیم از آلگوریتم تفریق استفاده میکنن
 

Taßa§om

عضو جدید
کاربر ممتاز
البته یه زمانی واسه ی ضرب از آلگوریتم جمع میشد استفاده کردا. همونطور که واسه تقسیم از آلگوریتم تفریق استفاده میکنن

اهوم

خودمم به اینش فکر کردم اما تو فاکتوریل پدر آدمو در میاره!!!:surprised:
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
اهوم

خودمم به اینش فکر کردم اما تو فاکتوریل پدر آدمو در میاره!!!:surprised:
عجب.... امان از تنبلی

; Mult8.asm multiplies two 8-bit-numbers to yield a 16-bit-result
;
.NOLIST
.INCLUDE "C:\avrtools\appnotes\8515def.inc"
.LIST
;
; Flow of multiplication
;
; 1.The binary to be multiplicated with, is shifted bitwise into the carry bit. If it is a one, the binary number is added to the
; result, if it is not a one that was shifted out, the number is not added.
; 2.The binary number is multiplied by 2 by rotating it one position left, shifting a 0 into the void position.
; 3.If the binary to be multiplied with, is not zero, the multiplication loop is repeated. If it is zero, the multiplication is done.
;
; Used registers
;
.DEF rm1 = R0 ; Binary number to be multiplicated (8 Bit)
.DEF rmh = R1 ; Interim storage
.DEF rm2 = R2 ; Binary number to be multiplicated with (8 Bit)
http://www.avr-asm-tutorial.net
.DEF rel = R3 ; Result, LSB (16 Bit)
.DEF reh = R4 ; Result, MSB
.DEF rmp = R16 ; Multi purpose register for loading
;
.CSEG
.ORG 0000
;
rjmp START
;
START:
ldi rmp,0xAA ; example binary 1010.1010
mov rm1,rmp ; to the first binary register
ldi rmp,0x55 ; example binary 0101.0101
mov rm2,rmp ; to the second binary register
;
; Here we start with the multiplication of the two binaries in rm1 and rm2, the result will go to reh:rel (16 Bit)
;
MULT8:
;
; Clear start values
clr rmh ; clear interim storage
clr rel ; clear result registers
clr reh
;
; Here we start with the multiplication loop
;
MULT8a:
;
; Step 1: Rotate lowest bit of binary number 2 to the carry flag (divide by 2, rotate a zero into bit 7)
;
clc ; clear carry bit
ror rm2 ; bit 0 to carry, bit 1 to 7 one position to the right, carry bit to bit 7
;
; Step 2: Branch depending if a 0 or 1 has been rotated to the carry bit
;
brcc MULT8b ; jump over adding, if carry has a 0
;
; Step 3: Add 16 bits in rmh:rml to the result, with overflow from LSB to MSB
;
add rel,rm1 ; add LSB of rm1 to the result
adc reh,rmh ; add carry and MSB of rm1
;
MULT8b:
;
; Step 4: Multiply rmh:rm1 by 2 (16 bits, shift left)
;
clc ; clear carry bit
rol rm1 ; rotate LSB left (multiply by 2)
rol rmh ; rotate carry into MSB and MSB one left
;
; Step 5: Check if there are still one's in binary 2, if yes, go on multiplicating
;
tst rm2 ; all bits zero?
brne MULT8a ; if not, go on in the loop
;
; End of the multiplication, result in reh:rel
;
; Endless loop
;
LOOP:
rjmp loop
 

Taßa§om

عضو جدید
کاربر ممتاز
نوشتم!!!
درست شد!!!


آقا حمید بـــــــــی اندازه ممنونم


من چطور این mul رو ندیدم!!!!
 

Taßa§om

عضو جدید
کاربر ممتاز
wow!

این کد زیاده مال فاکتوریله؟؟!!!!

مال من چه کمه پس:surprised:
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
نوشتم!!!
درست شد!!!


آقا حمید بـــــــــی اندازه ممنونم


من چطور این mul رو ندیدم!!!!
نخیر این واسه ی ضربه البته به اندازه ی کلی توضیح با الگوریتم جمع نوشته شده.
حالا حواست باشه که imul هم هست ولی واسه ی علامت داراس. اگه دیدی حاصل اشتباه درومد از این هم میتونی استفاده کنی.

موفق باشی
 

Taßa§om

عضو جدید
کاربر ممتاز
نخیر این واسه ی ضربه البته به اندازه ی کلی توضیح با الگوریتم جمع نوشته شده.
حالا حواست باشه که imul هم هست ولی واسه ی علامت داراس. اگه دیدی حاصل اشتباه درومد از این هم میتونی استفاده کنی.

موفق باشی

آها!!!
مرسی

فعلا که به مظر درست اجرا میشه!

فیبوناتچیم تا صبح اگه تموم کنم یکی دیگه می مونه!

مـــن مــــی تونم!
 

HaMiD.TcI

مدیر تالار موبایل متخصص سیستم عامل Apple
مدیر تالار
آها!!!
مرسی

فعلا که به مظر درست اجرا میشه!

فیبوناتچیم تا صبح اگه تموم کنم یکی دیگه می مونه!

مـــن مــــی تونم!
اون که خیلی دیگه از این راحت تره...
1-1-2-3-5-8-13-21-34
 

8581

عضو جدید
سلام لطفا در بدست آوردن جواب این سوالات کمکم کنید ممنون میشم در مورد نمایش پیام روی LCD 16*2
1.برنامه ای روی میکرو بنویسید که پیام Hello را در وسط سطر اول و نام شما را در وسط سطر دوم نمایش دهد و بعد از 5 ثانیه به سمت چپ حرکت کند به گونه ای که اثری از پیام و نام شما در صفحه نمایش باقی نماند
2.برنامه ای بنویسید که اعداد زوج 2 رقمی را با تاخیر 1 ثانیه در وسط سطر اول نمایش دهد ( تکرار )
 
آخرین ویرایش:
بالا