是否有您可以在C
我正在写一些代码对领导segement 1每五秒钟是否有您可以在C
降低递减的阵列以周期方式的方式我此刻的实际代码是这样的
FiveSecDelay+=1;
if (FiveSecDelay ==100)
{
count2--; //decrement count2
for (uint32_t x = 0; x < 4; x++) //split count to to individual digits
{
new_value[x] = count2 % 10;
count2 = count2/10;
}
for (uint32_t i = 0; i < 4; i++)
{
Segment_Write(Digit[i],new_value[i]); assign value to segments
}
FiveSecDelay =0;
}
IM使用程序器调用函数中的每条milisecond,在理论上这应该是工作为我所用相同的技术来分配一个值段, 发生的事情是,我有8起始值,它应该得到7,6,5,4等到0,但由于某种原因,它从8到42,并保持在那里
我曾尝试解决它,但都是短暂的。
任何帮助将是巨大的
谢谢
void check() {
static int array[] = {142}; // why are you using an array here?
(*array)--;
}
int main() {
while(true)
{
check();
usleep(5000); // approximate
}
return 0;
}
有check
带一个参数是多少。然后在程序的主循环中有一个计数器,该计数器以某个值开始,每次调用检查时递减。
我假设你正在做一些比你当前的check
函数更复杂的事情,因为显然它不会在提供的表单中做任何事情。如果您提供更多信息,我们将能够为您提供更全面和适用的解决方案。
检查功能只是一个例子,我试过你的建议,但它没有工作, – user1175889 2012-07-16 21:41:23
@ user1175889以什么方式不起作用?你有什么问题? – Daniel 2012-07-16 21:42:24
我正在做的是控制4个led段,写入一个值,然后每5秒将该值减1 – user1175889 2012-07-16 21:43:19
快速和肮脏的方式:
while(true)
{
check();
sleep(5);
}
int values[1];
int check(void)
{
if (values[0] > 0)
values[0]--;
}
如果您每次只在循环中递减一个值,则可以使用静态int而不是数组。 – peacemaker 2012-07-16 21:49:35
从技术上讲,这不会每5毫秒递减一次数值。这会在每次递减之间等待5ms。有一个区别。 – Artefact2 2012-07-16 22:06:36
@ Artefact2真的,这就是为什么它'快速和肮脏',但它给出了如何实现预期结果的想法:) – peacemaker 2012-07-16 22:09:59
如果你有机会获得系统时间,你可以存储进行呼叫的初始时间,然后在每次查询它的值时,核对系统时间确定正确的调整值,和一个小片段来设置值,像这样:
// initialize
int check = 142;
unsigned long long time = getMillis();
int get_value(void)
{
unsigned long long time_factor = ((getMillis() - time)/(unsigned long long) 5);
if (time_factor > (unsigned long long) check)
return 0;
else
return check - time_factor;
}
void set_value(int v)
{
check = v;
time = getMillis();
}
请注意,我不知道把我的头如何获得在C系统时间的顶部(虽然我打赌你需要#include <time.h>
)所以我编写了一个函数getMillis()w它将系统时间作为无符号long long(应该是64位无符号整数)返回。实施取决于读者。
另外值得一提的是,在大约6亿年后你将会遇到一个环绕错误。
哈哈,6亿年:P – Scen 2012-07-16 21:48:37
我们需要更多的信息。 C本身只是一种编程语言。你在什么环境下工作?这是在微处理器上吗?这是Win32吗? – 2012-07-16 21:37:01
您的时间混淆了吗?或者它是如何减少数组中的整数? – Justin 2012-07-16 21:39:21
@user您是否遇到递减(或)定期调用该函数的问题? – Mahesh 2012-07-16 21:39:22