不应该吧,不一定是这个变量本身的问题,你是怎么看到不对的,有可能是显示时或者做其它转换时出错了
production[0]=production_time%10000/10000;这句显然不对,超过10000就不对了,改为:
production[0]=production_time%100000/10000; 我测试没问题,如果这样还是不对的话那就是数码管显示部分有问题
production[0]=production_time%10000/10000;
改为
production[0]=production_time/10000;
这应该是有问题 的。
如果这样还不行,那么你就直接对production_time赋值为30001,看看能不能显示,从而判断是不是显示程序段有问题。
unsigned long int production_time=12345;
改为
//unsigned long int production_time=12345;
unsigned long int production_time=30001;
进行进一步的调试。
程序都是一点点调的,莫要着急。
两种可能
1. 你查下手册,看芯片的字长是多少,如果是8位的芯片,可能只能处理16位的整型(65535)
2. 整数-->数码管显示部分的代码有问题
production_time这个没有问题,
char production[5]={1,2,3,4,5}; 这个错了吧,用char?有符号的?送显示的时候会出错吧。改uchar试试。