用藍牙模塊通信,和開發學習板。板子和單片機都沒有壞。燒錄也成功了。RXT對的單片機的RXT,TXD對單片機的TDXD.ER腳通了VCC的電。用KEil模擬仿真,手機可以的到Success.
可是換成RXD對單片機的RTXD.TXD對單片機的RXD.仿真也沒有數據是怎么回事?
剛自學。不知道那有問題。求教各位大神- #include "reg52.h"
- #include "intrins.h"
- unsigned char SenData,Flag;
- char code str1[]="Success";
- char code str2[]="Error";
- void send_str();
- void InitUART(void);
- void send_str2();
- void delayms(unsigned char ms);
- void send_char(unsigned char txd);
- void InitUART(void)
- {
- /*******************設定串口**********************/
- SCON=0x50; //設置為工作方式1
- TMOD=0x20; //設置計數器工作方式2
- PCON =0x80; //波特率加倍
- TH1=0xFA; //計數器初始值設置,注意波特率是9600的
- TL1=TH1;
- ES=1; //打開接收中斷
- EA=1; //打開總中斷
- TR1=1; //打開計數器
- /******************設定中斷**********************/
- }
- void main() //主函數
- {
- InitUART();
- while(1){
- if(Flag==1)
- {
- ES = 0;
- delayms(50);
- //----------------------該段即對接收的數據進行處理
- if(SenData==97)//97為字符a的ascii
- {
- delayms(10);//延時去抖動
- send_str();//發送數據
- }
- else
- {
- delayms(10);
- send_str2();
- }
- Flag=0;//數據處理完畢后將標志位置0,表示沒有新數據要處理
- }
- ES = 1;
- }
- }
- void ser_int()interrupt 4//接收字符串
- {
- if(RI==1)//RI接受中斷標志
- {
- SenData = SBUF ;
- RI=0;//清除標志.
- Flag =1;//標志位置1表示有新數據進來
- }
- else
- TI = 0;
- }
- void send_str()//發送字串
- {
- unsigned char i=0;
- while(str1[ i]!='\0')
- {
- SBUF =str1[ i];
- while(!TI);//等待數據傳送
- TI=0;//清除數據傳輸標志
- i++;//下一個字符串
- }
- }
- void send_str2()//發送字串
- {
- unsigned char i=0;
- while(str2[ i]!='\0')
- {
- SBUF =str2[ i];
- while(!TI);//等待數據傳送
- TI=0;//清除數據傳輸標志
- i++;//下一個字符串
- }
- }
- void delayms( unsigned char ms)//延時子程序
- {
- unsigned char i;
- while(ms--)
- {
- for(i=0;i<120;i++);
- }
- }
復制代碼
|