📄 main.txt
字号:
#include "include.h"
#include "ds12887.h"
#include "p8255.h"
#define close 0xff//关闭所有时间位
#define sec_ge_open 0xdf//显示秒个位
#define sec_shi_open 0xef//显示秒十位
#define min_ge_open 0xf7//显示分个位
#define min_shi_open 0xfb//显示分十位
#define ho_ge_open 0xfd//显示时个位
#define ho_shi_open 0xfe//显示时十位
uchar data bit_choose;//记录调时位选
uchar data bit_change;//记录调时设置值
uchar code d2q[]={0x7b,0X30,0Xea,0Xf8,0Xb1,0Xd9,0XDB,0X70,0Xfb,0Xf9};//十进制转换为七段码
uchar data sec;
uchar data min;
uchar data ho;
uchar data day;
uchar data date;
uchar data month;
uchar data year;
uchar data thl1;//定时器1初值
void delay(uchar data x);
void I0_timechange(void);//调时位选
void T1_sec_end(void);//定时50ms,中断响应读时间
void T0_timechange(void);//调时值设置
void display(); //显示时间
uchar BCD2BIN(uchar data BCD);
uchar BIN2BCD(uchar data BIN);
main()
{ P8255Con=0x80;//A口方式0输出,B口方式0输出
P8255Con=0x80;
TMOD=0X16;//0001 0110,定时器0采用外部计数方式2,定时器1采用定时方式1
// TH0=0xfe;
// TL0=0XFE;//定时初值,定时器0计1满
thl1=15536;//定时器1定时50ms
IT0=1;//INT0中断采用下降沿
IT1=1;//INT1中断采用下降沿
//EX0=1;//外部中断0允许
// EX1=1;//外部中断1允许
// ET0=1;//定时中断0允许
ET1=1;//定时中断1允许
EA=1;//总中断允许
// PT0=0;
// PT1=1;
// PX0=0;
// PX1=0;
TR0=1;//开启定时器0
TR1=1;
while(1)
{
display();//显示
}
}
void I0_timechange(void) interrupt 0 using 1//调时位选
{
}
void T1_sec_end(void) interrupt 3 using 3//
{ thl1=15536;//重新赋初值
sec=Getseconds();
min=GetMinutes();
ho=GetHours();
day=GetDay();
date=GetDate();
month=GetMonth();
year=GetYear();
sec=BCD2BIN(sec);
min= BCD2BIN(min);
ho= BCD2BIN(ho);
day= BCD2BIN(day);
}
void T0_timechange(void) interrupt 1 using 2//调时值设置
{
}
void display() //显示时间
{
uchar data ho_shi,ho_ge,min_shi,min_ge,sec_shi,sec_ge;
ho_shi=ho/10;
ho_ge=ho%10;
min_shi=min/10;
min_ge=min%10;
sec_shi=sec/10;
sec_ge=sec%10;
ho_shi=d2q[ho_shi];//十位转换为七段码
ho_ge=d2q[ho_ge];//个位转换为七段码
min_shi=d2q[min_shi];
min_ge=d2q[min_ge];
sec_shi=d2q[sec_shi];
sec_ge=d2q[sec_ge];
P8255B=close;
P8255A=ho_shi;
P8255B=ho_shi_open;
delay(3);
P8255B=close;
P8255A=ho_ge;
P8255B=ho_ge_open;
delay(3);
/*P8255B=close;
P8255A=min_shi;
P8255B=min_shi_open;
delay(3);
P8255B=close;
P8255A=min_ge;
P8255B=min_ge_open;
delay(3);
P8255B=close;
P8255A=sec_shi;
P8255B=sec_shi_open;
delay(3);
P8255B=close;
P8255A=sec_ge;
P8255B=sec_ge_open;
delay(3);
*/
}
void delay(uchar data x)/* x为要延迟的时间ms级*/
{
uchar data j;
while (x-->0)
{
for(j=0;j<125;j++)/* 延迟的时间1ms*/
{;}
}
}
uchar BCD2BIN(uchar data BCD)
{
unsigned char data tem=0;
tem=BCD&0x0f;
BCD=BCD>>4;
tem+=BCD*10;
return tem;
}
uchar BIN2BCD(uchar data BIN)
{
uchar data shi,ge,BCD;
shi=BIN/10;
ge=BIN%10;
shi=shi<<4;
BCD=shi|ge;
return BCD;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -