📄 main.c
字号:
/************************************************************************************
* Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* Http: www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: main.c
* Project : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
*
* Author: 李林利
* Version: 1.20
* Date: 2007.6.1
* Email: GavinLi@126.com
*
* Description: 本文件是主程序模块,完成系统初始化及程序主循环;
*
* Others: none;
*
* Function List:
* 1. void Send_Data(long value)
* 2. void Sys_Init(void)
* 3. void main (void)
*
* History:
* 1. Author: 李林利
* Version: 1.10
* Date: 2007.3.12
* Modification: none
*
* 2. Author: 李林利
* Version: 1.00
* Date: 2004.11.24
* Modification: 建立文件
*
*************************************************************************************/
/************************************************************************************/
// 引用外部头文件
#include "..\config\C8051f020.h"
#include "..\config\Const.h"
#include "..\driver\uart.h"
#include "..\driver\system.h"
#include "..\driver\delay.h"
#include "..\driver\other.h"
#include "main.h"
#include "IO_Example.h"
#include "IOG_Example.h"
#include "XRAM_Example.h"
#include "EXBUS_Example.h"
#include "Tmp_Example.h"
#include "Key_Example.h"
#include "AD_Example.h"
#include "DAC_Example.h"
//#include "LCDB_Example.h"
#include "LCDA_Example.h"
#include "RTC_Example.h"
#include "Printer_Example.h"
/************************************************************************************/
/************************************************************************************
// 常量及全局变量定义
*************************************************************************************/
#define CMD_IO 'A'
#define CMD_IOG 'B'
#define CMD_KEY 'C'
#define CMD_IFLASH 'D'
#define CMD_FLASH 'E'
#define CMD_EEPROM 'F'
#define CMD_RTC 'G'
#define CMD_DAC 'H'
#define CMD_AD 'I'
#define CMD_LCDA 'J'
#define CMD_LCDB 'K'
#define CMD_TMP 'L'
#define CMD_RS485 'M'
#define CMD_GB2312 'N'
#define CMD_EXBUS 'O'
#define CMD_XRAM 'P'
#define CMD_PRINTER 'Q'
unsigned long code X10[10] ={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
/***********************************************************************************
* Function: Send_Data;
*
* Description: 发送数据;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Send_Data(long value)
{
char i,id;
bool flag;
unsigned char j,data_buf[20];
id = 0;
if (value<0)
{
data_buf[id++] = '-';
value = ~value + 1;
}
flag = TRUE;
for (i=9; i>=0; i--)
{
if (flag)
{
if ((value/X10[i])>0)
{
flag = FALSE;
data_buf[id++] = 0x30+(unsigned char)(value/X10[i]);
}
}
else
data_buf[id++] = 0x30+(unsigned char)(value%X10[i+1]/X10[i]);
}
if (flag)
data_buf[id++] = 0x30;
Uart0_SendBlock(data_buf,id,&j);
}
/***********************************************************************************
* Function: Sys_Init;
*
* Description: 系统初始化;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Sys_Init(void)
{
Wachdog_Disable(); // 关闭看门狗
Sysclk_Init(); // 系统时钟初始化,使用外部22.1184MHz晶振作为时钟源
SysPort_Init();
Uart0_Init(0,115200); //Uart0 初始化函数,波特率是115200,使用定时器1作为时钟,允许发送和接收中断
Uart1_Init(0,115200); //Uart1 初始化函数,波特率是115200,使用定时器1作为时钟,允许发送和接收中断
ENABLE_INTERRUPTS; // enable global interrupts
}
/***********************************************************************************
* Function: main;
*
* Description: 主程序模块,完成系统初始化及程序主循环;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void main (void)
{
unsigned char cmd;
Sys_Init();
LED_Display(TRUE);
ALARM_Ctrl(TRUE);
Delay_ms(200);
LED_Display(FALSE);
ALARM_Ctrl(FALSE);
ENABLE_INTERRUPTS;
while (1)
{
LED_Display(TRUE);
//ALARM_Ctrl(TRUE);
Delay_ms(100);
//ALARM_DIS;
LED_Display(FALSE);
//ALARM_Ctrl(FALSE);
Delay_ms(100);
EWachdog_Clear();
/*
cmd = 0;
if (Uart0_GetCharsRxBuf()>0)
{
Uart0_RecvChar(&cmd);
rx0_len++;
if(cmd=='@')
{ tx0_len = 0;
rx0_len = 0;
}
else if (Uart0_GetCharsTxBuf()>0)
{
Uart0_SendChar(cmd);
tx0_len++;
}
}
if (Uart1_GetCharsRxBuf()>0)
{
Uart1_RecvChar(&cmd);
Uart1_SendChar(cmd);
}
*/
cmd = 0;
if (Uart0_GetCharsRxBuf()>0)
{
Uart0_RecvChar(&cmd);
if (Uart0_GetCharsTxBuf()>0)
Uart0_SendChar(cmd);
}
switch (cmd)
{
case CMD_IO:
IO_Proc();
break;
case CMD_IOG:
IOG_Proc();
break;
case CMD_KEY:
Key_Proc();
break;
case CMD_IFLASH:
IFlash_Proc();
break;
case CMD_FLASH:
Flash_Proc();
break;
case CMD_EEPROM:
EEPROM_Proc();
break;
case CMD_RTC:
RTC_Proc();
break;
case CMD_DAC:
DAC_Proc();
break;
case CMD_AD:
AD_Proc();
break;
case CMD_LCDA:
LCDA_Proc();
break;
case CMD_LCDB:
LCDB_Proc();
break;
case CMD_TMP:
TMP_Proc();
break;
case CMD_RS485:
//RS485_Proc();
break;
case CMD_EXBUS:
EXBUS_Proc();
break;
case CMD_GB2312:
//GB2312_Proc();
break;
case CMD_XRAM:
XRAM_Proc();
break;
case CMD_PRINTER:
Printer_Proc();
break;
default:
break;
}
}
}
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -