2008-02-13
Az hatodik programban megszólaltatjuk a hangszórót. Ez a program lényegében ugyan azt csinálja mint az előző, de nem LED-et vilogtatunk, hanem a hagszórót kapcsolgatjuk ki/be, valamivel gyorsabban. Ez a beep rutin jól használható sok programban. Ki lehet próbálni, ha hoszabbra/rövidebbre vesszük (n), vagy hangmagasságot változtatjuk meg (delay), sőt azt is ki lehet próbálni, hogy milyen lesz, ha nem szimmetrikus a kimenőjel kitöltése (a két delay érték eltérő). Hogy egy kis érdekesség is legyen, az egyik gombra egyet csipog, a másik gombra pedig hármat.
/*******************************************************************************
* Author - 3 BYTE MI *
* http://haromb.freeweb.hu *
* Date - 2009.01.03. *
* Chip - Atmel ATtiny2313 *
* Hardware - AVR1 tesztpanel *
* Compiler - avr-gcc (WinAVR 20080610) 4.3.0 *
* *
* LED2-t bekapcsolja. *
* SW1 lenyomasara egyet csipog. *
* SW2 lenyomasara harmat csipog. *
* *
********************************************************************************
* PonyProg Configuration and Security Bits (bepipalva): *
* Belso 4MHz-es osszc.: SUT0, CKSEL3, CKSEL2, CKSEL0 *
* Kulso keramia rezonator: SUT0 *
* *
*******************************************************************************/
#ifndef F_CPU
#define F_CPU 4MHz
#endif
#include "attiny2313_3bmi.h"
#include
// PORTD bitjei
#define SPEAKER 2
#define LED1 3
#define LED2 4
#define SW1 5
#define SW2 6
#define LED2_ON BC( PORTD, LED2)
#define SPEAKER_ON BC( PORTD, SPEAKER)
#define SPEAKER_OFF BS( PORTD, SPEAKER)
#define SW1_ON BTC( PIND, SW1) // SW1 lenyomva?
#define SW2_ON BTC( PIND, SW2) // SW2 lenyomva?
void beep( void); // 120 ms, 1000 HZ-es csippantas
int main( void)
{
UC n;
LED2_ON; // inicializalas
BS( DDRD, LED2);
SPEAKER_OFF;
BS( DDRD, SPEAKER);
while( 1) // maga a program hurok
{
if( SW1_ON) beep(); // 1. gombra - 1 beep
if( SW2_ON) // 2. gombra - 3 beep
{
n= 3;
while( n--)
{
beep();
_delay_ms( 120);
}
}
}
return 0;
}
void beep( void) // 120 ms, 1000 HZ-es csippantas
{
UC n= 120;
while( n--)
{
SPEAKER_ON;
_delay_us( 500);
SPEAKER_OFF;
_delay_us( 500);
}
}
Itt a vége, fuss el véle, legytek az én vendégeim, innen letölthetitek a hozzávalókat összecsomagolva.