?? note2.c
字號:
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define MCA XBYTE[0XFF0A]
#define MCB XBYTE[0XFF0B]
#define MCC XBYTE[0XFF0C]
#define MCD XBYTE[0XFF0D]
sbit CS=P2^7;
sbit WR=P3^6;
sbit RD=P3^7;
char xdata *dis=0xFF00; //寄存器首地址
char code dis_7[10]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x08,0x09}; //0~9
char disp[12]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //送入數碼顯示的數據
char stat1[12]; // 處理后的數據
char stat[6]; //初始化時鐘數據
char at[6]={0,2,4,7,8,9}; //時鐘寄存器
void delay(unsigned int t) //1ms的延時子程序
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
void start(void) //程序初始化
{
//char i;
MCA=0X20; //開啟振動
MCB=0X72; //設置DS12887工作狀態
SCON=0X00;
CS=0; //片選DS12887
WR=1;
RD=0;
}
void wrCM() //寫函數
{
char i;
MCB=0x80; //芯片停止工作,準備初始化
for(i=0;i<6;i++) //初始化時鐘
*(dis+at[i])=stat[i];
MCB=MCB&0X7F;
}
void rCM() //讀函數
{
char i;
while(MCA&0x80==0x80); //等待時間準備更新完畢
for(i=0;i<6;i++) //更新時間
stat[i]=*(dis+at[i]);
}
test() //數據處理函數
{
char i;
stat1[1]=stat[0]>>4;
stat1[0]=stat[0]&0x0f;
stat1[3]=stat[1]>>4;
stat1[2]=stat[1]&0x0f;
stat1[5]=stat[2]>>4;
stat1[4]=stat[2]&0x0f;
stat1[7]=stat[3]>>4;
stat1[6]=stat[3]&0x0f;
stat1[9]=stat[4]>>4;
stat1[8]=stat[4]&0x0f;
stat1[11]=stat[5]>>4;
stat1[10]=stat[5]&0x0f;
for(i=0;i<12;i++)
{
disp[i]=dis_7[stat1[i]];
}
}
scan() //顯示函數
{
char i;
for(i=0;i<6;i++)
{
SBUF=disp[i];
while(!TI);
TI=0;
}
delay(5);
}
main() //主函數!
{
start(); //初始化
wrCM() ; //寫入初始時間數據
rCM(); //讀出更新時間
test(); //數據處理
scan(); //送入數碼管顯示
while(1)
{
rCM(); //讀出更新時間
test(); //數據處理
scan(); //送入數碼管顯示
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -