ايران ويج

نسخه‌ی کامل: برنامه برای رابطه
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
من یه برنامه به زبان بکام میخواهم که
xرابگیرد و دررابطه روبرو قرار دهدy=75x-75
یکان و دهگان و صدگان را جدا کند و هر کردام را روی یک سون سگمنت نشون بدهد
روش کار و دستورات را میدونم ولی شکل کلی برنامه نمیدونم
با تقسم بر 10 باقی مانده بدست میاید میشود یکان
با تقسیم خارج قسمت در مرحله قبل بر 10 صدگان میشود و باقی مانده اش هم دهگان
حال نمیدونم چطور بنویسم
ممنون
سلام بفرما
کد:
B = A / 10
B = B * 10
B = A - B

'********************
C = A / 100
C = C * 100
C = A - C
C = C / 10

'********************
D = A / 1000
D = D * 1000
D = A - D
D = D / 100

'********************
b یکان
c دهگان
d صدگان
فقط متغیر ها باید از نوع long باشند و a هم عدد ورودی است
موفق باشیدWink
(۲۹-آبان-۱۳۹۱, ۱۵:۴۰:۴۲)hadikh73 نوشته است: [ -> ]سلام بفرما
کد:
B = A / 10
B = B * 10
B = A - B

'********************
C = A / 100
C = C * 100
C = A - C
C = C / 10

'********************
D = A / 1000
D = D * 1000
D = A - D
D = D / 100

'********************
b یکان
c دهگان
d صدگان
فقط متغیر ها باید از نوع long باشند و a هم عدد ورودی است
موفق باشیدWink
ممنون
رابطه ها را فهنیدم ولی دستورات مشکل دارم
مثلا
$regfile = Atmega32.dat
$crystal = 80000
Config Porta = Input
X = Pina
Config Portb = Output
Config Portc = Output
Config Portd = Output
Dim X As Word
Dim Y As Word
Dim Z As Word
Dim Q As Word
Dim W As Word
Dim T As Word
Y = 75x - 75
Z = Y \ 10
Q = Y Mod 10
W = Z \ 10
T = Z Mod 10

برنامه تا ایجا نوشتم
به خط 3 خطا میدهد
دستوری که رو سون سگمن نشون بدم نمدونم چیه
با سلام!

ایرادات برنامه:
1-میکرو اشتباه معرفی شده(خط اول)
2-بگی نگی فرکانس کاریتم اشتباس
3-شما چطور تونستید قبل از تعریف متغیر مقدار گرفته شده از چورتون رو در متغیر X قرار بدین؟(یعنی اول تعریف بعد مقدار دهی و تغییر)
4-تابع F رو بسکام نمیتونه اینجوری محاسبه کنه ؛بهره اول X رو در 75 ضرب کنید بعد حاصل رو بریزید داخل Y بعد 75 تا از y کم کنید.
5-برنامه تون هم که ته نداشت(End 'Program)

خوب امیدورام ناراحت نشده باشید!
برنامه هم توضیح خاصی نداره ؛فقط چیزی که فکر میکنم مهم باشه دستور MOD هست؛این دستور در واقع مقدار باقی مانده تقسیم رو برمیگردونه،به طور مثال:
Y=10 Mod 2 یعنی باقیمانده حاصل 10 تقسیم بر 2 را در متغیری به نام Y قرار بدهSmile

اینم برنامه تعمیر شده خدمت دوست عزیز:
کد:
$regfile = "m32def.dat"
$crystal = 8000000


Config Porta = Input


Config Portb = Output
Config Portc = Output
Config Portd = Output


Dim X As Word
Dim Y As Word
Dim Z As Word
Dim Q As Word
Dim W As Word
Dim T As Word


X = Pina

Y = 75 * X
Y = Y - 75
Z = Y \ 10
Q = Y Mod 10
W = Z \ 10
T = Z Mod 10


End                                                         'end program



موفق باشید[/align]
ممنون
دستوری که برای انکه Q,W,Tرا روی سون سگمنت نشون بدیم نمیدونم چی هست
امکان دارد بگید
(۲۹-آبان-۱۳۹۱, ۲۰:۰۸:۰۰)kendab نوشته است: [ -> ]ممنون
دستوری که برای انکه Q,W,Tرا روی سون سگمنت نشون بدیم نمیدونم چی هست
امکان دارد بگید
به روش دوست عزیز student-p شما ارقام رو جدا می کنید و
اول باید با دستور lookup متغیر ها رو به کد تبدیل کنین و بعدش روی سگمنت نشون بدین
فقط یه مشکل هست اونم اینه که متغیر های شما از نوع word هستند و باید به byte تبدیل شوند و بعدش از دستور lookup استفاده کنید
متن کامل برنامه
کد php:
$regfile "m32def.dat"
$crystal 8000000


Config Porta 
Input


Config Portb 
Output
Config Portc 
Output
Config Portd 
Output


Dim X 
As Word
Dim Y 
As Word
Dim Z 
As Word
Dim Q 
As Word
Dim W 
As Word
Dim T 
As Word
Dim Q1 
As Byte
Dim W1 
As Byte
Dim T1 
As Byte

Pina

75 X
75
10
Y Mod 10
10
Z Mod 10



Q1
=Q
W1
=W
T1
=T


Q1 
Lookup(q1 sega)
W1 Lookup(w1 sega)
T1 Lookup(t1 sega)

Portc.0 1
Portd 
Q1
Waitms 4
Portc.0 
0
Portc.1 
1
Portd 
W1
Waitms 4
Portc.1 
0
Portc.2 
1
Portd 
T1
Waitms 4
Portc.2 
0

End
sega
:
Data &B1000000 , &B1111001 , &B0100100 , &B0110000
Data 
&B0011001 , &B0010010 , &B0000010 , &B1111000
Data 
&B0000000 , &B0010000 
چند تا نکته
سگمنت باید از نوع آند مشترک باشه(در صورتی که کاتد مشترک هسته باید تو قسمت sega یک ها رو به صفر تبدیل کنی و صفر ها رو به یک تبدیل کنی)
پایه مشترک سگمنت ها رو به پایه های
Portc.0
Portc.1
Portc.2
وصل کنی و پایه ها a-g رو به پورت d وصل کنی

حالا من چند تا سوال داشتم
با این دستور چکار می کنین
X = Pina
یعنی x چیهConfused
اسم دستوراتی مثل mod رابطه؟؟!!!
موفق باشیدWink
سلام
به من گفتن دستورx=pinaیعنی ورودی را تو x بریز
من برنامه شما را با پرتیوس اجرا کردم کار نمیکنه
امکان داره راهنمایی کنی
(۳۰-آبان-۱۳۹۱, ۰۰:۱۳:۱۰)kendab نوشته است: [ -> ]سلام
به من گفتن دستورx=pinaیعنی ورودی را تو x بریز
من برنامه شما را با پرتیوس اجرا کردم کار نمیکنه
امکان داره راهنمایی کنی
فایل پروتوسی که طراحی کردین رو بذارید تا ببینم مشکل از چیهWink
مگه pina عدده که شما می خواهین نمایش بدین Confused
(۲۹-آبان-۱۳۹۱, ۲۳:۲۱:۵۳)hadikh73 نوشته است: [ -> ]
(۲۹-آبان-۱۳۹۱, ۲۰:۰۸:۰۰)kendab نوشته است: [ -> ]ممنون
دستوری که برای انکه Q,W,Tرا روی سون سگمنت نشون بدیم نمیدونم چی هست
امکان دارد بگید
به روش دوست عزیز student-p شما ارقام رو جدا می کنید و
اول باید با دستور lookup متغیر ها رو به کد تبدیل کنین و بعدش روی سگمنت نشون بدین
فقط یه مشکل هست اونم اینه که متغیر های شما از نوع word هستند و باید به byte تبدیل شوند و بعدش از دستور lookup استفاده کنید
متن کامل برنامه
کد php:
$regfile "m32def.dat"
$crystal 8000000


Config Porta 
Input


Config Portb 
Output
Config Portc 
Output
Config Portd 
Output


Dim X 
As Word
Dim Y 
As Word
Dim Z 
As Word
Dim Q 
As Word
Dim W 
As Word
Dim T 
As Word
Dim Q1 
As Byte
Dim W1 
As Byte
Dim T1 
As Byte

Pina

75 X
75
10
Y Mod 10
10
Z Mod 10



Q1
=Q
W1
=W
T1
=T


Q1 
Lookup(q1 sega)
W1 Lookup(w1 sega)
T1 Lookup(t1 sega)

Portc.0 1
Portd 
Q1
Waitms 4
Portc.0 
0
Portc.1 
1
Portd 
W1
Waitms 4
Portc.1 
0
Portc.2 
1
Portd 
T1
Waitms 4
Portc.2 
0

End
sega
:
Data &B1000000 , &B1111001 , &B0100100 , &B0110000
Data 
&B0011001 , &B0010010 , &B0000010 , &B1111000
Data 
&B0000000 , &B0010000 
چند تا نکته
سگمنت باید از نوع آند مشترک باشه(در صورتی که کاتد مشترک هسته باید تو قسمت sega یک ها رو به صفر تبدیل کنی و صفر ها رو به یک تبدیل کنی)
پایه مشترک سگمنت ها رو به پایه های
Portc.0
Portc.1
Portc.2
وصل کنی و پایه ها a-g رو به پورت d وصل کنی

حالا من چند تا سوال داشتم
با این دستور چکار می کنین
X = Pina
یعنی x چیهConfused
اسم دستوراتی مثل mod رابطه؟؟!!!
موفق باشیدWink
یعنی شما می خواهید ولتاژ 0-5 ولت رو با سگمنت اندازه گیری کنید اگر منظورتون اینه یه سری به اینجا یه سری بزنید چون برای یکی از دوستان با سگمنت و atmega8 ساختم و جواب هم داد
بعدش شما نباید از دستور x=pina استفاده کنید شما باید adc رو روشن کنید و بعدش عددی که adc میده بین 0-1023 است که در 75 ضرب بشه میشه یه عدد 6 رقمی و چطوری شما می خواهید روی سگمنت سه تایی نمایش بدینBiggrin
موفق باشیدWink
(۳۰-آبان-۱۳۹۱, ۰۰:۱۳:۱۰)kendab نوشته است: [ -> ]سلام
به من گفتن دستورx=pinaیعنی ورودی را تو x بریز
من برنامه شما را با پرتیوس اجرا کردم کار نمیکنه
امکان داره راهنمایی کنی

سلام
انتخاب نوع سون سگمنتا دست خودتون هست تنها تفاوتشون تو کدهاشون هست؛در واقع شما با بدست آوردن مثلا کد آند مشترک میتونید با NOT کردن همون رو خیلی ساده به کد مربوط به سون سگمنت کاتد مشترک تبدیل کرد!

Atکد X=pina که من معمولا بصورت X=PORTA مینویسم؛وظیفش این هست که مقادیر خوانده شده از پورت A رو در متغیری به عنوان X قرار میده!(مثلا میتونید از ی دیپ سوئیچ هشت تایی استفاده کنید)

Atبله حرفتون کاملا صحیح؛یعنی به جای استفاده از متغیر هایی از نوع Word میشه از Byte استفاده کرد (اینطوری حجم کد تون هم بهینه تر میشه)،فقط ی نکته:
اگر X=255 باشه دیگه این محدوده کمه و باید متغیرا رو از نوع wordتعریف کرد.چون تو این حالت مقدار Y=(255*75)-75=19050 که نتیجه میشه گرفت که byte جواب گو نیس؛و به دنبالش باید از سون سگمنت پنج تایی استفاده کرد.
و در ضمن ی دستی تو برنامه برد تا بشه 5 رقم رو نشون داد!

kendab عزیز امیدوارم متوجه شده باشید؛در ضمن فایل پیوستون هم مشکل داره.
موفق باشید
صفحه‌ها: 1 2