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

📄 dc550_main.c

📁 一款经典的数字电话设计资料
💻 C
字号:
/*****************************************************************************/
/*  CONFIDENTIAL                                                             */
/*  Sigpro Copyright 2003, All rights reserved                               */
/*****************************************************************************/
/*  CLIENT:  Telematrix                                                      */
/*  PROJECT: DC550 Digital Centrex Phone                                     */
/*  FILE:    dc550_main.c                                                    */
/*****************************************************************************/
/*  This file contains the main() function, which first initializes the      */
/*  program and then enters the main loop.                                   */
/*****************************************************************************/

#include "dc550_local.h"
#include "dc550_hwinit.h"
#include "dc550_interrupt.h"
#include "dc550_i2cdriver.h"
#include "dc550_display.h"
#include "dc550_hookswitchmonitor.h"
#include "dc550_modemcontroller.h"
#include "dc550_leddriver.h"
#include "dc550_keypad.h"
#include "dc550_usartdriver.h"
#include "dc550_audio.h"
#include "dc550_controller.h"


/******************************************************************************
 *  GLOBAL VARIABLES
 *****************************************************************************/
unsigned int            main_counter;
DC550InterruptCounter   main_lastinterruptcounter;


/******************************************************************************
 *  FUNCTION: void main(void)
 ******************************************************************************
 *  DESCRIPTION:
 *  This main() function contains the initialization code and the main loop.
 *****************************************************************************/
void main(void) {
  // These are the initialization functions.
  hwinit_init_cpu();
  hwinit_init_clock();
  hwinit_init_portpins();
  hwinit_init_timera();
  hwinit_init_adc12();
  hwinit_init_usart();
 
  interrupt_init();
  i2cdriver_init();
  display_init();  
  hookswitchmonitor_init();
  modemcontroller_init();
  leddriver_init();
  keypad_init();
  usartdriver_init();
  audio_init();
  controller_init();
  hwinit_init_misc();
  
  // Initialize variables for the main loop
  main_counter = 0;
  main_lastinterruptcounter = interrupt_counter;
  
  // This is the main loop.  The compiler likes for(;;) better than while(1).
  for(;;) {
    if((interrupt_counter - main_lastinterruptcounter) >= (MAIN_LOOPTIME)) {
      dc550_printf("Main Loop State: %d\r\n", main_counter);
    }


    // This while loop synchronizes the main loop
    while((interrupt_counter - main_lastinterruptcounter) < MAIN_LOOPTIME);
    main_lastinterruptcounter = interrupt_counter;
    // Pseudocode: set debug oscilloscope pin high
  
    // Execute various main loop tasks
    i2cdriver_exec();
    switch(main_counter) {
      case 0:
        display_exec();
        hookswitchmonitor_exec();
        keypad_exec();
        usartdriver_exec();
        modemcontroller_exec();
        main_counter += 1;
        break;
      case 1:
        display_exec();
        hookswitchmonitor_exec();
        keypad_exec();
        usartdriver_exec();
        audio_exec();
        main_counter += 1;
        break;
      case 2:
        display_exec();
        hookswitchmonitor_exec();
        keypad_exec();
        usartdriver_exec();
        controller_exec();
        main_counter += 1;
        break;
      case 3:
        display_exec();
        hookswitchmonitor_exec();
        keypad_exec();
        usartdriver_exec();
        audio_exec();
        hwinit_reset_watchdog();
        main_counter = 0;
        break;
    }

    // Pseudocode: set debug oscilloscope pin low
    
  }
}

⌨️ 快捷键说明

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