?? 70f62c8dd23e001b1b6fb5133c737a2a
字號:
#include <io.h>
#include "system.h"
int main(void)
{
int a;
//初始化
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));//讀狀態位
/*IOWR(SPI_0_BASE,1,0x60f);
IOWR(SPI_0_BASE,1,(0x804));
IOWR(SPI_0_BASE,1,(0x903));
IOWR(SPI_0_BASE,1,(0x0a02));
IOWR(SPI_0_BASE,1,(0x0b01));
IOWR(SPI_0_BASE,1,0x300);
IOWR(SPI_0_BASE,1,0x302);*///*
int year=0x2006,mon=0x12,day=0x30,hou=0x23,min=0x59,sec=0x35,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);
a=IORD(SPI_0_BASE,0);
//while(!IORD(SPI_0_BASE,0))
if(!IORD(SPI_0_BASE,0))
{
IOWR(SPI_0_BASE,1,0x700);
IOWR(SPI_0_BASE,1,0x000);//讀取按鍵
a=IORD(SPI_0_BASE,0);
//break;
}
//按鍵程序
if(IORD(SPI_0_BASE,0)-0xfc6==0) //58 // 年份鍵(C)
flg=1;
if(IORD(SPI_0_BASE,0)-0xfe6==0) //59 // 月日鍵(D)
flg=2;
if(IORD(SPI_0_BASE,0)-0xfd6==0) //5a // 時分鍵(E)
flg=3;
if(IORD(SPI_0_BASE,0)-0xff6==0) //5b // 分秒鍵(F)
flg=4;
//顯示程序
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))+0x80);
IOWR(SPI_0_BASE,1,(0x0b00+((min&0xf0)>>4)));
break;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -