سلام
داخل AVR و زبان bascom با هر فرکانسی که دستور waitms رو وارد می کردیم معادل x میلی ثانیه تاخیر ایجاد می کرد یعنی مثلا اگر نوشته باشم
waitms 1000
تقریبا یک ثانیه رو ایجاد می کرد البته این تابع کاری به تایمر نداشت و با قرار دادن میکرو در حلقه این مدت زمان رو تشکیل می داد
حالا فبها از اینها من می خوام دستوری با حلقه درست کنم که تاخیری با کریستال خارجی 4 مگاهرتز ایجاد کنه.
پس فرکانس کاری میکرو یک مگاهرتز هست اما متاسفانه با این دستور اصلا جواب نگرفتم
تاخیرش خیلی زیاد هست عدد هم به 100000 تغییر می دم هر 3 ثانیه یه بار خروجی خاموش و روشن می شه حالا چی جوری می تونم یک ثانیه (هر چند نادقیق) با حلقه بسازم؟
داخل AVR و زبان bascom با هر فرکانسی که دستور waitms رو وارد می کردیم معادل x میلی ثانیه تاخیر ایجاد می کرد یعنی مثلا اگر نوشته باشم
waitms 1000
تقریبا یک ثانیه رو ایجاد می کرد البته این تابع کاری به تایمر نداشت و با قرار دادن میکرو در حلقه این مدت زمان رو تشکیل می داد
حالا فبها از اینها من می خوام دستوری با حلقه درست کنم که تاخیری با کریستال خارجی 4 مگاهرتز ایجاد کنه.
پس فرکانس کاری میکرو یک مگاهرتز هست اما متاسفانه با این دستور اصلا جواب نگرفتم
کد:
#include <p18f452.h>
#pragma config OSC = HS
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config WDT = OFF
#pragma config LVP = OFF
long i;
void main()
{
TRISD = 0b00000000 ;
//ADCON0bits.ADON = 0 ;
//ADCON1 = 0b00000110 ;
PORTD=0;
while(1)
{
for(i=0;i<=1000000;i++);
PORTDbits.RD2=1;
for(i=0;i<=1000000;i++);
PORTDbits.RD2=0;
}
}




دیدگاه