📄 i2test time disp.c
字号:
#include "config.h"
#define ZLG7290 0x70
#define BEEPCON 1<<7
uint8 rcv_buf[100];
uint8 data_buf[100];
volatile uint8 rcv_flag;
volatile uint8 time_flag;
uint32 num=0;
uint8 i,j,k,l,m,n,sec,min,hour;
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
/*******************************************************/
//
//
/*******************************************************/
void __irq IRQ_UART0(void)
{
uint8 i = 0;
switch(U0IIR&0x0f)
{
case 0x06:
break;
case 0x04:
for(i=0; i<8; i++)
{ rcv_buf[num++] = U0RBR;};
rcv_flag = 1;
break;
case 0x0c:
while((U0LSR&0x01)==1)
{
rcv_buf[num++] = U0RBR;
}
rcv_flag = 1;
break;
case 0x02:
break;
default:
break;
}
VICVectAddr = 0x00;
}
void __irq IRQ_Time1(void)
{
i++;
{
if(i>9)
{
i=0;
j++;
}
if(j>5)
{
j=0;
k++;
}
if(k>9)
{
k=0;
l++;
}
if(l>5)
{
l=0;
m++;
}
if(n==0|n==1)
{
if(m>9)
{
m=0;
n++;
}
}
if(n==2)
{
if(m>3)
{
m=0;
n=0;
while(i==j==k==l==m==n==0)
{
IO0CLR=BEEPCON;
DelayNS(5);
IO0SET=BEEPCON;
}
}
}
}
time_flag=1;
T1IR=0x01;
VICVectAddr=0x00;
}
/*******************************************************/
//
//
/*******************************************************/
void SendByte(uint8 data)
{
U0THR=data;
}
void ISendBuf(void)
{
uint8 i;
for(i=0;i<8;i++)
SendByte(data_buf[i]);
while((U0LSR&0x40)==0);
}
/*******************************************************/
//
//
/*******************************************************/
void UART0_Ini(uint32 baud)
{
uint32 bak;
U0LCR=0x83;
bak=(Fpclk>>4)/baud;
U0DLM=bak>>8;
U0DLL=bak&0xff;
U0LCR=0x03;
U0FCR=0x81;
U0IER=0x03;
VICIntSelect=0x00000000;
VICVectCntl0=0x26;
VICVectAddr0=(int)IRQ_UART0;
VICIntEnable=0x00000040;
}
void I2C_Init(uint32 fi2c)
{
if(fi2c>400000)
fi2c=400000;
I2SCLH=((Fpclk/fi2c+1)/2);
I2SCLL=((Fpclk/fi2c)/2);
I2CONCLR=0x2c;
I2CONSET=0x40;
VICIntSelect=0x00000000;
VICVectCntl1=0x29;
VICVectAddr1=(int)IRQ_I2C;
VICIntEnable=0x0200;
}
void Time1Init(void)
{
T1PR=99;
T1MCR=0x03;
T1MR0=110592;
T1TCR=0x03;
T1TCR=0x01;
VICIntSelect=0x00;
VICVectCntl2=0x25;
VICVectAddr2=(uint32)IRQ_Time1;
VICIntEnable=0x00000020;
}
/*******************************************************/
//
//
/*******************************************************/
void Modify_Time(void)
{
i=(rcv_buf[7] - 48);
j=(rcv_buf[6] - 48);
k=(rcv_buf[4] - 48);
l=(rcv_buf[3] - 48);
m=(rcv_buf[1] - 48);
n=(rcv_buf[0] - 48);
}
void disp_Time()
{
data_buf[0]=i;
data_buf[1]=j;
data_buf[2]=0x1f;
data_buf[3]=k;
data_buf[4]=l;
data_buf[5]=0x1f;
data_buf[6]=m;
data_buf[7]=n;
ZLG7290_SendBuf(data_buf,8);
}
/*******************************************************/
//
//
/*******************************************************/
int main(void)
{
PINSEL0=0x00000055;
IO0DIR=BEEPCON;
IO0SET=BEEPCON;
rcv_flag =0;
time_flag=0;
Time1Init();
I2C_Init(100000);
UART0_Ini(115200);
while(rcv_flag==0);
Modify_Time();
disp_Time();
while(1)
{
if(time_flag==1)
{
time_flag=0;
disp_Time();
}
if(rcv_flag==1)
{
rcv_flag=0;
Modify_Time();
disp_Time();
}
ISendBuf();
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -