?? c096041ca83f001b19ae8cd3dda9ff5e
字號:
#include <io.h>
#include "system.h"
int main(void)
{
IOWR(SPI_0_BASE,1,0x201);
while(1)
{
if((IORD(SPI_0_BASE,2))&0x40)
{IOWR(SPI_0_BASE,1,0x413);
break;
}
}
while(1)
{
if((IORD(SPI_0_BASE,2))&0x0040)
{
IOWR(SPI_0_BASE,1,0x5C0);
break;
}
}
int mon=1,day=1,hou=0,min=0,sec=0,hse=0,flg=0,i; // 定時器變量
IOWR(SPI_0_BASE,1,(0x800));
IOWR(SPI_0_BASE,1,(0x900));
IOWR(SPI_0_BASE,1,(0x0a00));
IOWR(SPI_0_BASE,1,(0x0b00));
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; // 二-十進制調(diào)整
if(sec>=0x60) // 1分鐘時間到
{
sec=0;++min; // 分加1
if((min&0xf)==0xa)
min+=6; // 二-十進制調(diào)整
if(min>=0x60) // 1小時時間到
{
min=0;++hou; // 時加1
if((hou&0xf)==0xa)
hou+=6; // 二-十進制調(diào)整
if(hou>=0x24) // 1日時間到
{
hou=0;++day; // 日加1
if((day&0xf)==0xa)
day+=6; // 二-十進制調(diào)整
if(day>=0x31) // 1月時間到
{
day=1;++mon; // 月加1
if((mon&0xf)==0xa)
mon+=6; // 二-十進制調(diào)整
if(mon>=0x13) // 1年時間到
mon=1;
}
}
}
}
}
IOWR(TIMER_0_BASE,0,0); // 清除時間到標志
}
while(1)
{
IOWR(SPI_0_BASE,1,0x700);
IOWR(SPI_0_BASE,1,0);
i=IORD(SPI_0_BASE,0);
break;
}
if(IORD(SPI_0_BASE,0)-0xfc0==0) // 1
flg=0;
if(IORD(SPI_0_BASE,0)-0xfe0==0) // 2
flg=1;
if(IORD(SPI_0_BASE,0)-0xfd0==0) // 3
flg=2;
if(IORD(SPI_0_BASE,0)-0xff0==0) // 4
flg=3;
if(IORD(SPI_0_BASE,0)-0xfc4==0) // 5
flg=4;
if(IORD(SPI_0_BASE,0)-0xfe4==0) // 6
flg=5;
if(IORD(SPI_0_BASE,0)-0xfd4==0) // 7
flg=6;
if(IORD(SPI_0_BASE,0)-0xff4==0) // 8
flg=7;
if(IORD(SPI_0_BASE,0)-0xfc2==0) // 9
flg=8;
if(IORD(SPI_0_BASE,0)-0xfe2==0) // 0
flg=9;
if(IORD(SPI_0_BASE,0)-0xfd2==0) // 復(fù)位鍵(A)
flg=10;
if(i-0xfd6==0) // 月日鍵(C)
flg=12;
if(i-0xfe6==0) // 時分鍵(D)
flg=13;
if(i-0xfc6==0) // 分秒鍵(E)
flg=14;
switch(flg)
{
case 0:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 1:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 2:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 3:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 4:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 5:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 6:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 7:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 8:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 9:
{
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,(0x800+(flg)));
break;
}
case 10:
{
IOWR(SPI_0_BASE,1,0x302);
break;
}
case 12: // 顯示月日
{
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)+0x80));//顯示分個位
IOWR(SPI_0_BASE,1,(0x0b00+((min&0xf0)>>4)));//顯示分十位
break;
}
case 13: // 顯示時分
{
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 14: // 顯示分秒
{
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;
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -