相关代码:
#include “STC15F2K60S2.H”
#include “absacc.h”
unsigned char SMGNoDot_CA[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char count;
unsigned char dat;
unsigned char num;
void config()
{
TH0 = 0XFF;
TL0 = 0XFF;
TH1 = (65535 - 50000 + 1) / 256;
TL1 = (65535 - 50000 + 1) % 256;
TMOD = 0x16;
ET0 = 1;
ET1 = 1;
EA = 1;
TR0 = 1;
TR1 = 1;
}
void Delay(unsigned char t)
{
while(t–);
}
void Service() interrupt 1
{
count++;
}
void Service1() interrupt 3
{
TH1 = (65535 - 50000 + 1) / 256;
TL1 = (65535 - 50000 + 1) % 256;
num++;
if(num == 20)
{
num = 0;
dat = count;
count = 0;
}
}
void Close_All(unsigned char dat)
{
XBYTE[0xc000] = 0xff;
XBYTE[0xe000] = dat;
}
void Display_SMG_Bit(unsigned char pos ,unsigned char dat)
{
XBYTE[0xe000] = 0xff;
XBYTE[0xc000] = 0x01 << pos;
XBYTE[0xe000] = dat;
}
void Display()
{
Display_SMG_Bit(0,0x8e);
Delay(100);
if(dat > 9999)
{
Display_SMG_Bit(3,SMGNoDot_CA[dat / 10000 % 10]);
Delay(100);
}
if(dat > 999)
{
Display_SMG_Bit(4,SMGNoDot_CA[dat / 1000 % 10]);
Delay(100);
}
if(dat > 99)
{
Display_SMG_Bit(5,SMGNoDot_CA[dat / 100 % 10]);
Delay(100);
}
if(dat > 9)
{
Display_SMG_Bit(6,SMGNoDot_CA[dat / 10 % 10]);
Delay(100);
}
if(dat > 0)
{
Display_SMG_Bit(7,SMGNoDot_CA[dat % 10]);
Delay(100);
}
Close_All(0xff);
}
void main()
{
XBYTE[0x8000] = 0xff;
config();
while(1)
{
Display();
}
}