سلام
داخل 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; } }
دیدگاه