📄 10fe3eaa6c41001b18b1e5c96de21705
字号:
#include <io.h>
#include "system.h"
int main(void)
{
int i=0,j=0,k=0;
int key[10]={0xfc0,0xfe0,0xfd0,0xff0,0xfc4,0xfe4,0xfd4,0xff4,0xfc2,0xfe2,0xfd2,0xff2,0xfc6,0xfe6,0xfd6,0xff6};
int buf[10]={0,0,0,0,0,0,0,0,0,0};
IOWR(SPI_0_BASE,1,0x201);//CH452内部复位
while(!(IORD(SPI_0_BASE,2)&0x40));//读状态位
IOWR(SPI_0_BASE,1,0x413);//设置452系统参数
while(!(IORD(SPI_0_BASE,2)&0x0040));//读状态位
IOWR(SPI_0_BASE,1,0x5c0);//设置CH452显示参数,BCD译码方式,扫描极限4
while(!(IORD(SPI_0_BASE,2)&0x40));//读状态位
int year=0x2006,mon=1,day=1,hou=1,min=0,sec=0,hse=0,flg=4; // 定时器变量
IOWR(TIMER_0_BASE,1,6); // 启动定时器
while(1)
{
//定时器程序
if(IORD(TIMER_0_BASE,0)&1) // 500ms定时时间到
{
if(++hse==2) // 1秒钟时间到
{
hse=0;++sec; // 秒加1
if((sec&0xf)==0xa)
sec+=6; // 二-十进制调整
if(sec>=0x60) // 1分钟时间到
{
sec=0;++min; // 分加1
if((min&0xf)==0xa)
min+=6; // 二-十进制调整
if(min>=0x60) // 1小时时间到
{
min=0;++hou; // 时加1
if((hou&0xf)==0xa)
hou+=6; // 二-十进制调整
if(hou>=0x24) // 1日时间到
{
hou=0;++day; // 日加1
if((day&0xf)==0xa)
day+=6; // 二-十进制调整
if(day>=0x31) // 1月时间到
{
day=1;++mon; // 月加1
if((mon&0xf)==0xa)
mon+=6; // 二-十进制调整
if(mon>=0x13) // 1年时间到
mon=1;
++year;
}
}
}
}
}
IOWR(TIMER_0_BASE,0,0); // 清除时间到标志
}
IOWR(SPI_0_BASE,1,0x000);
i=IORD(SPI_0_BASE,0);
while(!IORD(SPI_0_BASE,0))
{
IOWR(SPI_0_BASE,1,0x700);
IOWR(SPI_0_BASE,1,0x000);//读取按键
i=IORD(SPI_0_BASE,0);
break;
}
//按键程序
for(k=0;k<16;k++)
{
if(IORD(SPI_0_BASE,0)==key[k])
{ flg=k;
if(k<10)
{flg=0;
buf[j++]=k;
}
break;
}
}
switch(flg)
{
case 0:
{
flg=4;
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,0x800+k);
break;
}
case 10:
{ flg=4;
IOWR(SPI_0_BASE,1,0x302);
break;
}
/* case 11:
{ flg=4;
mon=(buf[0])*16+buf[1];
day=(buf[2])*16+buf[3];
hou=(buf[4])*16+buf[5];
min=(buf[6])*16+buf[7];
sec=(buf[8])*16+buf[9];
break;
}*/
case 12:
{
IOWR(SPI_0_BASE,1,(0x800+(year&0x000f)));
IOWR(SPI_0_BASE,1,(0x900+((year&0x00f0)>>4)));
IOWR(SPI_0_BASE,1,(0x0a00+((year&0x0f00)>>8)));
IOWR(SPI_0_BASE,1,(0x0b00+((year&0xf000)>>12)));
break;
}
case 13: // 显示月日
{
IOWR(SPI_0_BASE,1,(0x800+(day&0x0f)));
IOWR(SPI_0_BASE,1,(0x900+((day&0xf0)>>4)));
IOWR(SPI_0_BASE,1,(0x0a00+(mon&0x0f))+0x80);
IOWR(SPI_0_BASE,1,(0x0b00+((mon&0xf0)>>4)));
break;
}
case 14: // 显示时分
{
IOWR(SPI_0_BASE,1,(0x800+(min&0x0f)));
IOWR(SPI_0_BASE,1,(0x900+((min&0xf0)>>4)));
IOWR(SPI_0_BASE,1,(0x0a00+(hou&0x0f))+(hse<<7));
IOWR(SPI_0_BASE,1,(0x0b00+((hou&0xf0)>>4)));
break;
}
case 15: // 显示分秒
{
IOWR(SPI_0_BASE,1,(0x800+(sec&0x0f)));
IOWR(SPI_0_BASE,1,(0x900+((sec&0xf0)>>4)));
IOWR(SPI_0_BASE,1,(0x0a00+(min&0x0f))+(hse<<7));
IOWR(SPI_0_BASE,1,(0x0b00+((min&0xf0)>>4)));
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -