?? main.c
字號:
/*******************************Copyright (c)***************************************
桑海為實業發展有限公司
自 動 化 鋼 琴 研 究 所
http://www.pianoshw.com
E-mail:shw@pianoshw.com
----------------------------------文件信息-------------------------------------------
文 件 名 : MAIN.C
創 建 人 : 吳應斌
創 建 日 期: 2004-6-7 9:36
功 能 描 述: USB接口主程序
************************************************************************************/
#include <AT89X52.H>
#include <COMMON.H>
#include <SL811.H>
#include <TPBULK.H>
#include <HAL.H>
#include <HPI.H>
/*---------------------------------------------------------------------------------*/
XXGFLAGS bdata bXXGFlags; //聲明系統標志
extern unsigned char xdata DBUF[BUFFER_LENGTH]; //長度512字節
/*-----------------------------------------------------------------------------------
名稱: void Init_Timer0(void)
功能: 定時器0初始設定(使能T0).
-----------------------------------------------------------------------------------*/
void Init_Timer0(void)
{
TMOD &= 0xF0;
TMOD |= 0x1; //16位元定時器
TL0 = 0x00;
TH0 = 0x00;
ET0 = 1;
TR0 = 1;
}
/*-----------------------------------------------------------------------------------
名稱: void Init_SpecialInterrupts(void)
功能: 外部中斷0初始設定(使能EX0).
-----------------------------------------------------------------------------------*/
void Init_SpecialInterrupts(void)
{
IT0 = 0; //低電平觸發
EX0 = 1;
}
/*-----------------------------------------------------------------------------------
名稱: void Init_Port(void)
功能: 端口初始設定.
-----------------------------------------------------------------------------------*/
void Init_Port(void)
{
P0 = 0xFF;
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
}
/*-----------------------------------------------------------------------------------
名稱: void Init_COMM(void)
功能: 串口初始設定(波特率=57600,由T2定時).
-----------------------------------------------------------------------------------*/
void Init_COMM(void)
{
SCON = 0x53;
PCON = 0x80|PCON;
T2CON=0x30;
RCAP2H=0xFF; // 57600 @ 24MHz: 24000000/(32*(65536-(RCAP2H,RCAP2L)))
RCAP2L=0xF3;
TI=0;
RI=0;
TR2=1;
ES = 1;
}
/*-----------------------------------------------------------------------------------
名稱: void main(void)
功能: USB接口主循環.
-----------------------------------------------------------------------------------*/
void main(void)
{
unsigned char temp;
Init_Timer0();
Init_SpecialInterrupts();
Init_Port();
Init_COMM();
MCU_LED0=1;
MCU_LED1=1;
MCU_LED2=1;
MCU_LED3=0;
DelayMs(254); //254*0.5ms=127mS
bXXGFlags.bits.bUartInDone=0;
SL811_Init();
for(temp=0;temp<64;temp++)
DBUF[temp]=0;
ENABLE_INTERRUPTS;
while(1)
{
if (bXXGFlags.bits.bTimer) //定時器0時間到
{
DISABLE_INTERRUPTS;
bXXGFlags.bits.bTimer = 0;
ENABLE_INTERRUPTS;
check_key_LED(); //檢測磁盤狀態
}
if (bXXGFlags.bits.bCOM_ERR) //串口故障標志
{
bXXGFlags.bits.bCOM_ERR=0;
ComErrRsp(COMERC_CMDERR);
}
if(bXXGFlags.bits.SLAVE_FOUND) //創建磁盤連接
{
DISABLE_INTERRUPTS;
bXXGFlags.bits.SLAVE_FOUND=FALSE;
DelayMs(250);
if(EnumUsbDev(1)) //磁盤列舉成功
{
bXXGFlags.bits.SLAVE_ENUMERATED = TRUE;
MCU_LED0=0;
}
ENABLE_INTERRUPTS;
}
if(bXXGFlags.bits.SLAVE_REMOVED) //移除磁盤連接
{
DISABLE_INTERRUPTS;
bXXGFlags.bits.SLAVE_REMOVED=FALSE;
MCU_LED0=1;
MCU_LED1=1;
bXXGFlags.bits.SLAVE_ENUMERATED = FALSE;
bXXGFlags.bits.SLAVE_IS_ATTACHED= FALSE;
ENABLE_INTERRUPTS;
}
if(bXXGFlags.bits.bMassDevice)
{
DISABLE_INTERRUPTS;
bXXGFlags.bits.bMassDevice=FALSE;
if(EnumMassDev())
{
bXXGFlags.bits.SLAVE_IS_ATTACHED = TRUE;
MCU_LED1=0;
}
else
{
MCU_LED1=1;
bXXGFlags.bits.SLAVE_IS_ATTACHED = FALSE;
}
ENABLE_INTERRUPTS;
}
if(bXXGFlags.bits.bUartInDone) //串口收到有效命令
{
DISABLE_INTERRUPTS;
bXXGFlags.bits.bUartInDone=0;
UartHandler(); //命令處理
ENABLE_INTERRUPTS;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -