?? mainloop.c
字號:
/*
//*************************************************************************
//
// File Name: MAINLOOP.C
// Revision: V0.1
// Use Library: USB51S.LIB
// Note: USB51S.LIB不帶DMA控制功能
//*************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <reg51.h> /* special function register declarations */
#include "mainloop.h"
#include "isr.h"
/*
//*************************************************************************
// Public static data
//*************************************************************************
*/
extern EPPFLAGS bEPPflags;
extern unsigned char idata GenEpBuf[];
extern unsigned char idata EpBuf[];
//D12中斷服務
usb_isr() interrupt 0
{
DISABLE;
fn_usb_isr();//調用D12中斷服務子程序
ENABLE;
}
void main(void)
{
P0 = 0xFF;//初始化I/O口
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
MCU_D12CS = 0x0;
D12SUSPD = 0;
IT0 = 0;//初始化中斷
EX0 = 1;
PX0 = 0;
EA = 1;
MCU_D12CS = 0x1;
MCU_D12CS = 0x0;
D12_SetDMA(0x0);
bEPPflags.value = 0;
reconnect_USB();//聯接USB總線
/* Main program loop */
while( TRUE ){
if(bEPPflags.bits.configuration)
check_key_LED();//連接正常,調用按鍵和LED控制處理
usbserve();//USB服務數據處理
} // Main Loop
}
void check_key_LED(void)
{
static unsigned char c, last_key = 0xf;
c = MCU_SWM0 & MCU_SWM1;
c &= 0x0f;
if (c != last_key) {
D12_WriteEndpoint(3, 1, &c);//按鍵狀態改變,發送信息給主機
}
last_key = c;
if(bEPPflags.bits.ep1_rxdone) {
DISABLE;//接收到主機發來的LED控制信息
bEPPflags.bits.ep1_rxdone = 0;
ENABLE;
MCU_LED0 = !(GenEpBuf[3] & 0x1);//控制LED狀態
MCU_LED1 = !(GenEpBuf[3] & 0x2);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -