diff options
| author | Keith Packard <keithp@keithp.com> | 2009-03-15 18:11:53 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2009-03-15 18:11:53 -0700 | 
| commit | 25b77d236c01258abfc03114c2fc9ea2d69ca6e7 (patch) | |
| tree | 799668c5feef97db0ab4f7b00ff631f56f61497c /target | |
| parent | 164b4e4749ad64ebbe26e84fd7b4fa1aa733dbe4 (diff) | |
Add telemetrum beeper example
Diffstat (limited to 'target')
| -rw-r--r-- | target/beep/Makefile | 46 | ||||
| -rw-r--r-- | target/beep/beep.c | 89 | 
2 files changed, 135 insertions, 0 deletions
| diff --git a/target/beep/Makefile b/target/beep/Makefile new file mode 100644 index 00000000..8f600b4a --- /dev/null +++ b/target/beep/Makefile @@ -0,0 +1,46 @@ +CC=sdcc +NO_OPT=--nogcse --noinvariant --noinduction --nojtbound --noloopreverse \ +	--nolabelopt --nooverlay --peep-asm +DEBUG=--debug + +CFLAGS=--model-large $(DEBUG) --less-pedantic \ +	--no-peep --int-long-reent --float-reent \ +	--data-loc 0x30 + +LDFLAGS=--out-fmt-ihx +LDFLAGS_RAM=$(LDFLAGS) --code-loc 0xf000 --xram-loc 0xf400 --xram-size 1024 + +LDFLAGS_FLASH=$(LDFLAGS) --code-loc 0x0000 --xram-loc 0xf000 --xram-size 1024 + +SRC=beep.c +ADB=$(SRC:.c=.adb) +ASM=$(SRC:.c=.asm) +LNK=$(SRC:.c=.lnk) +LST=$(SRC:.c=.lst) +REL=$(SRC:.c=.rel) +RST=$(SRC:.c=.rst) +SYM=$(SRC:.c=.sym) + +PROGS=beep-flash.ihx beep-ram.ihx +PCDB=$(PROGS:.ihx=.cdb) +PLNK=$(PROGS:.ihx=.lnk) +PMAP=$(PROGS:.ihx=.map) +PMEM=$(PROGS:.ihx=.mem) +PAOM=$(PROGS:.ihx=) + +%.rel : %.c +	$(CC) -c $(CFLAGS) -o$*.rel $< + +all: $(PROGS) + +beep-ram.ihx: $(REL) Makefile +	$(CC) $(LDFLAGS_RAM) $(CFLAGS) -o beep-ram.ihx $(REL) +	$(CC) $(LDFLAGS_FLASH) $(CFLAGS) -o beep-flash.ihx $(REL) + +beep-flash.ihx: beep-ram.ihx + +clean: +	rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM) +	rm -f $(PROGS) $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM) + +install: diff --git a/target/beep/beep.c b/target/beep/beep.c new file mode 100644 index 00000000..08422082 --- /dev/null +++ b/target/beep/beep.c @@ -0,0 +1,89 @@ +/* + * Copyright © 2008 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +sfr at 0x80 P0; +sfr at 0x90 P1; +sfr at 0xA0 P2; +sfr at 0xC6 CLKCON; + +sfr at 0xF1 PERCFG; +sfr at 0xF2 ADCCFG; +sfr at 0xF3 P0SEL; +sfr at 0xF4 P1SEL; +sfr at 0xF5 P2SEL; + +sfr at 0xFD P0DIR; +sfr at 0xFE P1DIR; +sfr at 0xFF P2DIR; +sfr at 0x8F P0INP; +sfr at 0xF6 P1INP; +sfr at 0xF7 P2INP; + +sfr at 0x89 P0IFG; +sfr at 0x8A P1IFG; +sfr at 0x8B P2IFG; + +#define nop()	_asm nop _endasm; + +void +delay (unsigned char n) +{ +	unsigned char i = 0; + +	n <<= 1; +	while (--n != 0) +		while (--i != 0) +			nop(); +} + +void +tone (unsigned char n, unsigned char m) +{ +	unsigned char	i = 0; +	while (--m != 0) { +		while (--i != 0) { +			P2 = 0xff; +			delay(n); +			P2 = 0xfe; +			delay(n); +		} +	} +} + +void +high() { +	tone(1, 2); +} + +void +low() { +	tone(2, 1); +} + +main () +{ +	CLKCON = 0; +	/* Set p1_1 to output */ +	P2DIR = 0x01; +	P1INP = 0x00; +	P2INP = 0x00; +	for (;;) { +		high(); +		low(); +	} +} | 
