לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 02-04-2006, 14:32
  ליאור אונליין ליאור אונליין אינו מחובר  
 
חבר מתאריך: 28.10.01
הודעות: 1,291
הסבר לתוכנית נתונה בשפת C

אני צריך הסבר לתוכנית הנ"ל. לכל שורה שלה, ולרעיון הכללי של איך היא עובדת. הסברתי בעיקרון לפי מה שאני יודע/חושב שאני יודע אבל יש הרבה שורות שלא מפורטות ואני לא בטוח שנכונות:

הצגת הבעיה:
התוכנית תקלוט מהמשתמש ערך טמפרטורה רצוי, ותאכסנו במשתנה.
התוכנית תקלוט דרך החיבור המקבילי DB25 ערך טמפרטורה נמדדת בשטח ותציגו ע"ג הצג וכן ע"ג תצוגת טמפרטורה (7 Segment).
ערך הטמפרטורה הנמדדת וערך הטמפרטורה הרצוי יושוו ע"י התוכנית וכאשר ערך הטמפרטורה הנמדדת יהיה גדול מערך הטמפרטורה הרצויה, התוכנית תוציא פלט שיפעיל את המצמד האופטי.

קוד:
#include <stdio.h> //הכללת ספריות #include <conio.h> //הכללת ספריות #include <dos.h> //הכללת ספריות void main() //התחלת התוכנה { float temp, T; //הגדרת משתנים מדויקים int a,b,tr; //הגדרת שאר המשתנים clrscr(); // ניקוי מסך gotoxy(10,8); // הזזת הסמן לקורדינאטות רצויות printf("Enter temperature in Celsius "); //פלט scanf("%d",&tr); //הכנסת טמפ' רצויה למשתנה while (1) { // לולאה אינסופית delay(2000); //השהייה ל2 שניות outp(0x37A,0xF2); //הפעלת הממיר delay (1); //השהיה קצרה outp(0x37A,0x01); //ארבעת הביטים התחתונים a=inp(0x379); //ארבעת הביטים התחתונים a&=0xf0; // a AND F0 (1111000) a^=0x80; // a XOR 80 (1000000) a>>=4; //הזזת 4 מקומות שמאלה outp(0x37A,0x00); //ארבעת הביטים העליונים b=inp(0x379); //ארבעת הביטים העליונים b&=0xf0; // b AND F0 (1111000) b^=0x80; // b XOR 80 (1000000) T=a|b; //הוספת הביטים העליונים לתחתונים temp=128*T/256; outp(0x378,temp); // הצגת הטמפ הנמדדת ב7 סגמנט gotoxy(10,12); //הזזת הסמן לקורדינאטות רצויות printf("Temp is %3.1f C degrees\n", temp); //פלט-הצגת הטמפ הנמדדת if (temp>tr) //תנאי-אם הטמפ' הנמדדת גבוהה מהרצויה outp(0x37A,0x04); //הפעל המצמד האופטי } }


את השורות האלה:
קוד:
a&=0xf0; // a AND F0 (1111000) a^=0x80; // a XOR 80 (1000000)

לא ממש הבנתי. הבאתי רק הסבר לפקודה אבל לא יודע למה הם קיימות ומה התפקיד שלהם.
ועם מה התפקיד של הזזת הסמן?
ועוד משהו: בעקרון בגלל שהתוכנית מציגה את הטמפ' על המחשב היא אמורה לרשום אותו במשהו "קריא"..= בבסיס 10, לא בבינארי, ואני לא רואה איפה מבוצעת המרה מבינארי לדצימלי שם. פספסתי משהו?

תודה מראש

נערך לאחרונה ע"י ליאור אונליין בתאריך 02-04-2006 בשעה 14:48.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:52

הדף נוצר ב 0.05 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר