162 lines
2.3 KiB
C
162 lines
2.3 KiB
C
#include <8052.h>
|
|
|
|
#include "ax110xx.h"
|
|
#include "interrupt_ax110xx.h"
|
|
#include "cpu_ax110xx.h"
|
|
#include "types_ax110xx.h"
|
|
#include "uart/uart.h"
|
|
|
|
#define ERASE_EVENT 1
|
|
#define WRITE_EVENT 2
|
|
#define READ_EVENT 3
|
|
|
|
extern void ax11000_PeripherialISR(void) __interrupt 9;
|
|
#if UART0_ENABLE
|
|
extern void uart0_ISR(void) __interrupt 4 __using 2;
|
|
#endif
|
|
#if UART1_ENABLE
|
|
extern void uart1_ISR(void) __interrupt 6 __using 2;
|
|
#endif
|
|
|
|
|
|
volatile unsigned char hi_flag = 1;
|
|
volatile unsigned char timer = 0;
|
|
volatile unsigned char tstate = 0;
|
|
|
|
|
|
void timer0_irq_proc(void) __interrupt 1 using 2
|
|
{
|
|
timer++;
|
|
|
|
if (timer == 0)
|
|
{
|
|
tstate = 1;
|
|
}
|
|
|
|
switch(tstate)
|
|
{
|
|
case 1:
|
|
case 16:
|
|
P1_0 = 0;
|
|
break;
|
|
case 8:
|
|
case 24:
|
|
P1_0 = 1;
|
|
break;
|
|
default: break;
|
|
}
|
|
|
|
if(tstate)
|
|
tstate++;
|
|
|
|
TR0 = 0; /* Stop Timer 0 counting */
|
|
TH0 = 0x00;
|
|
TL0 = 0x00;
|
|
TR0 = 1; /* Start counting again */
|
|
}
|
|
|
|
void pause(unsigned char len)
|
|
{
|
|
unsigned char a;
|
|
unsigned int b;
|
|
a=len;
|
|
b=0xFFFF;
|
|
while(a--)
|
|
{
|
|
while(b--)
|
|
{
|
|
__asm
|
|
nop
|
|
__endasm;
|
|
}
|
|
}
|
|
}
|
|
|
|
unsigned char _sdcc_external_startup()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
void putstring(char *string)
|
|
{
|
|
unsigned char sc;
|
|
sc = 0;
|
|
while(string[sc] != 0)
|
|
putchar(string[sc++]);
|
|
}
|
|
|
|
const char hval[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
|
|
|
|
void putHexB(unsigned char b)
|
|
{
|
|
putchar(hval[b>>4]);
|
|
putchar(hval[b&0x0F]);
|
|
}
|
|
|
|
void putHexW(unsigned int w)
|
|
{
|
|
putHexB(w>>8);
|
|
putHexB(w&0xFF);
|
|
}
|
|
|
|
void putHexD(unsigned long d)
|
|
{
|
|
putHexW(d>>16);
|
|
putHexW(d&0xFFFF);
|
|
}
|
|
|
|
void main(void)
|
|
{
|
|
AX11000_Init();
|
|
|
|
switch (CSREPR & (BIT6|BIT7))
|
|
{
|
|
case SCS_100M :
|
|
goto three;
|
|
break;
|
|
case SCS_50M :
|
|
goto two;
|
|
break;
|
|
case SCS_25M :
|
|
goto one;
|
|
break;
|
|
}
|
|
|
|
goto none;
|
|
|
|
three:
|
|
P1 = 0x00;
|
|
pause(0x07);
|
|
P1 = 0xFF;
|
|
pause(0x07);
|
|
two:
|
|
P1 = 0x00;
|
|
pause(0x07);
|
|
P1 = 0xFF;
|
|
pause(0x07);
|
|
one:
|
|
P1 = 0x00;
|
|
pause(0x07);
|
|
P1 = 0xFF;
|
|
none:
|
|
|
|
TCON = 0; /* timer control register, byte operation */
|
|
TH0 = 0x00;
|
|
TL0 = 0x00;
|
|
TR0 = 1; /* start timer0 */
|
|
ET0 = 1; /* Enable Timer 0 overflow interrupt IE.1 */
|
|
TI = 0; /* clear this out */
|
|
|
|
UART_SetPort(0);
|
|
|
|
TMOD = (TMOD & 0xF0) | 0x01; /* timer control mode, byte operation */
|
|
|
|
EA = 1; /* Enable Interrupts */
|
|
|
|
while (1)
|
|
{
|
|
pause(0x0F);
|
|
|
|
putstring("Hello betty World!\n\r");
|
|
}
|
|
}
|