作者syuan08 (syuan)
看板ASM
标题[问题] SPCE061A单晶片 接收/传送
时间Thu May 30 20:17:24 2013
小弟最近在写一只程式
是要从手机端利用蓝芽传输
将档案传输到单晶片上执行
目前进度是单晶片上可以接收到手机所传送来的资料
但无法回传值给手机!!
所以想请问各位~
如果单晶片从手机端接收到"AA",并且要回传"BB"给手机端的话该怎样做修改?
以下是小弟的程式~
#include <SPCE061A.H>
void UART_Init();
char UART_getch();
void UART_putch(char ch);
void delay(unsigned int n);
int main()
{
unsigned int data;
int i;
char a;
const table[8]={0x4001, 0x4002, 0x4004, 0x4008,
0x4010, 0x4020, 0x4040, 0x4080};
*P_IOA_Dir=0xffff; //IOA0~IOA7 初始化为输出
*P_IOA_Attrib=0xffff;
*P_IOA_Data=0xffff;
UART_Init();
while(1) {
data=UART_getch(); //读出接收的资料
UART_putch(data); // echo 回去发射端
switch (data) {
case '1': *P_IOA_Data=0x0000; //点亮 LED
break;
case '2': *P_IOA_Data=0xFFFF; //全灭led
break;
case '3'://*P_IOA_Data=0xAAAA; //间隔 LED
for (i=0; i<8; i++)
{
*P_IOA_Data = table[i]; //使LED点亮
delay(15000);
}
for (i=7; i>=0; i--)
{
*P_IOA_Data = table[i]; //使LED点亮
delay(15000);
}
break;
default : *P_IOA_Data=0xffff; //4暗4亮
}
}
}
void UART_Init()
{
char ch;
// 注意: 特殊接脚时仍须设定GPIO暂存器, 否则可能因pull-high/low而不动作
*P_IOB_Dir=0x0400; // IOB10=非反相输出, IOB7=浮接输入
*P_IOB_Attrib=0x0480;
*P_UART_Command1=0x20; // UART 重置
*P_UART_Command1=0x00;
*P_UART_BaudScalarHigh=0x05; // Baud=9600bps
*P_UART_BaudScalarLow=0x00;
*P_UART_Command1=0x0000; // 无同位位元
*P_UART_Command2=0x00C0; // RX/TX 致能
ch = *P_UART_Data; // 先读取一个资料, 用来清除接收缓冲区
}
char UART_getch()
{
while(!(*P_UART_Command2&0x0080)) { //等待接收完毕
*P_Watchdog_Clear=C_WDTCLR;
}
return *P_UART_Data; // 读取接收资料
}
void UART_putch(char ch)
{
while(!(*P_UART_Command2&0x0040)) { //等待前一次发射完毕
*P_Watchdog_Clear=C_WDTCLR;
}
*P_UART_Data = ch; // 传送本次资料
}
void delay(unsigned int n)
{
int i;
for (i=0; i<n; i++) ;
*P_Watchdog_Clear = 0x0001; //清除看门狗计数器
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.114.136.199
1F:推 ruemann:你这程式不是有把收到的资料ECHO回去吗? 05/30 20:56
2F:→ syuan08:可是手机那边不知为何收不到! 05/30 21:11
3F:→ syuan08:如果我收到的是"3"我把它写在CASE里,我该怎样回传"BB"到 05/30 21:14
4F:→ syuan08:手机 05/30 21:14