Initial transfer from sourceforge
This commit is contained in:
commit
f2259c5424
415 changed files with 73200 additions and 0 deletions
177
Asixtool/asix-testcode/cpu_ax110xx.c
Normal file
177
Asixtool/asix-testcode/cpu_ax110xx.c
Normal file
|
@ -0,0 +1,177 @@
|
|||
#include "ax110xx.h"
|
||||
#include "interrupt_ax110xx.h"
|
||||
#include "cpu_ax110xx.h"
|
||||
#include "types_ax110xx.h"
|
||||
|
||||
static unsigned char globeInt = 0;
|
||||
static unsigned char cpuSysClk = 0;
|
||||
static unsigned char memShadow = 0;
|
||||
static unsigned char progWtst = 0;
|
||||
static unsigned char dataStretch = 0;
|
||||
|
||||
void AX11000_Init(void)
|
||||
{
|
||||
EA = 0; // turn off globe interrupt
|
||||
|
||||
P0 = 0xFF;
|
||||
P1 = 0xFF;
|
||||
P2 = 0xFF;
|
||||
P3 = 0xFF;
|
||||
|
||||
/* Check program wait-state and data memory wait-state */
|
||||
if (CSREPR & PMS)
|
||||
{
|
||||
memShadow = 1;
|
||||
|
||||
/* for real chip */
|
||||
switch (CSREPR & (BIT6|BIT7))
|
||||
{
|
||||
case SCS_100M :
|
||||
cpuSysClk = SCS_100M;
|
||||
WTST = 0x01;
|
||||
CKCON = 0x01;
|
||||
break;
|
||||
case SCS_50M :
|
||||
cpuSysClk = SCS_50M;
|
||||
WTST = 0x00;
|
||||
CKCON = 0x01;
|
||||
break;
|
||||
case SCS_25M :
|
||||
cpuSysClk = SCS_25M;
|
||||
WTST = 0x00;
|
||||
CKCON = 0x01;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
memShadow = 0;
|
||||
|
||||
/* for real chip */
|
||||
switch (CSREPR & (BIT6|BIT7))
|
||||
{
|
||||
case SCS_100M :
|
||||
cpuSysClk = SCS_100M;
|
||||
WTST = 0x07;
|
||||
CKCON = 0x01;
|
||||
break;
|
||||
case SCS_50M :
|
||||
cpuSysClk = SCS_50M;
|
||||
WTST = 0x03;
|
||||
CKCON = 0x01;
|
||||
break;
|
||||
case SCS_25M :
|
||||
cpuSysClk = SCS_25M;
|
||||
WTST = 0x01;
|
||||
CKCON = 0x01;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
progWtst = WTST & 0x07;
|
||||
dataStretch = CKCON & 0x07;
|
||||
|
||||
PCON &= ~SWB_; // Turn off switchback function.
|
||||
|
||||
EIF &= ~INT5F; // Clear the flag of interrupt 5.
|
||||
EIF &= ~INT6F; // Clear the flag of interrupt 6.
|
||||
if (WTRF)
|
||||
{
|
||||
CSREPR |= SW_RST;
|
||||
WTRF = 0; // Clear Watch Dog Time Out Reset Flag.
|
||||
}
|
||||
|
||||
PINT2 = 1; // INT2 priority is at high level for DMA request.
|
||||
|
||||
EXTINT0(OFF); // EINT0 interrupt.
|
||||
EXTINT1(OFF); // EINT1 interrupt.
|
||||
EXTINT2(OFF); // EINT2 interrupt for DMA request.
|
||||
EXTINT3(OFF); // EINT3 interrupt for PCA.
|
||||
EXTINT4(OFF); // EINT4 interrupt for peripheral device.
|
||||
EXTINT5(OFF); // EINT5 interrupt for software timer.
|
||||
EXTINT6(OFF); // EINT6 interrupt for wake-up of power management mode and stop mode.
|
||||
|
||||
if (globeInt & BIT7)
|
||||
EA = globeInt & BIT0;
|
||||
else
|
||||
EA = 1; // Enable the globe interrupt.
|
||||
}
|
||||
|
||||
unsigned char AX11000_GetSysClk(void)
|
||||
{
|
||||
return cpuSysClk;
|
||||
}
|
||||
|
||||
unsigned char AX11000_GetMemSdw(void)
|
||||
{
|
||||
return memShadow;
|
||||
}
|
||||
|
||||
unsigned char AX11000_GetProgWst(void)
|
||||
{
|
||||
return progWtst;
|
||||
}
|
||||
|
||||
unsigned char AX11000_GetDataSth(void)
|
||||
{
|
||||
return dataStretch;
|
||||
}
|
||||
|
||||
void AX11000_SoftReset(void)
|
||||
{
|
||||
if (EA)
|
||||
globeInt = BIT0 | BIT7; // BIT0:EA bit record ; BIT7:Software reset record.
|
||||
else
|
||||
globeInt = BIT7;
|
||||
|
||||
EA = 0;
|
||||
|
||||
CSREPR |= SW_RST;
|
||||
}
|
||||
|
||||
void AX11000_SoftReboot(void)
|
||||
{
|
||||
CSREPR |= SW_RBT;
|
||||
}
|
||||
|
||||
void AX11000_WatchDogSetting(unsigned char wdIntrEnb, unsigned char wdRstEnb, unsigned char wdPrty, unsigned char wdTime)
|
||||
{
|
||||
CKCON |= wdTime;
|
||||
|
||||
if (wdIntrEnb & WD_INTR_ENABLE)
|
||||
{
|
||||
EWDI = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
EWDI = 0;
|
||||
}
|
||||
|
||||
if (wdRstEnb & WD_RESET_ENABLE)
|
||||
{
|
||||
TA = 0xAA;
|
||||
TA = 0x55;
|
||||
EWT = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
TA = 0xAA;
|
||||
TA = 0x55;
|
||||
EWT = 0;
|
||||
}
|
||||
|
||||
if (wdPrty & WD_HIGH_PRIORITY)
|
||||
{
|
||||
PWDI = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PWDI = 0;
|
||||
}
|
||||
|
||||
TA = 0xAA;
|
||||
TA = 0x55;
|
||||
RWT = 1;
|
||||
WTRF = 0;
|
||||
WDIF = 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue