📄 main.c
字号:
/*------------------------------------------------------------------*-
Main.c (v1.01)
------------------------------------------------------------------
Test program for menu-driven PC link library, generic version.
Required linker options (see Chapter 14 for details):
COPYRIGHT
---------
This code is from the book:
PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont
[Pearson Education, 2001; ISBN: 0-201-33138-1].
This code is copyright (c) 2001 by Michael J. Pont.
See book for copyright details and other information.
编译参数:
memory model: XDATA
Code Rom Size: 64K
BL51 Misc:
OVERLAY (main ~ (IO_Update, AD_Update, Keypad_RS232_Update, LCD_Update, DEBUG_LED_RUN_update),
hSCH_Dispatch_Tasks ! (IO_Update, AD_Update, Keypad_RS232_Update, LCD_Update, DEBUG_LED_RUN_update))
定时器2作调度器,定时器1作波特率发生器
-*------------------------------------------------------------------*/
#include "../../public/includes.h"
#include "../../l/inc_l.h"
#include "../inc_a.h"
/* ............................................................... */
/* ............................................................... */
/*------------------------------------------------------------------*-
System_Init()
系统设备初始化
-*------------------------------------------------------------------*/
void System_Init(void)
{
ALE_OFF(); // close ALE out
delay(500);
in_timerinit();
IO_Init();
Sio_Init();
X25165_Init();
watchdog_on();
I2C_init();
RTC_Init();
Init_MruCode();
Init_DauType();
Time_RUN_Init();
Pulse_Init();
EX0 = 1;
EX1 = 1;
}
/*------------------------------------------------------------------*-
DEBUG_LED_RUN_update()
LED闪烁(1s)
-*------------------------------------------------------------------*/
void DEBUG_LED_RUN_update(void)
{
static bit bOut_run;
static tByte bISP_wait = 0, bISP_EN = 0;
static tByte ContDate = 0;
// 看门狗处理
Check_Watchdog();
// 更新系统时间(10s刷新一次系统日期)
if(ContDate == 0)
{
ContDate = 10;
SysDate_Update();
}
else ContDate--;
SysTime_Update();
// LED闪烁控制
bOut_run = ~bOut_run;
IO_LED_PL(bOut_run);
//IO_LED_Up(OFF);
//IO_LED_Down(OFF);
// 判断ISP
if(Rec_PC_ISP_EN() == 0xaa)
{
if(bISP_EN == 0 && bISP_wait == 0)
{
bISP_EN = 0x55;
bISP_wait = 0xaa;
}
else if(bISP_EN == 0x55 && bISP_wait == 0xaa)
{
bISP_EN = 0;
bISP_wait = 0;
Rec_PC_ISP_EN_clr();
// 软复位到ISP区,开始ISP
ISP_CONTR = B0110_0000;
}
else
{
bISP_EN = 0;
bISP_wait = 0;
Rec_PC_ISP_EN_clr();
}
}
}
/*------------------------------------------------------------------*-
main()
主程序
-*------------------------------------------------------------------*/
void main(void)
{
// Init System value
System_Init();
// Set up the scheduler
hSCH_Init();
// Task ID = 0
// 脉冲输入处理
hSCH_Add_Task(mTASK_ID_Pulse_Update, Pulse_Update, 100 / mFosc_Tick, mPULSE_UPDATE_TIME / mFosc_Tick,1);
// Task ID = 1
// 上行通讯处理
hSCH_Add_Task(mTASK_ID_UpTR_Update, UpTR_Update, 150 / mFosc_Tick, mUPTR_UPDATE_TIME / mFosc_Tick, 1);
// Task ID = 2
// 下行通讯处理
hSCH_Add_Task(mTASK_ID_DownTR_Update, DownTR_Update, 200 / mFosc_Tick, mDOWNTR_UPDATE_TIME / mFosc_Tick, 1);
// Task ID = 3
// LED显示处理
hSCH_Add_Task(mTASK_ID_IO_Update, IO_Update, 250 / mFosc_Tick, mIO_UPDATE_TIME / mFosc_Tick, 1);
// Task ID = 4
// 定时预抄处理
hSCH_Add_Task(mTASK_ID_TIME_RUN_update, Time_RUN_update, 300 / mFosc_Tick, mTIME_UPDATE_TIME / mFosc_Tick, 1);
// Task ID = 5
// 测试系统LED
hSCH_Add_Task(mTASK_ID_DEBUG_LED_RUN_update, DEBUG_LED_RUN_update, 50 / mFosc_Tick, mLED_UPDATE_TIME / mFosc_Tick, 1);
// 启动任务
hSCH_Start();
while(1)
{
// 切换任务(see hSch51.C)
hSCH_Dispatch_Tasks();
// 进入休眠模式
hSCH_Go_To_Sleep();
}
}
/*------------------------------------------------------------------*-
---- END OF FILE -------------------------------------------------
-*------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -