main.c
来自「陀螺仪程序」· C语言 代码 · 共 154 行
C
154 行
//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
unsigned char buttonChar;
unsigned char sendChar;
int gyroYData, gyroZData, tempData;
unsigned short p1;
unsigned short p2;
signed short p3;
signed short p4;
//Change to 1 to compile as embedded mouse
unsigned char firmwareMode = 1;
void main()
{
int i=0;
int j=0;
int adcVal;
PRT2DR |= 0x80;
PRT0DR |= 0x80;
PRT0DR |= 0x02;
M8C_EnableGInt; // Enable global interrupts
PGA_1_Start(PGA_1_HIGHPOWER);
ADCINC_1_Start(ADCINC_1_HIGHPOWER);
UART_1_Start(UART_1_PARITY_NONE);
while (1) {
buttonChar = 48;
ADCINC_1_GetSamples(1);
while(ADCINC_1_fIsDataAvailable() == 0);
AMX_IN ^= 0x0c;
adcVal = ADCINC_1_iClearFlagGetData();
gyroZData = adcVal+2048;
ADCINC_1_GetSamples(1);
while(ADCINC_1_fIsDataAvailable() == 0);
AMX_IN |= 0x0c;
adcVal = ADCINC_1_iClearFlagGetData();
gyroYData = adcVal+2048;
ADCINC_1_GetSamples(1);
while(ADCINC_1_fIsDataAvailable() == 0);
AMX_IN &= 0xfb;
adcVal = ADCINC_1_iClearFlagGetData();
tempData = adcVal+2048;
p1 = (unsigned short)gyroYData;
p2 = (unsigned short)gyroZData;
buttonChar = 0x30;
//Get button state
if ((PRT0DR & 0x80) == 0) {
buttonChar|=0x01;
}
if ((PRT0DR & 0x02) == 0) {
buttonChar|=0x02;
}
//Run Mouse Algorithm
updateMouse(&tempData, &p1, &p2, &p3, &p4, &buttonChar);
//Send data
while (!UART_1_TX_COMPLETE) {}
UART_1_PutChar('$');
if (firmwareMode==0) {
//Send firmware mode
UART_1_PutChar(0);
//Send raw data
asm("mov [_sendChar], [_tempData]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_tempData+1]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroYData]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroYData+1]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroZData]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroZData+1]");
UART_1_PutChar(sendChar);
while (!UART_1_TX_COMPLETE) {}
UART_1_PutChar(0);
UART_1_PutChar(0);
UART_1_PutChar(0);
UART_1_PutChar(0);
UART_1_PutChar(0);
UART_1_PutChar(0);
}
else {
//Send firmware mode
UART_1_PutChar(1);
//Send output of mouse algorithm
asm("mov [_sendChar], [_tempData]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_tempData+1]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroYData]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroYData+1]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroZData]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_gyroZData+1]");
UART_1_PutChar(sendChar);
UART_1_PutChar(0);
UART_1_PutChar(0);
asm("mov [_sendChar], [_p3]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_p3+1]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_p4]");
UART_1_PutChar(sendChar);
asm("mov [_sendChar], [_p4+1]");
UART_1_PutChar(sendChar);
}
//Send button state
UART_1_PutChar(buttonChar);
UART_1_PutChar('\r');
UART_1_PutChar('\n');
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?