题目
代码
timer.c
#include <timer.h>
void Timer0Init(void) //1毫秒@12.000MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x20; //设置定时初值
TH0 = 0xD1; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=ET0=1;
}
timer.h
#ifndef _TIMER_H_
#define _TIMER_H_
#include <STC15F2K60S2.H>
void Timer0Init(void);
#endif
smg.c
#include <smg.h>
unsigned char code smgduan[12]={
0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,
0X80,0X90,0XBF,0XFF};
unsigned char dspbuf[8];
void smg_display(void)
{
static unsigned char i=0;
P2=(P2&=0X1F)|0XE0;
P0=0XFF;
P2&=0X1F;
P2=(P2&=0X1F)|0XC0;
P0=0x01<<i;
P2&=0X1F;
P2=(P2&=0X1F)|0XE0;
P0=smgduan[dspbuf[i]];
P2&=0X1F;
if(++i==8)
i=0;
}
smg.h
#ifndef _SMG_H_
#define _SMG_H_
#include <STC15F2K60S2.H>
void smg_display(void);
extern unsigned char dspbuf[8];
#endif
key.c
#include <key.h>
unsigned char key_sum=0;
unsigned char k4_press,k5_press,k6_press,k7_press;
void key_read(void)
{
static unsigned char k4_time=0,k5_time=0,k6_time=0,k7_time=0;
key_sum=0;
if(k4==0)
{
k4_time++;
if(k4_time==1)
key_sum=4;
else if(k4_time==20)
{
key_sum=0;
k4_time=1;
}
}
else
k4_time=0;
if(k5==0)
{
k5_time++;
if(k5_time==1)
key_sum=5;
else if(k5_time==20)
{
key_sum=0;
k5_time=1;
}
}
else
k5_time=0;
if(k6==0)
{
k6_time++;
if(k6_time==1)
key_sum=6;
else if(k6_time==20)
{
key_sum=0;
k6_time=1;
}
}
else
k6_time=0;
if(k7==0)
{
k7_time++;
if(k7_time==1)
key_sum=7;
else if(k7_time==20)
{
key_sum=0