📄 12c887测试(已成功).c
字号:
#include <AT89X52.H>
#include <INTRINS.h>
unsigned char code Tab[]={0xff,0Xfd,0xff,0xfe,0xff,0xf7,0xff,0xfb,0xff,0xdf,0xff,0xef,0xff,0x7f,0xff,0xbf,
0Xfd,0xff,0xfe,0xff,0xf7,0xff,0xfb,0xff,0xdf,0xff,0xef,0xff,0x7f,0xff,0xbf,0xff};
unsigned char code codedisplay[]={0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"0",0*/
0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,/*"1",1*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,/*"2",2*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"3",3*/
0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,/*"4",4*/
0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"5",5*/
0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6",6*/
0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,/*"7",7*/
0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8",8*/
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,/*"9",9*/
0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF};//':'
unsigned char time_out[20]={0,7,0,2,0,5,0,2,0,7,1,2,3,0,0,0,0,0,0,0};
unsigned char time_in[10]={7,11,23,5,7,12,30,36,0,0};//07年11月23日星期五7点30分0秒(闹铃时间)12点36分0秒
unsigned char m,warming,i,read;
bit sign1=0,sign2=1;unsigned char c;
unsigned int result,count=0;
void delay(void)
{ unsigned char k,j;
for(k=0;k<15;k++){ for(j=0;j<50;j++) ; }
}
unsigned char xdata *control;
unsigned char displaycount,x;
unsigned char displaybuf[8]={0,0,0,0,0,0,0,0};
unsigned char timecount;
//时钟芯片中断处理子程序
void intt0(void) interrupt 0 using 1
{ sign2=!sign2;
control=0x7f00;
for(i=9;i>0;i--)
{ read=*control;control++;
time_out[2*i+1]=read%10; time_out[2*i]=read/10;}
control=0x7f0c;
warming=*control;if((warming&0x20)!=0) ; //闹铃处理
}
void main(void)
{ SCON=0; P1=0; IT0=0;EX0=1;EA=1;
//时钟芯片初始化
control=0x7f0b; *control=0XBE; //B寄存器中的SET位置1,禁止芯片内部的更新周期
control=0x7f00;
for(i=9;i>0;i--)
{ *control=time_in[i];control++; }
control=0x7f0a;
*control=0x2f;
control=0x7f0c;
warming=*control; control--;
*control=0x3E; //初始化B寄存器,芯片开始正常工作
while(1)
{
for(m=0;m<16;m++)
{ SBUF=codedisplay[time_out[10]*16+m]; while(!TI) ; TI=0;
SBUF=codedisplay[time_out[11]*16+m]; while(!TI) ; TI=0;
SBUF=codedisplay[10*16+m]; while(!TI) ; TI=0;
SBUF=codedisplay[time_out[14]*16+m]; while(!TI) ; TI=0;
SBUF=codedisplay[time_out[15]*16+m]; while(!TI) ; TI=0;
SBUF=codedisplay[10*16+m]; while(!TI) ; TI=0;
SBUF=codedisplay[time_out[18]*16+m]; while(!TI) ; TI=0;
SBUF=codedisplay[time_out[19]*16+m]; while(!TI) ; TI=0;
//P2_0=0;P2_1=0;P2_1=1;P2_1=0;P2_0=1;
SBUF=Tab[2*m]; while(!TI) ; TI=0;
SBUF=Tab[2*m+1];while(!TI) ; TI=0;
P3_4=0;P3_4=1; P3_4=0;
delay();count++;
if(count==350)
{ count=0;
P1_5=!P1_5;P1_2=!P1_2;}
}} }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -