(Jag håller mig fortfarande till AVR som exempel - sen om du väljer AVR eller PIC får vi väl se. Här på forumet finns bra kunskaper om båda sorterna i vilket fall)
För att programmera en processor har du alltså ett program i din PC där du kan skriva och felsöka din kod (t.ex. C eller assembler). Sedan när du börjar få ett fungerande program så ansluter du din krets till programmeraren som du köpt och överför programmet till processorn.

(AVRISP programmerare)
När väl programmeringen är klar så kopplar du bort programmeraren och processorn börjar direkt köra programmet så fort den får matningsspänning.
Själva programmet för processorn kan du göra på många olika sätt. Men det handlar om att kunna slå på och av en utgång i en bestämd hastighet. Det kan göras med hjälp av processorns inbyggda "timers". Indata i form av frekvensvärden skickas via uart. Du får bestämma dig hur data som skickas ska se ut (ex. F00500 betyder "sätt frekvens till 500 Hz), göra en programsnutt som kollar av UART:en och tolkar tecken som kommer in - om det får in vettig data ska den ändra parametrarna för timern som hela tiden snurrar och generar pulser på utgången.
Innan du ger dig på det programmet ska du nog börja med något enklare!
Sedan ska du ha ett program i din PC som skickar koder till processorn via serieporten. Du bygger ett fönster där det finns en "slidecontrol" (dvs ett skjutreglage) - du avlyssnar detta objekt och när det sker en förändring (någon drar i spaken) så läser du av värdet och omvandlar till en teckensträng , t.ex. "F00500" som då genast skickas ut genom serieporten.