打印
[技术问答]

请教新唐N76E003串口接收识别问题

[复制链接]
398|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2020-12-11 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想用N76E003识别电脑的串口指令OPEN、CLOSE,作出LED-P12灯亮灭的响应目前用BSP里面的源码,只收正常收到电脑发过来的一个字节,超过一个字节就乱码了
#include <stdio.h>
#include "N76E003.h"
#include "SFR_Macro.h"
#include "Common.h"
#include "Delay.h"
#include "Function_Define.h"

#define BUFFER_SIZE                16

UINT8  UART_BUFFER[BUFFER_SIZE],temp;
UINT16 u16CNT=0,u16CNT1=0;
bit riflag;

/**
* FUNCTION_PURPOSE: serial interrupt, echo received data.
* FUNCTION_INPUTS: P3.0(RXD) serial input
* FUNCTION_OUTPUTS: P3.1(TXD) serial output
*/
void serial_IT(void) interrupt 4
{
    if (RI)
    {                                       /* if reception occur */
        clr_RI;                             /* clear reception flag for next reception */
        UART_BUFFER[u16CNT] = SBUF;
        u16CNT ++;
                                riflag =1;
    }
    if(TI)
    {
        clr_TI;                             /* if emission occur */
    }
}
/************************************************************************************************************
*    Main function
************************************************************************************************************/
void main (void)
{

   
    P06_Quasi_Mode;                                                       //Set UART GPIO are Quasi Mode
                P07_Quasi_Mode;
    InitialUART0_Timer1(115200);            /* 115200 Baud Rate from timer1*/
        
    SCON = 0xD2;                                                                                                                // Special setting the mode 3
   
    set_ES;                                 //enable UART interrupt
    set_EA;                                 //enable global interrupt
    clr_TB8;
    Send_Data_To_UART0(0x53);                                                                //Send "start" ascii code show reset initial status
          Send_Data_To_UART0(0x74);
          Send_Data_To_UART0(0x61);
          Send_Data_To_UART0(0x72);
          Send_Data_To_UART0(0x74);
        
    while(1)
                {
                        if (riflag)
                        {
                                temp = SBUF;                                                                                                //This part send the receive data from RXD to TXD
                                Send_Data_To_UART0(temp);
                                riflag = 0;
                        }
                }
        
}

使用特权

评论回复
沙发
jasontu| | 2020-12-17 09:42 | 只看该作者
没看到led控制,
为什麽接收有2个地方?
UART_BUFFER[u16CNT] = SBUF;
temp = SBUF;                  

使用特权

评论回复
板凳
keaibukelian| | 2021-1-8 20:36 | 只看该作者
每次的现象一样吗

使用特权

评论回复
地板
labasi| | 2021-1-8 20:38 | 只看该作者
乱码也是随机的吗

使用特权

评论回复
5
paotangsan| | 2021-1-8 20:43 | 只看该作者
先测一下有没有可靠接地

使用特权

评论回复
6
renzheshengui| | 2021-1-8 21:10 | 只看该作者
有两个地方进行接收?

使用特权

评论回复
7
wakayi| | 2021-1-8 21:20 | 只看该作者
是不是重复赋值了啊

使用特权

评论回复
8
内政奇才| | 2021-1-22 11:03 | 只看该作者

要看你送過來的波形,你要收到波形應該是1收1發。
連續的波形在收的話,有可能是錯的。

使用特权

评论回复
9
麻花油条| | 2021-1-22 11:04 | 只看该作者

先定义
#ifndef FOSC_160000//定义成16mhz
#define FOSC_160000
#endif
然后波特率改成9600

使用特权

评论回复
10
麻花油条| | 2021-1-22 11:04 | 只看该作者
这个是8位机,只能一个一个接收,收到之后要保存下来去判断!

使用特权

评论回复
11
xylontan| | 2021-1-24 17:34 | 只看该作者
国产的好用不

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1414

主题

3814

帖子

5

粉丝