📄 anjian.c
字号:
#include<reg51.h>
#include <absacc.h>
#include<intrins.h>
#include<math.h>
#define CON_8279 XBYTE [0x5fff]
#define DAT_8279 XBYTE [0x5eff]
sbit clflag=ACC^7;
sbit sw=P1^0;
sbit set=P1^1;
sbit up=P1^2;
sbit down=P1^3;
sbit ok=P1^4;
sbit next=P1^5;
unsigned char data disgram[6]={0x00,0x01,0x02,0x03,0x04,0x05};
unsigned char data pregram[18]={0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char data temp,time,hour,minute;
bit now;
/******************ms延时程序*****************/
void delayms(unsigned int dt)
{
register unsigned char bt;
for(;dt>0;dt--)
for(bt=250;bt>0;bt--);
}
//
//
//
void disp_initial()
{
CON_8279=0xDC;
do {ACC=CON_8279;}
while (clflag==1);
CON_8279=0x00;
CON_8279=0x34;
}
/******************显示函数*****************/
void display(void)
{
unsigned char code table[18]={0xc0,0xf9,0xa4,0xb0,0x99,\
0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,\
0xbf,0xff};
unsigned char i;
for(i=0;i<6;i++)
{ CON_8279=i+0x92;
DAT_8279=table[disgram[i]];
delayms(i);
}
}
/******************一位按键函数*****************/
void abc(void)
{
unsigned char bt,dt;
for(bt=0;bt<6;bt++)
{
do
{
if(up==0)
{
delayms(2);
disgram[bt]++;
for(dt=0;dt<8;dt++)
display();
}
else if(down==0)
{
delayms(2);
disgram[bt]--;
for(dt=0;dt<8;dt++)
display();
}
}while(ok==1);
}
display();
}
//
//
/******************按键扫描函数*****************/
unsigned char keyscan(void)
{
unsigned char bt,k=0,ch;
if(set==0)
{
delayms(2);
if(ok==0)
{
delayms(2);
do{
delayms(2);
abc();
for(bt=0;bt<6;bt++,k++)
{
pregram[k]=disgram[bt];
display();
}
}while(next==0);
hour=pregram[0]*10+pregram[1];
minute=pregram[2]*10+pregram[3];
temp=pregram[4]*10+pregram[5];
time=3;
now=0;
return(1);
}
else
{
abc();
for(bt=0;bt<8;bt++) display();
return(2);
}
}
else if(sw==0)
{
delayms(20);
sw=1;
while(sw==0) display();
ch=IE;
IE=0x00;
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
disgram[0]=0x10;
disgram[1]=0x10;
disgram[2]=0x10;
disgram[3]=0x10;
disgram[4]=0x10;
disgram[5]=0x10;
display();
while(1)
{
while(sw) display();
delayms(20);
if(sw==0) break;
}
while(sw==0) display();
IE=ch;
return(0);
}
else if(ok==0)
{
delayms(20);
abc();
for(bt=0;bt<7;bt++) display();
now=1;
hour=disgram[0]*10+disgram[1];
minute=disgram[2]*10+disgram[3];
temp=disgram[4]*10+disgram[5];
return(3);
}
else return(0);
}
//
//
void main(void)
{disp_initial();
display();
while(1)
{
keyscan();
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -