⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buttons_menu.c

📁 linux上实现的多种型号的AVR模拟器
💻 C
📖 第 1 页 / 共 2 页
字号:
  update_gpr_window();  update_sram_window();  update_io_window();   update_main();  full_update_memory_window();}void *run_thread(void *foo){  int time,old_time;  char buf[12];  memset(mem_file_changed,0,size_mem_file);  memset(eeprom_changed,0,size_eeprom);  thread_stop=0;  change_sensitive_run();  do{    exec_command();    if(pc>=controllers[type_micro].size_flash) pc=0;    if(list_commands[pc].flags&BREAKPOINT) break;    time=(int)(clocks*1000.0/frequency);    if(time%10==0&&old_time!=time)      {	switch(type_time)	  {	  case uS: sprintf(buf,"%f:6",1.0/frequency*1E6*clocks);break;	  case mS: sprintf(buf,"%f:6",1.0/frequency*1E3*clocks);break;	  case  S: sprintf(buf,"%f:6",1.0/frequency*clocks);break;	  }	XmTextFieldSetString(edit_time,buf);      }    old_time=time;    if(thread_stop) break;  }while(1);    drawarea.current_line_deb=list_commands[pc].number_line;  debug=TRUE;  draw();  debug=FALSE;  update_gpr_window();  update_sram_window();  update_io_window();   update_main();  full_update_memory_window();    change_sensitive_stop();  return NULL;}void run_callback(Widget w,XtPointer client_data, XtPointer call_data){  if(pc==-1) reset();  else    {      if(pthread_create(&thread,&attr_thread,run_thread,NULL))	perror("pthread_create");    }}void stop_callback(Widget w,XtPointer client_data, XtPointer call_data){  thread_stop=1;}void load_eeprom_callback(Widget w,XtPointer client_data,XtPointer call_data){  load_memory=EEPROM;  XtManageChild(*((Widget *)client_data));}void load_flash_callback(Widget w,XtPointer client_data,XtPointer call_data){  load_memory=FLASH;  XtManageChild(*((Widget *)client_data));}void toggle_gpr_callback(Widget w,XtPointer client_data,XtPointer call_data){  if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET)    {      XtManageChild(*((Widget *)client_data));      update_gpr_window();    }  else XtUnmanageChild(*((Widget *)client_data));  return;}void toggle_io_callback(Widget w,XtPointer client_data,XtPointer call_data){  if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET)    {      XtManageChild(*((Widget *)client_data));      full_update_io_window();    }  else XtUnmanageChild(*((Widget *)client_data));  return;}void toggle_sram_callback(Widget w,XtPointer client_data,XtPointer call_data){  if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET)    {      XtManageChild(*((Widget *)client_data));      full_update_sram_window();    }  else XtUnmanageChild(*((Widget *)client_data));  return;}void toggle_eeprom_callback(Widget w,XtPointer client_data,XtPointer call_data){  if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET)    {      XtManageChild(*((Widget *)client_data));      full_update_eeprom_window();    }  else XtUnmanageChild(*((Widget *)client_data));  return;}void toggle_memory_callback(Widget w,XtPointer client_data,XtPointer call_data){  Widget *window=(Widget *)client_data;    if(((XmToggleButtonCallbackStruct *)call_data)->set==XmSET)    {      if(!*window) 	{	  create_memory_window();	}      else 	{	  draw_memory_window();	  XtManageChild(*window);	}    }  else XtUnmanageChild(*window);  return;}void reset_callback(Widget w,XtPointer client_data,XtPointer call_data){  reset();}void step_out_callback(Widget w,XtPointer client_data,XtPointer call_data){  int n;    memset(mem_file_changed,0,size_mem_file);  memset(eeprom_changed,0,size_eeprom);  if(pc==-1) reset();  if(!num_call) {trace_into_callback(w,client_data,call_data);return;}  else    {      n=0;      do{	exec_command();	n++;	if(list_commands[pc].flags&BREAKPOINT) break;      }while(strncmp(list_commands[pc].mnemocode,"ret",3)&&n<2000);            if(!(list_commands[pc].flags&BREAKPOINT)) exec_command();      drawarea.current_line_deb=list_commands[pc].number_line;      debug=TRUE;      draw();      debug=FALSE;      if(pc>=controllers[type_micro].size_flash) pc=0;    }    update_gpr_window();  update_sram_window();  update_io_window();   update_main();  full_update_memory_window();}void multi_step_callback(Widget w,XtPointer client_data,XtPointer call_data){  int n;    memset(mem_file_changed,0,size_mem_file);  memset(eeprom_changed,0,size_eeprom);  if(pc==-1) reset();  else    {      n=0;      do{	exec_command();	if(pc>=controllers[type_micro].size_flash) pc=0;	n++;	if(list_commands[pc].flags&BREAKPOINT) break;      }while(n<multi_step);            drawarea.current_line_deb=list_commands[pc].number_line;      debug=TRUE;      draw();      debug=FALSE;    }    update_gpr_window();  update_sram_window();  update_io_window();   update_main();  full_update_memory_window();}void *auto_step_thread(void *foo){  int n;  int time,old_time;  char buf[12];  memset(mem_file_changed,0,size_mem_file);  memset(eeprom_changed,0,size_eeprom);  thread_stop=0;  change_sensitive_run();    n=clocks;  do{    exec_command();    if(pc>=controllers[type_micro].size_flash) pc=0;    if(list_commands[pc].flags&BREAKPOINT) break;    time=(clocks-n)*1000/frequency;    if(time%10==0&&old_time!=time)      {	switch(type_time)	  {	  case uS: sprintf(buf,"%f:6",1.0/frequency*1E6*clocks);break;	  case mS: sprintf(buf,"%f:6",1.0/frequency*1E3*clocks);break;	  case  S: sprintf(buf,"%f:6",1.0/frequency*clocks);break;	  }	XmTextFieldSetString(edit_time,buf);      }    old_time=time;    if(thread_stop) break;  }while(auto_step>time);    drawarea.current_line_deb=list_commands[pc].number_line;  debug=TRUE;  draw();  debug=FALSE;  update_gpr_window();  update_sram_window();  update_io_window();   update_main();  full_update_memory_window();  change_sensitive_stop();   return NULL;}void auto_step_callback(Widget w,XtPointer client_data,XtPointer call_data){     memset(mem_file_changed,0,size_mem_file);  memset(eeprom_changed,0,size_eeprom);  if(pc==-1) reset();  else    {      if(pthread_create(&thread,&attr_thread,auto_step_thread,NULL))	perror("pthread_create");    }}void logging_callback(){  int n;  ports_window_flag=0;  for(n=0;n<6;n++)    if(data_port_log[n].state!=-1)      {	XtSetSensitive(data_port_window[n].button1,True);	XtVaSetValues(data_port_window[n].button1,XmNset,		      data_port_log[n].state,NULL);	XmTextFieldSetString(data_port_window[n].data,			     data_port_log[n].filename);	if(data_port_log[n].state==XmSET)	  {	    XtSetSensitive(data_port_window[n].data,True);	    XtSetSensitive(data_port_window[n].button2,True);	  }	else	  {	    XtSetSensitive(data_port_window[n].data,False);	    XtSetSensitive(data_port_window[n].button2,False);	  }      }    else      {	XtSetSensitive(data_port_window[n].button1,False);	XtSetSensitive(data_port_window[n].data,False);	XtSetSensitive(data_port_window[n].button2,False);      }  XtVaSetValues(XtParent(ports_window),XmNtitle,_("Logging ports"),NULL);  XtManageChild(ports_window);}void stimuli_callback(){  int n;  ports_window_flag=1;  for(n=0;n<6;n++)    if(data_port_sti[n].state!=-1)      {	XtSetSensitive(data_port_window[n].button1,True);	XtVaSetValues(data_port_window[n].button1,XmNset,		      data_port_sti[n].state,NULL);	XmTextFieldSetString(data_port_window[n].data,			     data_port_sti[n].filename);	if(data_port_sti[n].state==XmSET)	  {	    XtSetSensitive(data_port_window[n].data,True);	    XtSetSensitive(data_port_window[n].button2,True);	  }	else	  {	    XtSetSensitive(data_port_window[n].data,False);	    XtSetSensitive(data_port_window[n].button2,False);	  }      }    else      {	XtSetSensitive(data_port_window[n].button1,False);	XtSetSensitive(data_port_window[n].data,False);	XtSetSensitive(data_port_window[n].button2,False);      }  XtVaSetValues(XtParent(ports_window),XmNtitle,_("Stimuli ports"),NULL);  XtManageChild(ports_window);}void change_sensitive_run(void){  XtSetSensitive(buttons[STOP].widget,True);  XtSetSensitive(buttons[RELOAD].widget,False);  XtSetSensitive(buttons[TRACE_INTO].widget,False);  XtSetSensitive(buttons[STEP_OVER].widget,False);  XtSetSensitive(buttons[STEP_OUT].widget,False);  XtSetSensitive(buttons[MULTI_STEP].widget,False);  XtSetSensitive(buttons[AUTO_STEP].widget,False);  XtSetSensitive(buttons[RUN].widget,False);  XtSetSensitive(buttons[LOAD].widget,False);  XtSetSensitive(buttons[RESET_].widget,False);/*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[STOP_BUTTON].button,True); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[TRACE_INTO_BUTTON].button,False); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OVER_BUTTON].button,False); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[MULTI_STEP_BUTTON].button,False); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[AUTO_STEP_BUTTON].button,False); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[RUN_BUTTON].button,False); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[RESET_BUTTON].button,False); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OUT_BUTTON].button,False); */  XtSetSensitive(menu[FILE_MENU].button,False);  XtSetSensitive(menu[OPTIONS_MENU].button,False);}void change_sensitive_stop(void){  XtSetSensitive(buttons[STOP].widget,False);  XtSetSensitive(buttons[RELOAD].widget,True);  XtSetSensitive(buttons[TRACE_INTO].widget,True);  XtSetSensitive(buttons[STEP_OVER].widget,True);  XtSetSensitive(buttons[STEP_OUT].widget,True);  XtSetSensitive(buttons[MULTI_STEP].widget,True);  XtSetSensitive(buttons[AUTO_STEP].widget,True);  XtSetSensitive(buttons[RUN].widget,True);  XtSetSensitive(buttons[LOAD].widget,True);  XtSetSensitive(buttons[RESET_].widget,True);  XtSetSensitive(menu[FILE_MENU].button,True);  XtSetSensitive(menu[OPTIONS_MENU].button,True);/*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[STOP_BUTTON].button,False); *//*    XtSetSensitive(menu[2].sub_menu[3].button,True); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OVER_BUTTON].button,True); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[MULTI_STEP_BUTTON].button,True); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[AUTO_STEP_BUTTON].button,True); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[RUN_BUTTON].button,True); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[RESET_BUTTON].button,True); *//*    XtSetSensitive(menu[DEBUG_MENU].sub_menu[STEP_OUT_BUTTON].button,True); */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -