请高手帮我解读一下单片机程序段(1),搞了一天没搞明白,急!

来源:百度知道 编辑:UC知道 时间:2024/06/26 02:21:30
struct flag
{

unsigned time_1s:1;
unsigned key_scan:1;
unsigned task_time:1;
unsigned task_en:1;
unsigned run_flag:1;

}
flag1;
void out_time(void)
{ if(flag1.time_1s==1)

{
flag1.time_1s=0;

if(flag1.run_flag==1)
{
if(step_cont>=8)
{ step_cont=0;

}

if(step_cont==0)
{ run_cont[0]=0;
run_cont[1]++;
dsp_buf[4]=LED_TAP[step_cont];
dsp_buf[5]=LED_TAP2[step_cont];

dsp_buf[0]=(run_step_time[step_cont]-cont)/10;
dsp_buf[1]=(run_step_time[step_cont]-cont)%10;

dsp_buf[9]=(run_step_time[step_cont]-cont)/10;
dsp_buf[8]=(run_step_time[step_cont]-cont)%10;

dsp_buf[2]=((set_cont-cont_set_b)-run_cont[1])/10;
dsp_buf[3]=((set_cont-cont_set_b)-run_cont[1])%10;

flag 是一个结构体,它的每一个变量只占用1个位,这样可以节省空间,尤其是在嵌入式开发中。这种优化是很有必要的。

struct flag
{

unsigned time_1s:1;
unsigned key_scan:1;
unsigned task_time:1;
unsigned task_en:1;
unsigned run_flag:1;

}
flag1; //定义了一个结构体变量flag1。
void out_time(void)
{
if(flag1.time_1s==1)//如果结构体变量的成员变量time_1s为1则执行
{
flag1.time_1s=0; //就是清除一个标志

if(flag1.run_flag==1) //后面的都是变量标志的处理。
{
if(step_cont>=8)
{
step_cont=0;
}
if(step_cont==0)
{
run_cont[0]=0;
run_cont[1]++;
dsp_buf[4]=LED_TAP[step_cont];
dsp_buf[5]=LED_TAP2[step_cont];
dsp_buf[0]=(run_step_time[step_cont]-cont)/10;
dsp_buf[1]=(run_step_time[step_cont]-cont)%10; //这些操作是分离一个整数的个位和十位
dsp_buf[9]=(run_step_time[step_cont]-cont)/10; //具体要看其他程序
dsp_buf[8]=(run_step_time[step_cont]-cont)%10;
dsp_buf[2]=((s