قصد داریم شکل موج های گوناگونی با میکروکنتر AVR به زبان سی (کدویژن) تولید کنیم. از آنجایی که ولتاژ میکرو 5 ولت می باشد ما 2.5 ولت را برای پیک منفی و 2.5 ولت دیگر را برای پیک مثبت در نظر میگیرم. اصول تولید موج بر مبنای پله های 0 تا 2.5 ولت می باشد که اطلاعات 8 بیتی روی پورت خروجی را توسط یک سری مقاومت به ولتاژ آنالوگ تبدیل میکنیم. به عنوان مثال برای تولید شکل موج سینوسی از فرمول زیر استفاده می کنیم:
step = 128+(127*Sin N)
step عددی است که گام حرکتی را مشخص می کند. N نیز درجه می باشد که در اینجا 360/1.41=255 خواهد بود، یعنی در هر گام 1.41 درجه حرکت خواهیم داشت. 255 ماکزیمم عددی است که می توان روی یک پورت 8 بیتی نوشت. بنابراین با محاسبه اعداد از 0 تا 360 درجه ما یک آرایه 255 عضوی با اعداد مختلف خواهیم داشت باید این 255 عدد مختلف را با نهایت سرعت بر روی پورت مورد نظر قرار دهیم تا یک سیکل کامل تولید شود. نکته: برای تغییر فرکانس موج تولید شده باید تاخیرهای مورد نیاز را بعد از حلقه های For قرار داد و هیچ وجه نباید درون حلقه های for تاخیر گذاشت (هرچه با سرعت بیشتری اعداد به پورت ارسال شوند کیفیت موج خروجی بهتر خواهد بود) سایر موج ها نیز از همین شوه (پله ها) تولید می شود. که در انشاء الله اگر وقت شد نحوی تولید و فرمول آنها را نیز توضیح خواهید داد.