سلام چطور میتونم یک برنامه ساده بنویسیم که دو عدد led داشته باشه و این دو عدد یکی به pb.0 ویکی به pb.1 متصل بشود ، بطوری که led سبز که به pb.0 متصل است دو بار چشمک بزند با تاخیر یک ثانیه (تاخیر نرم افزاری) و led قرمز که به pb.1 متصل است چهار بار چشمک بزند و با تاخیر یک ثانیه . ؟ میشه کمک کنید، یه جایی گفتن باید از توابع استفاده کنی ، ولی نمیدونم چطوری میشه کمک کنید ؟ ممنون
اطلاعیه
Collapse
No announcement yet.
برنامه چشمک زدن ؟
Collapse
X
-
پاسخ : برنامه چشمک زدن ؟
#include <mega8.h>
#include <delay.h>
#define led_green PORTB.0
#define led_red PORTB.1
int i;
void green(void)
{
for(i=0;i<=1;i++)
{
led_green=1;
delay_ms(1000);
led_green=0;
delay_ms(1000);
}
}
void red(void)
{
for(i=0;i<=3;i++)
{
led_red=1;
delay_ms(1000);
led_red=0;
delay_ms(1000);
}
}
void main(void)
{
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (1<<DDB0);
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
while (1)
{
green();
red();
}
}
کد خودش گویاس دگ نیاز ب توضیح نداره فک کنم
- تشکرها 3
-
پاسخ : برنامه چشمک زدن ؟
سیستم عامل های ریل تایم دستورات رو بصورت همزمان اجرا نمیکنن چون در میکروها پردازش موازی نداریم. بلکه به دلیل تخصیص منابع به بهینه ترین شکل دستورات اجرا میشن تا فاصله زمانیشون تا حد امکان کم بشه.نوشته اصلی توسط Aristar نمایش پست هااگر منظورتون اینه که توام این دو تا چشمک بزنن که باید با تایمر یا RTOS باشه که همزمان اجرا بشن و اگر پشت هم کار بکنن که برنامه بالا رو دوستمون گذاشتن کفایت میکنه و البته نیازی به وجود تابع نبود و میشد با کد هم درستش کرد
ولی این چیزی که دوستمون خواستن مساله خاصی نیس که نیاز به سیستم عامل داشته باشه.www.gam-co.blogsky.com
دیدگاه
-
پاسخ : برنامه چشمک زدن ؟
بله میشه از وقفه تایمر برای این کار استفاده کرد.که با هر یک ثانیه یک کاری برات انجام بدهنوشته اصلی توسط fmicro نمایش پست هاممنون ..اما سوال این هست که به غیر از حلقه for ویا while از روش دیگری هم میشه استفاده کرد ؟الهم صل علی محمد و آل محمد و عجل فرجهم
www.adaksell.com
دیدگاه
-
پاسخ : برنامه چشمک زدن ؟
بله مشخصا نداره.منظور بنده هم اعلام گزینه های متفاوت بود که یا باید از دو تایمر استفاده کنین یا اگر برنامه خیلی پیچیده باشه باید از RTOS استفاده بشه که اونم پردازش موازی نیست و فقط چون با سرعت Task ها رو پرادزش میکنه شبیه حالت موازی میشه.نوشته اصلی توسط vahidabedi نمایش پست هاسیستم عامل های ریل تایم دستورات رو بصورت همزمان اجرا نمیکنن چون در میکروها پردازش موازی نداریم.
دلیل: ادغام دو پست برای جلوگیری از اسپم
بله.شما از یک یا دو تایمر میتونین استفاده کنین و حالتی رو داشته باشین که بدون حلقه اینکار صورت بگیره.اگر تایمر بتونه در یک ثانیه بدون تنظیمات سرریز بشه که همون کافیه وگرنه مثلا اگر 100 میلی ثانیه باشه یک متغیر برای شمارش قرار بدین که هر ده بار یک ثانیه رو بهتون نشون بدهنوشته اصلی توسط fmicro نمایش پست هاممنون ..اما سوال این هست که به غیر از حلقه for ویا while از روش دیگری هم میشه استفاده کرد ؟Aristar Group - Always And Forever
دیدگاه








دیدگاه