當前位置:編程學習大全網 - 編程語言 - 用單片機C語言編譯壹個乒乓球遊戲(急用2011年6月8號9點30截止)

用單片機C語言編譯壹個乒乓球遊戲(急用2011年6月8號9點30截止)

#include <reg52.h> //包括壹個52標準內核的頭文件

#include<intrins.h>

/****************************聲明函數*****************************/

void x8led(unsigned long ddd);

void delay882us(void);

/*****************************定義IO******************************/

sbit P20=P2^0;

sbit P21=P2^1;

sbit S20=P3^0;

sbit S19=P3^1;

sbit S18=P3^2;

sbit P10=P1^0;

sbit P11=P1^1;

sbit P12=P1^2;

sbit P13=P1^3;

sbit P14=P1^4;

sbit P15=P1^5;

sbit P16=P1^6;

sbit P17=P1^7;

bit f=0;//位變量

/***************************定時器2中斷**************************/

timer2() interrupt 5

{

static unsigned char t;

TF2=0;

t++;

if(t==30) //T2的預置值0x1000,溢出30次就是1秒鐘,晶振22118400HZ

{

t=0;

f=1;//每次長時間的溢出,就置壹個標記,以便主程序處理

}

}

/*****************************數碼管掃描**************************/

void x8led(unsigned long ddd)

{

unsigned char q,r=0;

unsigned char l[11]=;

//0-9的字段碼

unsigned char xx[6]=;

unsigned char y[6]=;

xx[0]=ddd%10;

xx[1]=ddd/10%10;

xx[2]=ddd/100%10;

xx[3]=ddd/1000%10;

xx[4]=ddd/10000%10;

xx[5]=ddd/100000%10;

for(q=0;q<6;) //循環掃描

{

q++;

r++;

if(r==6)r=0;

P1=y[r];

P21=1;

delay882us();

P21=0;

P20=1;

P1=l[xx[r]];

delay882us();

P1=0xff;

P20=0;

}

}

/*******************************延時882us*************************/

void delay882us(void)

{

unsigned char i;

for(i=0;i<255;i++)

{

_nop_();

}

}

/*****************************主程序******************************/

void main(void)

{

unsigned long a=240000;

RCAP2H =0x10; //賦T2的預置值0x1000,溢出30次就是1秒鐘

RCAP2L =0x00;

TR2=1; //啟動定時器

ET2=1; //打開定時器2中斷

EA=1; //打開總中斷

while(1)

{

if(f)//發現標記進入處理

{

f=0;//清除標記

a--;

if(a<0)a=240000;

}

x8led(a);//將a的值送到數碼管顯示

}

}

/*****************************************************************/

  • 上一篇:應麟書院學費多少
  • 下一篇:加入編程需要多少錢?
  • copyright 2024編程學習大全網