⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lanqiujishijifenqi.c

📁 篮球记分计时器
💻 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 + -