[問題] SPCE061A單晶片 接收/傳送

看板ASM (組合語言)作者 (syuan)時間12年前 (2013/05/30 20:17), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
小弟最近在寫一隻程式 是要從手機端利用藍芽傳輸 將檔案傳輸到單晶片上執行 目前進度是單晶片上可以接收到手機所傳送來的資料 但無法回傳值給手機!! 所以想請問各位~ 如果單晶片從手機端接收到"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

05/30 20:56, , 1F
你這程式不是有把收到的資料ECHO回去嗎?
05/30 20:56, 1F

05/30 21:11, , 2F
可是手機那邊不知為何收不到!
05/30 21:11, 2F

05/30 21:14, , 3F
如果我收到的是"3"我把它寫在CASE裡,我該怎樣回傳"BB"到
05/30 21:14, 3F

05/30 21:14, , 4F
手機
05/30 21:14, 4F
文章代碼(AID): #1HfqDNpW (ASM)
文章代碼(AID): #1HfqDNpW (ASM)