Initial commit
This commit is contained in:
parent
507769e6b3
commit
78d25174ea
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "mc8051fun"]
|
||||||
|
path = mc8051fun
|
||||||
|
url = https://git.planix.org/7u83/mc8051fun.git
|
65
Makefile
Normal file
65
Makefile
Normal 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
|
90
calc.c
Normal file
90
calc.c
Normal 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
1
mc8051fun
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 9a906c35ad0974b1e3f9b34468a87a4b0e46dd51
|
Loading…
Reference in New Issue
Block a user