📄 f01e4975e93e001b1122f9ec2b17c8c1
字号:
#include <io.h>
#include "system.h"
int main(void)
{
int i,j;
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=0; // 定时器变量
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;
}
//按键程序
if(IORD(SPI_0_BASE,0)-0xfc6==0) // 年份键(C)
flg=1;
if(IORD(SPI_0_BASE,0)-0xfe6==0) // 月日键(D)
flg=2;
if(IORD(SPI_0_BASE,0)-0xfd6==0) // 时分键(E)
flg=3;
if(IORD(SPI_0_BASE,0)-0xff6==0) // 分秒键(F)
flg=4;
if(IORD(SPI_0_BASE,0)-0xfc0==0) // 1
flg=5;
if(IORD(SPI_0_BASE,0)-0xfe0==0) // 2
flg=6;
if(IORD(SPI_0_BASE,0)-0xfd0==0) // 3
flg=7;
if(IORD(SPI_0_BASE,0)-0xff0==0) // 4
flg=8;
if(IORD(SPI_0_BASE,0)-0xfc4==0) // 5
flg=9;
if(IORD(SPI_0_BASE,0)-0xfe4==0) // 6
flg=10;
if(IORD(SPI_0_BASE,0)-0xfd4==0) // 7
flg=11;
if(IORD(SPI_0_BASE,0)-0xff4==0) // 8
flg=12;
if(IORD(SPI_0_BASE,0)-0xfc2==0) // 9
flg=13;
if(IORD(SPI_0_BASE,0)-0xfe2==0) // 0
flg=14;
if(IORD(SPI_0_BASE,0)-0xfd2==0) // 复位键(A)
flg=15;
//显示程序
switch(flg)
{
case 1: // 显示月日
{
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 2: // 显示月日
{
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 3: // 显示时分
{
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 4: // 显示分秒
{
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;
}
case 5:
{
IOWR(SPI_0_BASE,1,0x800);
j==0;
break;
}
case 6:
{
IOWR(SPI_0_BASE,1,0x801);
j==1;
break;
}
case 7:
{
IOWR(SPI_0_BASE,1,0x802);
j==2;
break;
}
case 8:
{
IOWR(SPI_0_BASE,1,0x803);
j==3;
break;
}
case 9:
{
IOWR(SPI_0_BASE,1,0x804);
j==4;
break;
}
case 10:
{
IOWR(SPI_0_BASE,1,0x805);
j==5 ;
break;
}
case 11:
{
IOWR(SPI_0_BASE,1,0x806);
j==6;
break;
}
case 12:
{
IOWR(SPI_0_BASE,1,0x807);
j==7;
break;
}
case 13:
{
IOWR(SPI_0_BASE,1,0x808);
j==8;
break;
}
case 14:
{
IOWR(SPI_0_BASE,1,0x809);
j==9;
break;
}
case 15:
{
year=0x2006,mon=1,day=1,hou=0,min=0,sec=0,hse=0;
IOWR(SPI_0_BASE,1,0x800);
IOWR(SPI_0_BASE,1,0x900);
IOWR(SPI_0_BASE,1,0x0a00);
IOWR(SPI_0_BASE,1,0x0b00);
break;
}
}
IOWR(SPI_0_BASE,1,(0x800+j)<<8);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -