PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تحلیل برنامه



siavash7
12-02-2013, 10:02
سلام . یه سوال داشتم ازتون . تو مجله pmm9 یه برنامه اومده :

#include < LPC23xx.h >

int main (void)
{
SCS = 0x30; // Enable main oscillator &
oscillator range select
PLLCON = 0; // Disable PLL & Disconnect
PLL unit
PLLFEED = 0xAA; // Write feed sequence
PLLFEED = 0x55; // Write feed sequence
while (!(SCS&0x40)); // Wait until main oscillator is stable (OSCSTAT
Bit)
CLKSRCSEL = 1; // Select main oscillator for PLL input
source
PLLCFG = 0xa; // MSEL=10 & NSEL=0
PLLFEED = 0xAA; // Write feed sequence
PLLFEED = 0x55; // Write feed sequence
PLLCON = 1; // Enable PLL & Disconnect PLL
PLLFEED = 0xAA; // Write feed sequence
PLLFEED = 0x55; // Write feed sequence
CCLKCFG = 11; // CPU clock select is : 44MHz
USBCLKCFG = 11; // USB clock select is : 48MHz
PCLKSEL0 = 0; // Peripheral select is : 11MHz
PCLKSEL1 = 0; // Peripheral select is : 11MHz
while (PLLSTAT&0x04000000); // wait until PLL is locked
PLLCON = PLLCON|2; // Connect PLL unit
PLLFEED = 0xAA; // Write feed sequence
PLLFEED = 0x55; // Write feed sequence
}

میخواستم اگه زحمتی نیست خط نهم برنامه ,همون شرط while رو برام تحلیل کنید . البته خودش نوشته while چیکار میکنه ولی من میخوام بدونم اون علامت ها یعنی چی(کاربرد نقیض و and) ؟
scs همونطور که میدونید یک رجیستر 32 بیت هست .
مرسی

Aghaeifar
12-02-2013, 21:06
سلام.
دیتاشیت رو نگاه نکردم ولی اگر قبول کنیم کدش درسته معنیش اینه: اگر اسیلاتور به حالت پایدار برسه، بیت 6 ام در رجیستر scs مقدارش 1 میشه و تا زمانی که پایدار نیست مقدارش صفر است. این شرط چک می کنه تا زمانی که اسیلاتور پایدار نشده و این بیت صفر است در این حلقه گیر کنه و جلوتر نره.

siavash7
13-02-2013, 17:50
این درست هست. ولی منظورم نحوه ی استفاده از علامت هاست . مثلا این یعنی چی (SCS&0x40) کاربرد & اینجا چی هست ؟ یا اون علامت نقیض قبلش !!!

Ma3ood
13-02-2013, 19:57
while (!(SCS&0x40)); // Wait until main oscillator is stable (OSCSTAT


منظورش اینه که تا شرط این عبارت صحیح نشده تو حلقه گیر میفته
علامت & به معنی and منطقی و بیتی هست یعنی and دو عبارت 0x40 با مقدار رجیستر SCS مقدار صفر بگیره شرط حلقه برقراره و به جز این از حلقه خارج میشه

siavash7
14-02-2013, 10:18
حالا کاملا فهمیدم :o مرسی .