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

標題: STC15W4K系列單片機串口2與串口1收發問題 [打印本頁]

作者: 薄情yi    時間: 2017-10-1 17:07
標題: STC15W4K系列單片機串口2與串口1收發問題
最近想實現一個功能,就是在串口助手上發送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;
   }
   }
}

作者: HUA1314HL    時間: 2018-12-5 19:26
你后來怎么解決的?
作者: 英語    時間: 2019-5-24 15:26
IE2 |= 0x01;改一下,改為IE2 |= 0x10;試試
作者: 英語    時間: 2019-5-24 15:27
IE2 |= 0x01;改為IE2 |= 0x10;




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美久久久网站 | 国产精品久久久久久久久久免费看 | 亚洲精品久久久一区二区三区 | 亚洲一区二区视频在线观看 | 在线播放国产一区二区三区 | 亚洲www啪成人一区二区 | 欧美亚洲视频 | 99精品久久 | 日韩精品国产精品 | 亚洲欧洲日韩 | 91在线看片 | 中文字幕一级毛片视频 | 伊人成人免费视频 | 国产激情片在线观看 | 黄网站免费入口 | 色婷婷一区二区三区四区 | 成人精品影院 | 免费看黄视频网站 | 亚洲成人动漫在线观看 | 国产精品区一区二区三区 | 国产三级日本三级 | 免费午夜电影 | 涩涩视频网站在线观看 | 高清一区二区三区 | 中文字幕一区二区在线观看 | 中文字幕av网 | 国产一级一级毛片 | 成人欧美一区二区三区在线播放 | 最新中文字幕在线播放 | 九九色综合 | 超碰在线人 | 精品一区二区免费视频 | 久久精品久久精品 | 欧美亚州综合 | 久久久久久成人网 | 成人在线免费观看 | 久久久久久久久毛片 | 日韩精品久久久 | 中文字幕中文字幕 | 91不卡| 夜夜爽99久久国产综合精品女不卡 |