?? mainloop.c
字號(hào):
/*
//*************************************************************************
//
// ZLGMCU
// www.zlgmcu.com
// File Name: MAINLOOP.C
// Revision: V0.2(2002-04-08)
// 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"
#include "protozlg.h"
/*
//*************************************************************************
// Public static data
//*************************************************************************
*/
extern EPPFLAGS bEPPflags;
extern unsigned char idata GenEpBuf[];
extern unsigned char idata EpBuf[];
//D12中斷服務(wù)
usb_isr() interrupt 0
{
DISABLE;
fn_usb_isr();//調(diào)用D12中斷服務(wù)子程序
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();//聯(lián)接USB總線
/* Main program loop */
while( TRUE ){
if(bEPPflags.bits.configuration)
check_key_LED();//連接正常,調(diào)用按鍵和LED控制處理
usbserve();//USB服務(wù)數(shù)據(jù)處理
} // 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);//按鍵狀態(tài)改變,發(fā)送信息給主機(jī)
}
last_key = c;
if(bEPPflags.bits.ep1_rxdone) {
DISABLE;//接收到主機(jī)發(fā)來(lái)的LED控制信息
bEPPflags.bits.ep1_rxdone = 0;
ENABLE;
MCU_LED0 = !(GenEpBuf[3] & 0x1);//控制LED狀態(tài)
MCU_LED1 = !(GenEpBuf[3] & 0x2);
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -