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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6347|回復: 0
打印 上一主題 下一主題
收起左側

一個串口調試的問題,板凳~~

[復制鏈接]
跳轉到指定樓層
樓主
ID:14235 發表于 2009-6-14 12:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

版主和各位大蝦來幫我解決下:

我想實現的功能是:再PC機端輸入任意一個數n(0-99之間),然后通過串口往下傳,當單片機接收到這個N以后,做運算m=n*2,并把m再通過串口上傳至PC機端。(本來想的很簡單直接*2,不過PC端到單片機端的數據存在著“字符”ASCII碼和數值之間的轉換,使得問題變的有點麻煩...)望版主和各位大俠賜教!(程序是基于KEILC寫的、硬件是基于C51單片機的、串口調試的PC端是用串口調試助手的,所以數值每次只能一個一個上下串...)

程序附上,問題應該不少,望斑竹或大蝦幫幫忙,謝謝!

 

 

#include <REG52.H>                          
#include <stdio.h>
#include <string.h>

unsigned char flag=0;
  
                
/*主程序*/
void main (void)
{


    SCON  = 0x50;          /* SCON: 模式 1, 8-bit UART, 使能接收         */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
    TH1   = 0xFD;               /* TH1:  reload value for 9600 baud @ 11.0592MHz   */
    TR1   = 1;                  /* TR1:  timer 1 run                          */
    EA    = 1;                  /*打開總中斷*/
    ES    = 1;                  /*打開串口中斷*/

while (1)                       /*主循環不做任何動作*/
    {
    }
}


void timer0_int(void) interrupt 1  //定時器定時5ms
{
     TH0=0xee;
     TL0=0x00;
     while(TF0!=1);
      {flag=1;                   //設置標志位,當標志位為1時表示數據已經接收完畢,否者標志位為初始值0
       TF0=0;}
}

 

void UART_SER (void) interrupt 4 //串行中斷服務程序
{
    unsigned char a,b;          //定義臨時變量
   //unsigned char Temp;
   int i;
   unsigned char SendTemp[3]="";
   unsigned char SendNumb;


 if(RI)                        //判斷是接收中斷產生
  {
    RI=0;                      //標志位清零

    timer0_int();            //這里出錯了,錯誤提示不能調用一個中斷功能

    if(flag==1)              //當標志位==1時,表示數據接收完畢
    { SendTemp[0]=SBUF;      //此時把SBUF內的值放入SendTemp[0]
      SendNumb=1;}
     else                    //當標志位==0時,表示數據沒有接收完
     {SendTemp[SendNumb]=SBUF;//此時把SBUF內的值放入SendTemp[1]
      SendNumb++;}


      a=(SendTemp[0]-48)+(SendTemp[1]-48)*10;  //把2個數進行ASCII碼到數值的轉換,并組成由PC輸入的實際的數值,賦予a
    b=a*2;                                   //令b=2倍a
      SendTemp[0]=a%10+48;                     //拆解數值b,并轉喊道ASCII碼形式,準備上傳至PC端
      SendTemp[1]=a/10+48;
   for(i=0;i<3;i++)
    {
     SBUF=SendTemp;
 
        if(TI)                        //如果是發送標志位,清零
        TI=0;
    }
   }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级毛片视频 | 搞黄网站在线观看 | 久久久久国产一区二区三区四区 | 欧美一级欧美三级在线观看 | 美女久久视频 | 超碰在线网站 | 欧美在线一二三 | 天天操天天干天天爽 | 依人成人 | 免费影视在线观看 | 欧美国产精品一区二区三区 | 色噜噜亚洲男人的天堂 | 欧美成人激情 | 亚洲精品1区| 深夜爽视频 | www.47久久青青 | 亚洲福利一区 | 成人亚洲片 | 一区二区三区精品视频 | 久久视频精品 | 欧美涩涩网 | 成人三级视频 | 中文字幕视频在线观看 | 国产成人免费视频网站高清观看视频 | 亚洲97| 91视视频在线观看入口直接观看 | 男女免费观看在线爽爽爽视频 | 成人在线观看免费 | 波多野结衣精品在线 | 91久久国产综合久久91精品网站 | 香蕉大人久久国产成人av | 在线毛片网 | 美女国内精品自产拍在线播放 | 亚洲综合色视频在线观看 | 欧美久久影院 | 久久不卡日韩美女 | 成人福利在线视频 | 亚洲免费三级 | 久久久久久久久国产成人免费 | 成人影视网 | www亚洲精品|