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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15W4K系列單片機串口2與串口1收發問題

[復制鏈接]
回帖獎勵 5 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:189897 發表于 2017-10-1 17:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近想實現一個功能,就是在串口助手上發送05 0B  D5 C5 C8 FD這一串指令,使其在液晶上顯示張三兩字,05代表了數據長度 就是說后面還跟上5個數據;0B是命令字,能夠控制液晶上顯示不同的命令;D5 C5 C8 FD是取字模可以得到張三這個名字。但是我用串口1是可以實現這個功能的,我想改成串口2就不行了,出現錯誤;想讓大神們幫忙看看。(串口1的代碼與這個相似,我只不過把串口初始化函數和串口中斷接收函數變化了,本質沒變)
串口2的實現代碼:
#include "STC15Fxxxx.h"
#include "INTRINS.H"
#include "stdio.h"
#include "string.h"
#include "COGDriver.h"
#include "font.h"
#include "W25Qxx.h"
#define uchar unsigned char
#define OSC_FREQ     11059200L //晶振是11.0592
#define BAUD_115200  115200    //串口波特率
#define   S2REN   0x10  //S2CON.5
#define   S2RI    0x01  //S2CON.0
#define   S2TI    0x02  //S2CON.1
#define delay     1            //定義延時時間
#define CALL_isr_UART()  TI = 1
#define FALSE   0
#define TRUE    1
sbit SPEAKER  = P1^3;
unsigned int counter=0;
unsigned long faddress=0;
//unsigned char tishi=0;
unsigned char xdata tempBuffer[255],RevBuffer[255];
bit CmdValid,flagg=0;
void Delay(int num);
void Delaylong(unsigned int t);
void Delaylong(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
{
  for(j=0;j<10;j++);
}
}
// 串口初始化函數
void Uart2Init(void)
{
S2CON = 0x50;  //8位數據,可變波特率
AUXR |= 0x04;  //定時器2時鐘為Fosc,即1T
T2L = 0xE8;    //設定定時初值
T2H = 0xFF;    //設定定時初值
AUXR |= 0x10;  //啟動定時器2

IE2 |= 0x01;    //使能串口2中斷
S2CON |= S2REN; //允許串行口2接收
}
/*************接收和發送中斷**********************************************/
void isr_UART2(void) interrupt 8 //using 0
{
   unsigned int j=0;
    int len,i;  
   if(S2CON & S2RI)
   {  
   len=(int)S2BUF;        
    S2CON &=~S2RI;
   for(i=0;i<len;i++)
   {
    while(!S2CON & S2RI)
    {
     j++;
     if(j>10000)
     {
        break;
     }
    }
    if(j<10000)
    {
     RevBuffer[i]=S2BUF;
     S2CON &= ~S2RI;
     j=0;
    }
    else
    {
       break;
    }
   }
   if(i==len)
   {
     S2CON |= S2REN;
    CmdValid=1;   
   }
  }
  else
  if(S2CON & S2TI)
  {
   S2CON &= ~S2TI;
   len=RevBuffer[0];
   for(i=0;i<len+1;i++)   //注意:此處只發送了一個命令字節,原來是for(i=0;i<len+1;i++)
   {
    S2BUF=RevBuffer[i];
    while(!S2CON & S2TI);
      S2CON &= ~S2TI;  
   }
   S2CON |= S2REN;
}
}
//執行下載操作
/*****************************/
void cmd_execution(void)
{
    unsigned char cmd,i;
   cmd = RevBuffer[0];
   switch(cmd)
   {
      case 0x0B:      
            LCD_Clr();//清除
//           Print(2,48,kaiti,&RevBuffer[1]);
              Print(4,32,kaiti,"連接成功!");
        CALL_isr_UART();        
              break;
       case 0xFC:      
             LCD_Clr();//清屏
             Print(2,40,kaiti,&RevBuffer[1]);
             Print(4,16,kaiti,"該卡未注冊!");
             CALL_isr_UART() ;      
              break;   
      case 0xFA:
             LCD_Clr();//清屏
             Print(2,40,kaiti,&RevBuffer[1]);
             Print(4,16,kaiti,"該卡已掛失!");
             CALL_isr_UART() ;
              break;
     case 0xFE:   
               LCD_Clr();//清屏
             Print(2,48,kaiti,&RevBuffer[1]);
               Print(4,32,kaiti,"簽到成功!");
                CALL_isr_UART() ;      
              break;
      case 0xFD:
               LCD_Clr();//清屏
             Print(2,40,kaiti,&RevBuffer[1]);
               Print(4,16,kaiti,"今天已簽到!");
                CALL_isr_UART() ;                          
              break;   
      case 0xFF:   
               LCD_Clr();//清屏
             Print(2,40,kaiti,&RevBuffer[1]);
               Print(4,16,kaiti,"服務器斷開!");
                CALL_isr_UART() ;
                break;
}     
}
void PortInit()
{
   P0M1 =0X00;
   P0M0 =0X00;
   P1M1 =0X00;
   P1M0 =0X00;////P1.2、P1.3強驅動模式,P1.2繼電器,P1.3蜂鳴器
   P2M1 =0X00;
   P2M0 =0X00;
   P3M1 =0X00;
   P3M0 =0X00;
   P4M1 =0X00;
   P4M0 =0X00;
   P5M1 =0X00;
   P5M0 =0X00;
}
/*******************************************************************************/
void main(void) //主函數
{
Delaylong(500);
AUXR =0x00;
PortInit();
Uart2Init();

S2BUF=0Xaa;             //送入緩沖區
  while(!(S2CON & S2TI)); //等待發送完畢
S2CON &= ~S2TI;   
COG_Initialize();       //設置液晶顯示器
  LCD_Clr();              //清屏

Delaylong(65500);
LCD_Clr();
// for(i=0;i<257;i++)
// {
//  RevBuffer[i]=0;
// }

Delaylong(50);
Print(2,32,kaiti,"歡迎使用");
Print(0,11,kaiti,"502嵌入實驗室");
Print(4,32,kaiti,"簽到系統");
Print(6,16,kaiti,"祝你學業有成");
  counter=0;
  faddress=0;

  EA =1;

  while(1)
  {
     if (CmdValid)
     {   
          CmdValid = FALSE;   
          cmd_execution();
          S2CON |= S2REN;
   }
   }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:323102 發表于 2018-12-5 19:26 | 只看該作者
你后來怎么解決的?
回復

使用道具 舉報

板凳
ID:147114 發表于 2019-5-24 15:26 | 只看該作者
IE2 |= 0x01;改一下,改為IE2 |= 0x10;試試
回復

使用道具 舉報

地板
ID:147114 發表于 2019-5-24 15:27 | 只看該作者
IE2 |= 0x01;改為IE2 |= 0x10;
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲图片视频一区 | 在线免费观看视频黄 | 亚洲一区二区三区在线播放 | 亚洲 欧美 日韩 精品 | 中文字幕在线不卡播放 | 久久久久久久97 | 高清18麻豆| 国产精品一区久久久 | 国产精品资源在线 | 成人永久免费视频 | 国产成视频在线观看 | av看片网站| 青春草国产 | 国产精品精品久久久 | 中文字幕一区在线观看视频 | 日韩精品人成在线播放 | 免费中文字幕 | 国产成人精品一区二区三区网站观看 | 亚洲韩国精品 | 密桃av| 欧美最猛黑人xxxx黑人 | 波多野结衣在线观看一区二区三区 | 中文字幕国产在线 | 午夜伦理影院 | 综合在线视频 | 成年人在线观看 | 成人在线激情 | 午夜私人影院 | caoporn国产精品免费公开 | 毛色毛片免费看 | 亚洲综合区 | 北条麻妃一区二区三区在线观看 | 成人免费在线播放 | 青草青草久热精品视频在线观看 | 日韩精品一区二区三区第95 | 国产一区二区三区 | 欧美日韩网站 | 一区二区三区播放 | 免费黄色日本 | 国产精品s色 | 欧美精品在线一区 |