📄 main.c
字号:
#include <C8051F120.h>
#include <RealTime.h>
#include <Delay.h>
#include <BC7281.h>
#include <LCD.h>
#include <absacc.h>
#include <string.h>
BYTE idata rd[10];
BYTE idata value[3];
BYTE idata r,s;
void Oscillator_Init()
{
char SFRPAGE_SAVE=SFRPAGE;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67;
Delay_ms(2);
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
OSCICN = 0x00;
SFRPAGE = SFRPAGE_SAVE;
}
void Port_Init()
{
char SFRPAGE_SAVE=SFRPAGE;
SFRPAGE = CONFIG_PAGE;
XBR0=0x07;
XBR1=0x00;
XBR2=0x00;
P0MDOUT=0xFF;
//P0=0x00;
P1MDOUT=0xFF;
//P1MDIN=0xFF;
//P1=0x00;
P2MDOUT=0xFF;
//P2=0x00;
P3MDOUT=0xFF;
//P3=0x00;
P4MDOUT=0xFF;
//P4=0x00;
P5MDOUT=0xff;
//P5=0x00;
P6MDOUT=0xFF;
//P6=0x00;
P7MDOUT=0xFF;
//P7=0x00;
XBR2=XBR2 | 0x40; //打开交叉开关
SFRPAGE = SFRPAGE_SAVE;
}
void EMI_Init()
{
char SFRPAGE_SAVE=SFRPAGE;
SFRPAGE = EMI0_PAGE;
EMI0CF=0X2B;
EMI0TC=0xE7;
//EMI0CN=0x10;
SFRPAGE = EMI0_PAGE;
SFRPAGE = SFRPAGE_SAVE;
}
void DisableWD()
{
EA=0;
WDTCN=0xDE;
WDTCN=0xAD;
EA=1;
}
void EnableWD()
{
EA=0;
WDTCN=0xA5;
EA=1;
}
void IntToStr(BYTE t)
{
BYTE idata a[3];
BYTE idata i,length;
BYTE idata x=0;
x=t;
t=(t>>4)*6;
t=x-t;
x=t;
for(i=0;i<2;i++)
{
value[i]=' ';
}
i=0;
while(t/10) //将计数值转换为数码管段码值
{
a[i]=t%10;
t=t/10;
i++;
}
a[i]=t;
length=i+1;
for(i=0; i<length; i++) //转成ASCII码
{
if(x<10)
{
value[i]='0';
value[i+1]=a[length-i-1]+'0';
}
else
{value[i]=a[length-i-1]+'0';}
}
}
void main(void)
{
char SFRPAGE_SAVE=SFRPAGE;
SFRPAGE = SMB0_PAGE;
Oscillator_Init();
Port_Init();
//P2=0x00;
//P2=0xFF;
DisableWD();
EMI_Init();
Init_LCD();
Clear_Screen();
Display_Image(10,1);
Display_String(5,5,"HEP-C8051F120");
Display_hz(18,5,"实验平台");
Display_String(8,6,"2008");
Display_hz(12,6,"年");
Display_hz(16,6,"月");
Display_hz(20,6,"日");
Display_String(14,7,":");
SMB0_Init();
EA=1;
SI=0;
//PCF8563_TimeInit();
Set7281(0x12,0x80);
Set7281(0x10,0xDB);
Set7281(0x11,0xA0);
Set7281(0x05,0xBF);
//Set7281(0x02,0xBF);
while(1)
{
SMB0_ReadPCF8563(rd,0,9);
//Write7281(1,rd[2]&0x0F);
//Write7281(2,(rd[2]&0xF0)/16);
Delay_ms(50);
Write7281(4,rd[3]&0x0F);
Delay_ms(50);
Write7281(5,(rd[3]&0xF0)/16);
Delay_ms(50);
Write7281(7,rd[4]&0x0F);
Delay_ms(50);
Write7281(8,(rd[4]&0xF0)/16);
Delay_ms(50);
IntToStr(rd[7]);
Display_String(14,6,value);
Delay_ms(50);
IntToStr(rd[5]);
Display_String(18,6,value);
Delay_ms(50);
IntToStr(rd[4]);
Display_String(12,7,value);
Delay_ms(50);
IntToStr(rd[3]);
Display_String(15,7,value);
Delay_ms(50);
XBYTE[0x57FF]=0xFE;
Delay_ms(300);
XBYTE[0x57FF]=0xFD;
Delay_ms(300);
XBYTE[0x57FF]=0xFB;
Delay_ms(300);
XBYTE[0x57FF]=0xF7;
Delay_ms(300);
XBYTE[0x57FF]=0xEF;
Delay_ms(300);
XBYTE[0x57FF]=0xDF;
Delay_ms(300);
XBYTE[0x57FF]=0xBF;
Delay_ms(300);
XBYTE[0x57FF]=0x7F;
Delay_ms(300);
XBYTE[0x5FFF]=0xFE;
Delay_ms(300);
XBYTE[0x5FFF]=0xFD;
Delay_ms(300);
XBYTE[0x5FFF]=0xFB;
Delay_ms(300);
XBYTE[0x5FFF]=0xF7;
Delay_ms(300);
XBYTE[0x5FFF]=0xEF;
Delay_ms(300);
XBYTE[0x5FFF]=0xDF;
Delay_ms(300);
XBYTE[0x5FFF]=0xBF;
Delay_ms(300);
XBYTE[0x57FF]=0x00;
Delay_ms(300);
XBYTE[0x5FFF]=0x00;
Delay_ms(500);
}
//rd=GetKey();
SFRPAGE = SFRPAGE_SAVE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -