قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

MAH_41
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2005
الدولة: syria-dar'a
المشاركات: 106
نشاط [ MAH_41 ]
قوة السمعة:0
قديم 21-03-2013, 09:13 AM المشاركة 1   
افتراضي جزء غير مفهوم من كود ميكرو سي ( مقياس فولط ) Twitter FaceBook Google+



السلام عليكم
عند تثبيت برنامج ميكرو سي هناك امثلة تكون مع البرنامج و احد هذه الامثلة هو
ADC_on_LCD
قراءة قيمة الفولط عبر RA4
و اظهاره على شاشة lcd 2*16
جزء من الكود البرمجي غير مفهوم و هذا هو الجزء

tlong = t * 5000; // use (int) multiplication instead of (long)
asm { // and fill the upper two bytes manually
MOVF STACK_2,W
MOVWF _tlong+2
MOVF STACK_3,W
MOVWF _tlong+3
}
t = tlong >> 10;
ما المقصود ب stack هل المقصود هو المكدس الخاص بعداد البرنامج ؟ ام انه سجل من الذاكرة ram

و هذا هو الكود الكامل للبرنامج و هو يعمل بشكل صحيح و بدون اي مشاكل


/*
* Project name:
ADC_on_LCD (Displaying ADC result on LCD)
* Copyright:
(c) Mikroelektronika, 2005.
* Description:
This code demonstrates how to use library function ADC_read, and library
procedures and functions for LCD display (4 bit interface).
* Test configuration:
MCU: PIC16F877A
Dev.Board: EasyPIC4
Oscillator: HS, 08.0000 MHz
Ext. Modules: LCD
SW: mikroC v5.0
* NOTES:
None.
*/

#include"built_in.h"

unsigned char ch;
unsigned int t;
char a[17], *tc;
long tlong;

void main() {
INTCON = 0; // disable all interrupts
LCD_Init(&PORTD); // initialize (4-bit interface connection)
LCD_Cmd(LCD_CURSOR_OFF); // send command to LCD (cursor off)
LCD_Cmd(LCD_CLEAR); // send command to LCD (clear LCD)

tc = "<<<volt meter>>>"; // assign text to string a
LCD_Out(1,1,tc); // print string a on LCD, 1st row, 1st column
tc = "LCD example"; // assign text to string a
LCD_Out(2,1,tc); // print string a on LCD, 2nd row, 1st column

OPTION_REG = 0x80;
ADCON1 = 0x82; // configure VDD as Vref, and analog channels
TRISA = 0xFF; // designate porta as input
TRISC = 0;
TRISD = 0;
Delay_ms(2000);
tc = "voltage:"; // assign text to string a
while (1) {
t = ADC_read(2); // get ADC value from 2nd channel
LCD_Out(2,1,tc); // print string a on LCD, 2nd row, 1st column

tlong = t * 5000; // use (int) multiplication instead of (long)
asm { // and fill the upper two bytes manually
MOVF STACK_2,W
MOVWF _tlong+2
MOVF STACK_3,W
MOVWF _tlong+3
}
t = tlong >> 10;

ch = t / 1000; // prepare value for diplay
LCD_Chr(2,9,48+ch); // write ASCII at 2nd row, 9th column
LCD_Chr_CP('.');

ch = (t / 100) % 10;
LCD_Chr_CP(48+ch);

ch = (t / 10) % 10;
LCD_Chr_CP(48+ch);

ch = t % 10;
LCD_Chr_CP(48+ch);
LCD_Chr_CP('V');

Delay_ms(1);
}
}//~!

اعلانات

الصورة الرمزية MYM
MYM
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: مصر
المشاركات: 337
نشاط [ MYM ]
قوة السمعة:0
قديم 21-03-2013, 06:57 PM المشاركة 2   
افتراضي


أعتقد أنة سجل من ذاكرة الرام

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 08:57 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025