#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define SMG_A_DP_PORT P0//数码管P0端口
u8 gsmg_code[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//共阴0-F
u8 a=0;//给a赋值0
void ZD0_init(void)
{
TMOD|=0X01;//选择为定时器0模式,工作方式1
TH0=0XFC;//给定时器赋初值,定时10ms
TL0=0X18;
ET0=1; //打开定时器0中断
EA=1; //打开总中断
TR0=1;//打开定时器
}
void main()
{
ZD0_init();//定时器中断0
while(1)
{
switch(a)
{
case 0: SMG_A_DP_PORT=~gsmg_code[0];break;
case 1: SMG_A_DP_PORT=~gsmg_code[1];break;
case 2: SMG_A_DP_PORT=~gsmg_code[2];break;
case 3: SMG_A_DP_PORT=~gsmg_code[3];break;
case 4: SMG_A_DP_PORT=~gsmg_code[4];break;
case 5: SMG_A_DP_PORT=~gsmg_code[5];break;
case 6: SMG_A_DP_PORT=~gsmg_code[6];break;
case 7: SMG_A_DP_PORT=~gsmg_code[7];break;
case 8: SMG_A_DP_PORT=~gsmg_code[8];break;
case 9: SMG_A_DP_PORT=~gsmg_code[9];break;
case 10:SMG_A_DP_PORT=~gsmg_code[10];break;
}
}
}
void ZD0() interrupt 1 //定时器0中断函数
{
static u16 i;//定义静态变量
TH0=0XFC;//给定时器赋初值,定时1ms
TL0=0X18;
i++;
if(i==1000)
{
i=0;
a++;
}
if(a==10)//a累加到10
{
a=0;//当a累加到10时,a就等于0
}
}
|