Initial commit

This commit is contained in:
7u83 2024-06-06 21:40:14 +02:00
parent 507769e6b3
commit 78d25174ea
5 changed files with 161 additions and 0 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "mc8051fun"]
path = mc8051fun
url = https://git.planix.org/7u83/mc8051fun.git

65
Makefile Normal file
View File

@ -0,0 +1,65 @@
-include defs.mak
SDCC ?= sdcc
SDAR ?= sdar
SDAS ?= sdas
STCCODESIZE ?= 8192
SDCCOPTS ?=
SDCCREV ?= -Dstc15f204ea
STCGAL ?= stcgal
STCGALOPTS ?=
STCGALPORT ?= /dev/ttyUSB0
STCGALPROT ?= auto
FLASHFILE ?= main.ihx
PRGOPTS ?=
SYSCLK ?= 11059
FOSC ?=11059200L
CFLAGS ?=
LIBSRC =
LIBNAME = mc8051fun/mc8051fun.lib
PRGSRC = calc.c
PRGOBJ =$(patsubst %.c,%.rel, $(PRGSRC))
$(FLASHFILE): $(LIBNAME) $(PRGOBJ)
$(SDCC) -o $(FLASHFILE) $(SDCCOPTS) $(SDCCREV) $(CFLAGS) $(PRGOBJ) $(LIBNAME)
$(LIBNAME): $(LIBOBJ)
$(SDAR) -rc $(LIBNAME) $(LIBOBJ)
#all:
# make uart2.ihx
%.rel: %.c
$(SDCC) $(SDCCOPTS) $(PRGOPTS) $(SDCCREV) -DFOSC=$(FOSC) -o $@ -c $<
eeprom:
sed -ne '/:..1/ { s/1/0/2; p }' main.hex > eeprom.hex
flash: $(FLASHFILE)
$(STCGAL) -p $(STCGALPORT) -P $(STCGALPROT) -t $(SYSCLK) $(STCGALOPTS) $(FLASHFILE)
clean:
rm -f *.obj
rm -f *.ihx *.hex *.bin *.rst
rm -f *.map
rm -f *.rel
rm -f *.lst
rm -f *.sym
rm -f *.lk
rm -f *.mem
rm -f *.lib
rm -f *.asm
cpp: SDCCOPTS+=-E
cpp: main

View File

@ -1,2 +1,4 @@
# calc8051
git submodule update --init --recursive

90
calc.c Normal file
View File

@ -0,0 +1,90 @@
#include "mc8051fun/mc8051fun.h"
#include "mc8051fun/lcd.h"
#define NBYTES 8
#define BCDBYTES (NBYTES+NBYTES/2)
__xdata uint8_t val0[NBYTES];
__xdata uint8_t val1[NBYTES];
__xdata uint8_t result[NBYTES];
__xdata uint8_t rest[NBYTES];
__xdata uint8_t bcd[BCDBYTES];
static void init (void)
{
lcd_cmd(LCD_SET_FUNCTION | LCD_FUNCTION_8BIT | LCD_FUNCTION_2LINE);
lcd_cmd(LCD_SET_DISPLAY | LCD_DISPLAY_ON);
lcd_cmd(LCD_CLEAR_DISPLAY);
lcd_cmd(LCD_SET_DDADR);
}
static void putchar(char c)
{
lcd_chr(c);
}
static void lcd_str (char *p)
{
while(*p){
putchar(*p++);
}
}
static void zero_val(__xdata uint8_t * ptr)
{
for(int i=0; i<NBYTES; i++){
ptr[i]=0;
}
}
static void val0tobcd()
{
__asm
mov r7,#NBYTES
mov r6,#BCDBYTES
mov r0,#_val0
mov r1,#_bcd
acall long_xtobcd
__endasm;
}
static void printbcdval()
{
uint8_t b;
for(int i=BCDBYTES-6; i>=0; i--){
b=bcd[i]>>4;
putchar(b+0x30);
b=bcd[i]&0xf;
putchar(b+0x30);
}
}
static void val0val1_add()
{
__asm
mov r0,#_val0
mov r1,#_val1
mov r7,#NBYTES
lcall long_xadd
__endasm;
}
void main()
{
init();
zero_val(val0);
zero_val(val1);
val1[0]=0x01;
lcd_str("Hello World!");
while(1){
val0val1_add();
val0tobcd();
lcd_cmd(LCD_GOTO_LINE2);
printbcdval();
}
}

1
mc8051fun Submodule

@ -0,0 +1 @@
Subproject commit 9a906c35ad0974b1e3f9b34468a87a4b0e46dd51