将代码拆分成多个小功能模块,便于下次写程序时直接调用。
将此代码进行模块化处理
#include <REGX52.H>
void Delay(unsigned char time) //@12.000MHz 单位为1ms
{ while(time--)
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
unsigned char NumberTab[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
void nixie(unsigned char Location,Number)
{
switch(Location)
{ case 8:P24=0;P23=0;P22=0;break;
case 7:P24=0;P23=0;P22=1;break;
case 6:P24=0;P23=1;P22=0;break;
case 5:P24=0;P23=1;P22=1;break;
case 4:P24=1;P23=0;P22=0;break;
case 3:P24=1;P23=0;P22=1;break;
case 2:P24=1;P23=1;P22=0;break;
case 1:P24=1;P23=1;P22=1;break;
};
P0 =NumberTab[Number];
Delay(1);
P0 =0X00;
}
void main()
{
while(1)
{ nixie(1,5);//表示第1位显示5
nixie(2,2);
nixie(3,0);
nixie(5,5);
nixie(6,2);
nixie(7,1);
}
while(1)
{}
}
处理结果:
main.c
#include <REGX52.H>
#include "Nixie.h"
void main()
{
while(1)
{ nixie(1,5);//表示第1位显示5
nixie(2,2);//表示第2位显示2
nixie(3,0);
nixie(5,5);
nixie(6,2);
nixie(7,1);
}
while(1)
{}
}
time.c
void Delay(unsigned char time) //@12.000MHz 单位为1ms
{ while(time--)
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
time.h
#ifndef __TIME_H_
#define __TIME_H_
void Delay(unsigned char time);
#endif
nixie.c
#include <REGX52.H>
#include "time.h"
unsigned char NumberTab[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
void nixie(unsigned char Location,Number)//Location表示位数,Number表示显示什么数字
{
switch(Location)
{ case 8:P24=0;P23=0;P22=0;break;
case 7:P24=0;P23=0;P22=1;break;
case 6:P24=0;P23=1;P22=0;break;
case 5:P24=0;P23=1;P22=1;break;
case 4:P24=1;P23=0;P22=0;break;
case 3:P24=1;P23=0;P22=1;break;
case 2:P24=1;P23=1;P22=0;break;
case 1:P24=1;P23=1;P22=1;break;
};
P0 =NumberTab[Number];
Delay(1);
P0 =0X00;//解决消影问题
}
nixie.h
#ifndef __NIXIE_H_
#define __NIXIE_H_
void nixie(unsigned char Location,Number);
#endif