📄 lanqiujishijifenqi.c
字号:
#include<pic.h>
int table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
char table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
int a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,d1,d2,d3, serg,time1,time2,t1,t2,count1,count2;
//系统基本初始化
void intial(void)
{
TRISA=0X00;
TRISB=0XFF;
TRISC=0X00;
TRISD=0X00;
TRISE=0X00;
PORTD=0X00;
PORTA=0XFF;
PORTE=0XFF;
ADCON1=0X07;//A口和E口为数字信号
OPTION=0X60;//使能B口弱上拉
INTCON=0B01000000;//关总中断开TMR1中断
}
//----------延时1毫秒
void Delay1ms(char count)
{
char i,j;
for(i=0;i<count;i++)
{
for(j=0;j<120;j++);
}
}
//---------tmr1初始化
void tmr1intial(void)
{TMR1IF=0;//标志位清0------
TMR1IE=1;//允许中断(使能)
TMR1ON=0;//关闭tmr1
T1CON=0X14;//分频比1/2,内部时钟源---
TMR1H=0X29;
TMR1L=0X28;//付初值 0.1秒中断
}
//-------------74LS164初始化
void slintial(void)
{
//记分 USART模式
TRISC6=0;
TRISC7=0;
SPBRG=0X5A; //波特率9600
SPEN=1; //串行口使能 定义RB6/RB7为USART模式
SYNC=1;//同步模式
CSRC=1;//主控模式
TXEN=1;//使能发送
//计时 SPI模式
SSPSTAT=0X00;//主要清除SMP/CKE位
SSPCON=0B00110010;//SPI主控CKP=1
}
void interrupt clkint(void)
{
if(TMR1IF==1)
{
TMR1IF=0;
++serg;
if(serg==10)
{
serg=0;
time1--;
if(time1==0)
time1=t1*60;
}
time2--;
if(time2==0)
time2=t2*10;
}
}
//----显示--------------------
void display(void)
{
//总时间显示
a1=time1%10;
a2=(time1%60)/10;
a3=(time1/60)%10;
a4=time1/600;
//进攻时间
b1=time2%10;
b2=(time2/10)%10;
b3=(time2/100)%10;
//记分1
c1=count1%10;
c2=(count1/10)%10;
c3=(count1/100)%10;
//记分2
d1=count2%10;
d2=(count2/10)%10;
d3=(count2/100)%10;
PORTD=0X01;
SSPBUF=table[a4];
Delay1ms(1);
TXREG=0XFF;
Delay1ms(3);
PORTD=0X02;
SSPBUF=table1[a3];
Delay1ms(1);
TXREG=0X00;//table[c3];
Delay1ms(3);
PORTD=0X04;
SSPBUF=table[a2];
Delay1ms(1);
TXREG=0X00;//table[c2];
Delay1ms(3);
TXIF=0;
PORTD=0X08;
SSPBUF=table[a1];
Delay1ms(1);
TXREG=0X00;//table[c1];
Delay1ms(3);
PORTD=0X20;
SSPBUF=table[b3];
Delay1ms(1);
TXREG=table[d3];
Delay1ms(3);
PORTD=0X40;
SSPBUF=table1[b2];
Delay1ms(1);
TXREG=table[d2];
Delay1ms(3);
PORTD=0X80;
SSPBUF=table[b1];
Delay1ms(1);
TXREG=table[d1];
Delay1ms(3);
}
void main()
{
GIE=0;
intial();
slintial();
tmr1intial();
t1=12;
t2=24;
count1=20;
count2=30;
time1=60*t1;
time2=10*t2;
GIE=1;
TMR1ON=1;
while(1)
{
display();
Delay1ms(3);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -