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