久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8987|回復(fù): 7
收起左側(cè)

PC機(jī)發(fā)送ABCD給單片機(jī)串口1接收到數(shù)據(jù)后由串口2轉(zhuǎn)發(fā)給PC機(jī)得到的是ABC。是不是數(shù)據(jù)...

[復(fù)制鏈接]
ID:142973 發(fā)表于 2016-11-13 15:44 | 顯示全部樓層 |閱讀模式
本帖最后由 幻聽(tīng)你的溫柔 于 2016-11-13 15:51 編輯

PC機(jī)發(fā)送ABCD給單片機(jī)串口1接收到數(shù)據(jù)后由串口2轉(zhuǎn)發(fā)給PC機(jī)得到的是ABC。是不是數(shù)據(jù)丟失啦,,處理接收的速度比處理數(shù)據(jù)的速度要快才不會(huì)出現(xiàn)丟失數(shù)據(jù)的情況(這樣要怎么該程序呢)單片機(jī)通過(guò)串口一接收數(shù)據(jù),通過(guò)定時(shí)器中斷來(lái)判斷是否接收數(shù)據(jù)完畢,,接收任意字節(jié)的數(shù)據(jù)
/************************************************

* 芯    片     : STC12C5A60S2
* 時(shí)    鐘  :11.0592MHz
* 開(kāi)發(fā)環(huán)境  :Keil uVision V4.00a
* 備    注  :
  */
//文件包含
#include "stc12c5a60s2.h"

unsigned char receive_number[]={0};//接收串口發(fā)送來(lái)的數(shù)據(jù)的數(shù)組
unsigned char  rec1_count=0;//串口1接收計(jì)數(shù)器
unsigned int  rec1_flag=0; //串口1接收標(biāo)志位

//全局變量
unsigned int p_send=0;
unsigned char ser_receive;  //串口1接收到的數(shù)據(jù)
unsigned char flag1,flag2,temp1,temp2,temp3,k,h,i=0;
//函數(shù)聲明
void Uart2_Init(void);        //串口初始化
void Timer0_Init();      //定時(shí)器0初始化
void Uart2_SendChar(unsigned char Udat);
void Uart2_SendString(unsigned char *PBuf,unsigned char a);
void UART_1SendOneByte(unsigned char c);
void UART_1Sendstr(unsigned char *s,unsigned char b);
void Display_Menu(void);

void delayms(unsigned int n)  ///1毫秒
{
   unsigned int i;
  while(n--)
  {
      for ( i=0;i<113;i++ );
  }
}

//定時(shí)器0初始化
void Timer0_Init()  //0微秒@11.0592MHz//定時(shí)器0 工作方式2
{
AUXR |= 0x80;  //定時(shí)器時(shí)鐘1T模式
TMOD &= 0xF0;  //設(shè)置定時(shí)器模式
TMOD |= 0x02;  //設(shè)置定時(shí)器模 TMOD=0x01;
TL0 = 0x00;  //設(shè)置定時(shí)初值
TH0 = 0x00;  //設(shè)置定時(shí)重載值
TF0 = 0;  //清除TF0標(biāo)志
TR0 = 0;  //定時(shí)器0開(kāi)始計(jì)時(shí)
ET0=1;
    EA=1;
}
///
/***********************************************
函數(shù)名稱:Uart2_Init
功    能:串口2初始化函數(shù)
入口參數(shù):無(wú)
返 回 值:無(wú)
備    注:STC12C5A60S2單片機(jī)串口2
          只能選擇獨(dú)立的波特率發(fā)生器,
    不能使用定時(shí)器1做為波特率發(fā)生器
************************************************/
void UartInit(void)  [url=]//115200bps@11.0592MHz[/url]
{
PCON &= 0x7F;  //波特率不倍速
SCON = 0x50;  //8位數(shù)據(jù),可變波特率
AUXR |= 0x40;  //定時(shí)器1時(shí)鐘為Fosc,即1T
AUXR &= 0xFE;  //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F;  //清除定時(shí)器1模式位
TMOD |= 0x20;  //設(shè)定定時(shí)器1為8位自動(dòng)重裝方式
//TL1 = 0x00;  //設(shè)定定時(shí)初值
    //TH1 = 0x00;  //設(shè)定定時(shí)器重裝值
TL1 = 0xFD;  //設(shè)定定時(shí)初值
TH1 = 0xFD;  //設(shè)定定時(shí)器重裝值
ET1 = 0;  //禁止定時(shí)器1中斷
TR1 = 1;  //啟動(dòng)定時(shí)器1
REN=1; //允許串口接收
ES=1;  //開(kāi)串口 中斷
    EA=1;
//// S2BUF
AUXR &= 0xF7;  //波特率不倍速
S2CON = 0x50;  //8位數(shù)據(jù),可變波特率
AUXR |= 0x04;  //獨(dú)立波特率發(fā)生器時(shí)鐘為Fosc,即1T
BRT = 0xFD;  //設(shè)定獨(dú)立波特率發(fā)生器重裝值
AUXR |= 0x10;  //啟動(dòng)獨(dú)立波特率發(fā)生器
IE2=0x01;    //允許串口2中斷
}
//////////////
/****************串行口1發(fā)送****************/
void UART_1SendOneByte(unsigned char c)
{  
    SBUF = c;
    while(!TI);    //若TI=0,在此等待
    TI = 0;  
}
void UART_1Sendstr(unsigned char *s,unsigned char b)
{
  while(b)   // \0表示字符串結(jié)束標(biāo)志,通過(guò)檢測(cè)字符串末尾
{
  UART_1SendOneByte(*s); //發(fā)送一個(gè)字符
  s++;//移動(dòng)到下一個(gè)字符
  b--;
}
}
/////////////
/***********************************************
*函數(shù)名稱:Uart2_SendChar
*功    能:串口2發(fā)送單個(gè)字符函數(shù)
*入口參數(shù):Udat:欲發(fā)送的數(shù)據(jù)
*返 回 值:無(wú)
*備    注:無(wú)
************************************************/
void Uart2_SendChar(unsigned char Udat)
{  ES=0;
S2BUF=Udat;    //將數(shù)據(jù)放入發(fā)送緩沖區(qū)
while(!(S2CON&0x02)); //等待發(fā)送完成
    S2CON=S2CON & 0xfd;     //清零S2TI  
ES=1;
}
/***********************************************
*函數(shù)名稱:Uart2_SendString
*功    能:串口發(fā)送字符串函數(shù)
*入口參數(shù):*PBuf:指向字符串的指針            
*返 回 值:無(wú)
*備    注:串口發(fā)送時(shí)需禁止全局中斷,防止出錯(cuò)
************************************************/
void Uart2_SendString(unsigned char *PBuf,unsigned char a)
{
    ES=0;      //關(guān)閉中斷,防止對(duì)發(fā)送緩沖區(qū)影響
    while(a)      //未到字符串末尾
    {
      Uart2_SendChar(*PBuf);
    PBuf++;
  a--;
    }
    ES=1;
}
/////////
/************串行口1中斷處理函數(shù)*************/
void UART_1Interrupt(void) interrupt 4
{   
    if(RI==1)
        {
                RI = 0;
                //定時(shí)器從0開(kāi)始計(jì)數(shù)
                // TF1=0;
                //開(kāi)定時(shí)器,定時(shí)器開(kāi)始計(jì)數(shù)
       TR0=1;
       TH0= 0x00;
                TL0= 0x00;
                if(SBUF!=0xff)//接收數(shù)據(jù)
                {   
      receive_number[rec1_count++]=SBUF;
     
                }
   
        }
}
/*******************串行口2中斷處理函數(shù)*****************************/
void Uart2_ISR(void) interrupt 8
{
   
if(S2CON&0x01)        //發(fā)送和接收共用一個(gè)中斷向量,需在程序中判斷
{
  S2CON=S2CON & 0xfe;         //串口接收中斷標(biāo)記需軟件清零
}
}

void Timer0_Rountine(void) interrupt 1 //定時(shí)器0 工作方式2
{
   
   rec1_flag=1; ////當(dāng)定時(shí)器0溢出中斷時(shí)讓rec1_flag=1。
   
}
    //主函數(shù)
void main(void)
{
   
  unsigned char j;
  UartInit();     //串口2初始化
Timer0_Init();      //定時(shí)器0初始化
delayms(20);
  while(1)
{

     if(rec1_flag==1 )      //如果是1
            {     
     ES=0;
                 rec1_flag=0;      
                TR0=0;      
      
                 while(p_send<=rec1_count)//判斷發(fā)送指針的值是否小于全局計(jì)數(shù)器
                 {        //如果是
                     
                    Uart2_SendChar(receive_number[p_send]);//開(kāi)始發(fā)送數(shù)據(jù)
                    p_send=p_send+1;   
              
                 }
   
     p_send=0; rec1_count=0;
                 ES=1;
                                   //如果不是
                                    //停止發(fā)送數(shù)據(jù)
             }                       //開(kāi)串口1中斷

     
  }

}

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:142973 發(fā)表于 2016-11-13 15:50 | 顯示全部樓層
單片機(jī)通過(guò)串口一接收數(shù)據(jù),通過(guò)定時(shí)器中斷來(lái)判斷是否接收數(shù)據(jù)完畢,,接收任意字節(jié)的數(shù)據(jù),,,,求大神
回復(fù)

使用道具 舉報(bào)

ID:140371 發(fā)表于 2016-11-13 18:46 來(lái)自手機(jī) | 顯示全部樓層
幻聽(tīng)你的溫柔 發(fā)表于 2016-11-13 15:50
單片機(jī)通過(guò)串口一接收數(shù)據(jù),通過(guò)定時(shí)器中斷來(lái)判斷是否接收數(shù)據(jù)完畢,,接收任意字節(jié)的數(shù)據(jù),,,,求大神

接收數(shù)據(jù)完成。與定時(shí)器有什関係。一般而言是在傳輸數(shù)組中有判斷數(shù)組已結(jié)束的協(xié)定。
回復(fù)

使用道具 舉報(bào)

ID:142973 發(fā)表于 2016-11-13 20:11 | 顯示全部樓層
a0931727149 發(fā)表于 2016-11-13 18:46
接收數(shù)據(jù)完成。與定時(shí)器有什関係。一般而言是在傳輸數(shù)組中有判斷數(shù)組已結(jié)束的協(xié)定。

但是我接收的是任意數(shù)據(jù),,不確定的數(shù)據(jù)額
回復(fù)

使用道具 舉報(bào)

ID:140371 發(fā)表于 2016-11-14 08:09 | 顯示全部樓層
,,接收任意字節(jié)的數(shù)據(jù)(不確定的數(shù)據(jù)額)是否到達(dá)這一串?dāng)?shù)據(jù)的最後ㄧ個(gè)數(shù)據(jù)... 跟定時(shí)器無(wú)關(guān) ,,例如串列使用 Time 1 來(lái)控制傳輸率  ...傳輸一個(gè)數(shù)據(jù)時(shí) .與其他計(jì)時(shí)器皆無(wú)關(guān)...
一串?dāng)?shù)據(jù)(多個(gè)數(shù)據(jù))的傳輸是否是到達(dá)最後一個(gè)數(shù)據(jù)...要靠傳輸協(xié)定(傳輸規(guī)則)來(lái)判斷....
又題意:串口1接收到數(shù)據(jù)后由串口2轉(zhuǎn)發(fā).....好像沒(méi)有必要知道傳輸?shù)阶钺岬囊粋(gè)數(shù)據(jù).....改成串口1接收到數(shù)據(jù)驅(qū)動(dòng)串口2 發(fā)送....如何?
回復(fù)

使用道具 舉報(bào)

ID:142973 發(fā)表于 2016-11-14 10:27 | 顯示全部樓層
a0931727149 發(fā)表于 2016-11-14 08:09
,,接收任意字節(jié)的數(shù)據(jù)(不確定的數(shù)據(jù)額)是否到達(dá)這一串?dāng)?shù)據(jù)的最後ㄧ個(gè)數(shù)據(jù)... 跟定時(shí)器無(wú)關(guān) ,,例如串列使 ...

感覺(jué)這不是我想要的
,,,,謝謝
回復(fù)

使用道具 舉報(bào)

ID:140371 發(fā)表于 2016-11-14 12:13 | 顯示全部樓層
看過(guò)你的程式......這樣解讀不知對(duì)嗎? ... 當(dāng)串口1未再設(shè)定時(shí)間內(nèi)繼續(xù)接收到數(shù)據(jù),則將接收到的數(shù)據(jù)由串口2傳送出去
您在程式中 宣告這個(gè)數(shù)組
unsigned char receive_number[]={0};//接收串口發(fā)送來(lái)的數(shù)據(jù)的數(shù)組
我覺(jué)得該給個(gè)長(zhǎng)度...
修改試試看
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2016-11-14 18:19 | 顯示全部樓層
本帖最后由 zl2168 于 2016-11-14 18:21 編輯

實(shí)驗(yàn)16  單片機(jī)與PC機(jī)虛擬串行通信


虛擬串行通信說(shuō)明   


添加虛擬串口   


下載“串口調(diào)試助手”   


電路設(shè)計(jì)   


程序設(shè)計(jì)   


Keil調(diào)試   


Proteus仿真   


Proteus仿真一下,確認(rèn)有效。
實(shí)驗(yàn)16 與PC機(jī)虛擬串行通信.rar (151.41 KB, 下載次數(shù): 19)
pc.jpg


以上摘自張志良編著《80C51單片機(jī)實(shí)用教程》ISBN978-7-04-044532-9,高教社出版。     書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。




回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 手机看黄av免费网址 | 久久一区二区视频 | 国产黄色小视频在线观看 | 久草精品视频 | 最新av在线网址 | 成人久久久久 | 91麻豆精品国产91久久久久久 | 亚洲精品乱码 | 国产91在线 | 欧美 | 黄色毛片一级 | 午夜影院 | 亚洲国产精品久久 | 国产成人小视频 | 精品三区 | 性欧美hd | 一色一黄视频 | 成人在线小视频 | 亚洲精品一二区 | 久久久久国产一区二区三区四区 | 国产高清免费在线 | 久久久亚洲综合 | 欧美日韩国产高清 | 五月激情六月婷婷 | www.中文字幕.com | 日韩欧美中文字幕在线视频 | 久久久亚洲 | 国产视频中文字幕 | 欧美国产日韩在线观看 | 国产一区日韩在线 | 日韩午夜在线观看 | 美女久久视频 | 亚洲欧美日韩高清 | 福利一区二区在线 | 在线观看av不卡 | 一区二区av | 久久99精品久久久 | 女人毛片a毛片久久人人 | 男女污污网站 | 国产精品视频免费看 | 国产精品久久久久久久午夜 | 欧美日韩国产精品一区 |