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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請高手指教,串口問題,謝謝。

  [復制鏈接]
跳轉到指定樓層
樓主
ID:119239 發表于 2016-5-8 11:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STC12C5A60S2單片機
用串口2,為何在KEI 中調不通,串口1可以
例程是官方的STC-ISP的范例都一樣,求解。串口1 的例程可以在串口窗中觀察到STC12C5A60S2\r\nUart2 Test !,串口2則不能,為何。

/*------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------------------------------------*/
/* --- STC12C5Axx Series MCU UART2 (8-bit/9-bit)Demo ---------------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ---------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966----------------------*/

/* If you want to use the program or the program referenced in the  */
/* article, please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define FOSC 11059200L      //System frequency
#define BAUD 115200         //UART baudrate
/*Define UART parity mode*/
#define NONE_PARITY     0   //None parity
#define ODD_PARITY      1   //Odd parity
#define EVEN_PARITY     2   //Even parity
#define MARK_PARITY     3   //Mark parity
#define SPACE_PARITY    4   //Space parity
#define PARITYBIT EVEN_PARITY   //Testing even parity
/*Declare SFR associated with the UART2 */
sfr AUXR  = 0x8e;           //Auxiliary register
sfr S2CON = 0x9a;           //UART2 control register
sfr S2BUF = 0x9b;           //UART2 data buffer
sfr BRT   = 0x9c;           //Baudrate generator
sfr IE2   = 0xaf;           //Interrupt control 2
#define S2RI  0x01          //S2CON.0
#define S2TI  0x02          //S2CON.1
#define S2RB8 0x04          //S2CON.2
#define S2TB8 0x08          //S2CON.3
bit busy;
void SendData(BYTE dat);
void SendString(char *s);
void main()
{
#if (PARITYBIT == NONE_PARITY)
    S2CON = 0x50;           //8-bit variable UART
#elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
    S2CON = 0xda;           //9-bit variable UART, parity bit initial to 1
#elif (PARITYBIT == SPACE_PARITY)
    S2CON = 0xd2;           //9-bit variable UART, parity bit initial to 0
#endif
    BRT = -(FOSC/32/BAUD);  //Set auto-reload vaule of baudrate generator
    AUXR = 0x14;            //Baudrate generator work in 1T mode
    IE2 = 0x01;             //Enable UART2 interrupt
    EA = 1;                 //Open master interrupt switch
    SendString("STC12C5A60S2\r\nUart2 Test !\r\n");
    while(1);
}
/*----------------------------
UART2 interrupt service routine
----------------------------*/
void Uart2() interrupt 8 using 1
{
    if (S2CON & S2RI)
    {
        S2CON &= ~S2RI;     //Clear receive interrupt flag
        P0 = S2BUF;         //P0 show UART data
        P2 = (S2CON & S2RB8);//P2.2 show parity bit
    }
    if (S2CON & S2TI)
    {
        S2CON &= ~S2TI;     //Clear transmit interrupt flag
        busy = 0;           //Clear transmit busy flag
    }
}
/*----------------------------
Send a byte data to UART
Input: dat (data to be sent)
Output:None
----------------------------*/
void SendData(BYTE dat)
{
    while (busy);           //Wait for the completion of the previous data is sent
    ACC = dat;              //Calculate the even parity bit P (PSW.0)
    if (P)                  //Set the parity bit according to P
    {
#if (PARITYBIT == ODD_PARITY)
        S2CON &= ~S2TB8;    //Set parity bit to 0
#elif (PARITYBIT == EVEN_PARITY)
        S2CON |= S2TB8;     //Set parity bit to 1
#endif
    }
    else
    {
#if (PARITYBIT == ODD_PARITY)
        S2CON |= S2TB8;     //Set parity bit to 1
#elif (PARITYBIT == EVEN_PARITY)
        S2CON &= ~S2TB8;    //Set parity bit to 0
#endif
    }
    busy = 1;
    S2BUF = ACC;            //Send data to UART2 buffer
}
/*----------------------------
Send a string to UART
Input: s (address of string)
Output:None
----------------------------*/
void SendString(char *s)
{
    while (*s)              //Check the end of the string
    {
        SendData(*s++);     //Send current char and increment string ptr
    }
}

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

使用道具 舉報

沙發
ID:119239 發表于 2016-5-8 23:11 | 只看該作者
請各位大蝦幫忙試一下把程序拷貝編譯運行,從串口2觀察窗能否看到輸出STC12C5A60S2\r\nUart2 Test !,謝謝,我試了幾天都是不行。
回復

使用道具 舉報

板凳
ID:119239 發表于 2016-5-8 23:13 | 只看該作者
請各位大蝦幫忙,謝謝。
回復

使用道具 舉報

地板
ID:119403 發表于 2016-5-8 23:40 | 只看該作者
是不是中斷優先級的問題
回復

使用道具 舉報

5#
ID:119409 發表于 2016-5-9 00:31 | 只看該作者
839246275 發表于 2016-5-8 23:40
是不是中斷優先級的問題

建議重新考慮一下中斷優先級
回復

使用道具 舉報

6#
ID:119239 發表于 2016-5-9 16:21 | 只看該作者
謝謝回復,我已把串口2設為最高優先級了(IP=0x01;   IPH2=0x01;),還是不行,是否有另外的原因?另外STC也太不嚴緊了,中斷優先級寄存器名稱究竟是IPH2還是IP2H,PDF資料寫的是IP2H,但頭件為IPH2,究竟是哪一個對?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:119573 發表于 2016-5-9 17:32 | 只看該作者
看看硬件?
回復

使用道具 舉報

8#
ID:119239 發表于 2016-5-9 20:36 | 只看該作者
謝謝回復,軟件都調不通,就不要想硬件了,增加優先級(IP2=0x01;IP2H=0x01;)時發現STC資料和STC-ISP今天給STC打過電話,

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:119239 發表于 2016-5-9 20:56 | 只看該作者
謝謝回復,軟件都調不通,不要指望硬件可以,我想用串口2控制GSM模塊。增加優先級(IP2=0x01;IP2H=0x01;)時發現STC-ISP頭文件與PDF文檔不符,一個寫IPH2,一個寫IP2H,今天給STC打過電話,客服人員說查證后會更正,至于技術問題則無法回復。各位大蝦是否可幫忙試一下STC-ISP的串口2例程拷到Keil中編譯后運行,從串口2窗中觀察到輸出“STC12C5A60S2”字符串,我試了N次都是程序進入死循環,串口1例程運行后則可從串口1窗中觀察到輸出的字行串,不知何解,請各位幫忙,先謝了。

評分

參與人數 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

10#
ID:147831 發表于 2016-11-14 17:25 | 只看該作者
樓主,請問問題你解決了嗎,我也遇到跟你一樣的問題,用串口調試助手看,串口2完全沒輸出,串口1能正常工作輸出。不知道什么問題,求幫助。。
回復

使用道具 舉報

11#
ID:147993 發表于 2016-11-15 13:12 | 只看該作者
可以把TXD,RXD短接看看有沒有數據收到
回復

使用道具 舉報

12#
ID:148033 發表于 2016-11-15 14:32 來自手機 | 只看該作者
txrx短接的方法比較好
回復

使用道具 舉報

13#
ID:147831 發表于 2016-11-16 09:01 | 只看該作者
宇105 發表于 2016-11-15 14:32
txrx短接的方法比較好

大神,你好,什么意思?是P3.0跟p3.1短接?還是P1.2跟P1.3短接?我兩個都試過了,還是沒輸出
回復

使用道具 舉報

14#
ID:148202 發表于 2016-11-16 10:27 | 只看該作者
先試試自發自收能不能行
回復

使用道具 舉報

15#
ID:148069 發表于 2016-11-16 14:07 | 只看該作者
不懂誒
回復

使用道具 舉報

16#
ID:147831 發表于 2016-11-19 21:46 | 只看該作者
wjsxht 發表于 2016-11-16 10:27
先試試自發自收能不能行

自發自收都不行,串口2完全沒輸出。
回復

使用道具 舉報

17#
ID:154834 發表于 2016-12-14 21:21 | 只看該作者
我用STC12控制GPRS模塊,給模塊發送AT指令,始終無法收到GPRS的返回數據。單片機的TXD和RXT短接,能正確收到發送的數據,GPRS模塊測試也沒問題,但是單片機和GPRS之間就是無法通信,這個問題困擾我三天了,求大神幫忙!
回復

使用道具 舉報

18#
ID:154568 發表于 2016-12-15 20:39 | 只看該作者
認真思考,搜索一下
回復

使用道具 舉報

19#
ID:97424 發表于 2016-12-15 21:25 | 只看該作者
真是難題呀,換COM口了么
回復

使用道具 舉報

20#
ID:153199 發表于 2016-12-16 16:21 | 只看該作者
你用什么編譯的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区在线免费观看 | 国内精品伊人久久久久网站 | a a毛片 | 日本三级电影免费 | 97avcc | 九九热精品免费 | 久久99精品久久久久婷婷 | 在线免费小视频 | 99精品视频在线观看免费播放 | 高清免费在线 | 一区二区三区在线看 | 九九久久精品视频 | 91久久久久久久久久久久久 | 精品欧美一区二区三区久久久 | 精品久久99 | 亚洲精品国产区 | 欧美电影一区 | 欧美激情va永久在线播放 | 欧美高清dvd | 人人天天操 | 蜜桃传媒av | 亚洲国产精品激情在线观看 | 日本国产精品视频 | 日韩中文字幕一区二区三区 | 国产在线精品一区二区三区 | 免费一级黄色录像 | 伊人网国产 | 亚洲精品久久久久久久不卡四虎 | 久久亚洲天堂 | 91人人在线| 国产精品一区在线 | 91麻豆精品国产91久久久久久久久 | 亚洲福利一区二区 | 亚洲天堂中文字幕 | av入口| 成人久久18免费网站麻豆 | 黄网站涩免费蜜桃网站 | 性一交一乱一透一a级 | 天天曰夜夜 | www.国产精| h在线播放|