📄 source1.c
字号:
/////////////////////////////////////
// Generated Initialization File //
/////////////////////////////////////
#include "c8051F060.h"
#include "absacc.h"
// Peripheral specific initialization functions,
// Called from the Init_Device() function
#define uchar unsigned char
#define uint unsigned int
void init_rtc();
void disp_rtc();
uchar xdata * data read_ptr;
idata unsigned char a[13];
uchar res[5];
uchar t,k;
uint i;
sbit AD16 = P3^4;
sbit AD17 = P3^5;
sbit AD18 = P3^6;
sbit RD = P4^6;
sbit WR = P4^7;
void Timer_Init()
{
SFRPAGE = TIMER01_PAGE;
TCON = 0x40;
TMOD = 0x20;
TH1 = 0x9F;
TR1 = 1;
}
void Port_IO_Init()
{
SFRPAGE = CONFIG_PAGE;
// P3MDOUT = 0x07;
XBR0 = 0x05;
XBR2 = 0x44;
}
void Oscillator_Init()
{
int i = 0;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
}
void Interrupts_Init()
{
IE = 0x80;
EIE2 = 0x40;
EIE1 = 0x02;
}
void SMBus_Init()
{
SFRPAGE = SMB0_PAGE;
SMB0CN = 0x40;
SMB0CR = 0x99;
}
void EMIF_Init (void)
{
char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
SFRPAGE = EMI0_PAGE; // Save SFR_PAGE
EMI0CF = 0x3F; // upper ports; non-muxed mode;
// split mode w/o bank select
// EMI0TC = 0x45; // timing (7-cycle MOVX)
SFRPAGE = CONFIG_PAGE;
P4MDOUT |= 0xFF; // all EMIF pins configured as
P5MDOUT |= 0xFF; // push-pull
P6MDOUT |= 0xFF;
P7MDOUT |= 0xFF;
SFRPAGE = SFRPAGE_SAVE; // restore SFR_PAGE
}
void Init_Device(void)
{
Timer_Init();
Port_IO_Init();
Oscillator_Init();
Interrupts_Init();
SMBus_Init();
EMIF_Init ();
}
//=======================================================
void smbus_cfg(uchar smb0adr)
{
SFRPAGE=0x00;
SMB0ADR=smb0adr;
}
void smbusMasterStart()
{
k=0;
SFRPAGE=0x00;
STA=1;
}
//=========================================================
//=======================================================
main()
{
WDTCN = 0x07; //看门狗禁止
WDTCN = 0xDE;
WDTCN = 0xAD;
EA=1;
Init_Device();
smbus_cfg(0x70);
smbusMasterStart();
// init_rtc();
for(i=0;i<60000;i++)
{ for(i=0;i<60000;i++);}
for(i=0;i<60000;i++)
{ for(i=0;i<60000;i++);}
a[0]=0x1b;
a[1]=0x20;
a[2]=0x99;
a[3]=0x1b;
a[4]=0x24;
/* AD16=1;AD17=1;AD18=1;
for(i=0;i<30000;i++);
XBYTE[0xF8FF]=0x40;
read_ptr=0xF8FF;//XRAM_START_ADD;1020-1029
for(i=5;i<13;i++)
{
a[i]=*read_ptr;
read_ptr=read_ptr+0x0100;
}
XBYTE[0xF8FF]=0;*/
disp_rtc();
SFRPAGE=0x01;
SBUF1=a[0];
while(1);
}
//===============================================
void uart1_ISR() interrupt 20
{
if(RI1){
res[t]=SBUF1;//将接收数据写入res[]数组
t++;
RI1=0;
}
if(TI1){
t++;
if(t<13){
SBUF1=a[t];//发送数据数组为aa[]
}
TI1=0;
}
}
//======================================================
void smbusInt() interrupt 7
{
SFRPAGE=0x00;
if(SMB0STA==0x08)
{
SMB0DAT=0x70;
k=1;
STA=0;
}
if(SMB0STA==0x28||SMB0STA==0x18)
{
if(k>=2)
STO=1;
if(k==1)
SMB0DAT=0x00;
k++;
}
if(SMB0STA==0x10)
{
SMB0DAT=0x6e;
STA=0;
}
SI=0;
}
//========================================================
/*void init_rtc()
{
AD16 = AD17 = AD18 = 1;
XBYTE[0xf8ff] = 0xA0;
XBYTE[0xf9ff] = 0x00;//0x00; second
XBYTE[0xfaff] = 0x52;//0x01; minute
XBYTE[0xfbff] = 0x17;//0x02; hour
XBYTE[0xfcff] = 0x05;//0x06; day
XBYTE[0xfdff] = 0x19;//0x07; date
XBYTE[0xfeff] = 0x05;//0x07; month
XBYTE[0xffff] = 0x06;//0x06; year
XBYTE[0xfff8] = 0x20;
}*/
void disp_rtc()
{
AD16 = AD17 = AD18 = 1;
XBYTE[0xf8ff] = (0x40||XBYTE[0xf8ff]);
a[5] = XBYTE[0xf9ff];
a[6] = XBYTE[0xfaff];
a[7] = XBYTE[0xfbff];
a[8] = (XBYTE[0xfcff]&0x07);
a[9] = XBYTE[0xfdff];
a[10] = XBYTE[0xfeff];
a[11] = XBYTE[0xffff];
a[12] = XBYTE[0xf8ff];
XBYTE[0xf8ff] = 0;
}
//===========================================================
/*
uchar p=0x41,m=0x61;
AD16=1;AD17=0;AD18=0;
for(i=0;i<30000;i++);
read_ptr=XBYTE[0x1010];//XRAM_START_ADD;
for(i=0;i<10;i++)
{
*read_ptr=p;
read_ptr++;
p=p+1;
}
AD16=1;AD17=1;AD18=0;
for(i=0;i<30000;i++);
read_ptr=XBYTE[0x1010];//XRAM_START_ADD;
for(i=0;i<10;i++)
{
*read_ptr=m;
read_ptr++;
m=m+1;
}
AD16=1;AD17=1;AD18=0;
for(i=0;i<30000;i++);
read_ptr=XBYTE[0x1010];//XRAM_START_ADD;1020-1029
for(i=5;i<15;i++)
{
a[i]=*read_ptr;
read_ptr++;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -