10 / d מרה קצת 16f877

M

maria258

Guest
אני כבר ראיתי את הקוד שלי עובד עם 8 ביט ADC אבל אני פשוט לא יודע איך לעשות את זה 10 ביט. כאן הוא בנפרד מהקוד שלי שניסיתי לעשות עבור 10 ביט. אני הוספתי PORTC עבור 2 ביטים הנוספים, עכשיו אני רוצה PORTB לADRESH וPORTC לADRESL אבל לא יודע איך לשלב אותם בz. תודה מריה [קוד] TRISB = 0x00; / / פלט TRISC = 0x00; / / פלט TRISA = 0xFF; / / תשומות LEDS_8 = 0xFF; / / ברור / כיבוי נוריות LEDS_2 = 0xFF; / / ברורים / כיבוי נוריות [/ קוד] [קוד] GODONE = 1; / / תחכה סוף ההמרה (המרה מלאה) ואילו (GODONE == 1), x = ADRESL; בתים נמוכים / חנות / x = x; / / משמרת 1 ביט לימין y = ADRESH; בתים גבוהים / חנות / y = y
 
אתה יכול לכתוב את הקוד מה הנוריות עושות? ומה עושה x = x עושה?
 
כאן את הקוד המלא: [קוד] # כוללים / __CONFIG / (0x3F72); / / מוגדרים נתיכים / / להגדיר יציאות לקריאה קלה יותר להגדיר # # LEDS_8 PORTB להגדיר עיכוב החלל PORTC LEDS_2 (itime char החתום); החלל מרכזי (הריק) {/ / המשתנים x 8bit נתונים מסוג char החתום; הנמוך / / ADC בתים החתומים char y; גבוה / / ADC בתי int z החתום; תוצאה סופית / / TRISB = 0x00; / / פלט TRISC = 0b00111111; TRISA = 0xFF; / / תשומות LEDS_8 = 0xFF; / / ברור / כיבוי נוריות LEDS_2 = 0xFF; אולם (1) {/ / ADFM = 1, כל מה שאני / PS אנלוגי, + VREF אפשר / / הגדר את הפונקציות של נמל ADCON1 הביטים = 0b10000001; / / שעון / ערוץ בחר ולאפשר ביטים / / מבקר את הפעולה של A / D מודול ADCON0 = 0b11000001; עיכוב (1); / / התחל המרת a2d / ממיר / קצת GO (ADCON0 = ADCON0 | 1 ;) GODONE = 1 / / תחכה סוף ההמרה (המרה מלאה) ואילו (GODONE == 1), x = ADRESL; / / חנות בתים נמוכים x = x >> 1; / / משמרת קצת 1 עד y = זכות ADRESH; / / חנות גבוה בתי y = y
 
כל שעליך לעשות, אתה רוצה להעביר את כל התוצאה 10-bit, באופן ש8 MSB שלהם על PORTB ו2 LSB זה בPORTC. לכן, אני מציע לך פשוט להשתמש במשתנה זמנית להסטתו סביב, [קוד] x = ADRESL; טמפ בתים הנמוך / חנות / = 0x03 & x; / / להפריד 2 LSB של x >> = 2; 2 LSB / / הסרה של y = ADRESH; / / חנות y בתים הגבוה
 
ניסיתי את השיטה שלך אבל זה לא עבדתי. PORTC מראה כלום. אני decalred PORTC כ0b0011 1111 כלומר, שני הביטים הראשונים כפלט. האם יש לך שיטה אחרת בבקשה? אני באמת מעריך את העזרה ואת הזמן שלך האדונים. לגבי מריה
 
אתה בטוח PORTC צריך להראות משהו? אני מתכוון, אפשרי שלה שאולי ADRESH אפס, אז אתה wouldnt לראות שום דבר לPORTC. וראשון ששתי פיסות PORTC, אתה מתכוון לביטים המשמעותיים ביותר של Teo PORTC, נכון?
 
מאז אני צריך את זה כמו 10 ביט ADC אני צריך PORTC להראות שהוא מקבל אות פנימה וכן מאז יש לי להגדיר PORTC כ0b0011 1111 אות צריכה להיות בRC0 וRC1.
 
אז פשוט לשנות PORTC.6 וPORTC.7 לRC0 וRC1 בקוד שלי. ואני חושב שאתה הגדרת PORTC לא בצדק, כ0b0011 1111 ימשיך RC0 וRC1 כתשומות. זה צריך להיות 0b1111 1100.
 
כן תודה לך. אני עשיתי טעות החיווט. תודה לך על העזרה והזמן שלך. זה זכה להערכה. לגבי מריה
 

Welcome to EDABoard.com

Sponsor

Back
Top