打印
[技术问答]

N76E003如何用串口发字符串?

[复制链接]
2545|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lansefeiyang|  楼主 | 2018-1-24 16:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问如何用串口发字符串?
沙发
huangcunxiake| | 2018-1-24 18:40 | 只看该作者
发送数字是:
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2017
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E003 UART-0 Mode1 demo code
//***********************************************************************************************************
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

/******************************************************************************
* FUNCTION_PURPOSE: Serial interrupt, echo received data.
* FUNCTION_INPUTS : P0.7(RXD) serial input
* FUNCTION_OUTPUTS: P0.6(TXD) serial output
* Following setting in Common.c
******************************************************************************/
#if 0
//void InitialUART0_Timer1(UINT32 u32Baudrate)    //T1M = 1, SMOD = 1
//{
//                P06_Quasi_Mode;               
//                P07_Quasi_Mode;
//       
//    SCON = 0x52;     //UART0 Mode1,REN=1,TI=1
//    TMOD |= 0x20;    //Timer1 Mode1
//   
//    set_SMOD;        //UART0 Double Rate Enable
//    set_T1M;
//    clr_BRCK;        //Serial port 0 baud rate clock source = Timer1

//
//#ifdef FOSC_160000
//    TH1 = 256 - (1000000/u32Baudrate+1);               /*16 MHz */
//#endif           
//    set_TR1;
//}
////---------------------------------------------------------------
//void InitialUART0_Timer3(UINT32 u32Baudrate) //use timer3 as Baudrate generator
//{
//                P06_Quasi_Mode;
//                P07_Quasi_Mode;       
//       
//    SCON = 0x52;     //UART0 Mode1,REN=1,TI=1
//    set_SMOD;        //UART0 Double Rate Enable
//    T3CON &= 0xF8;   //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1)
//    set_BRCK;        //UART0 baud rate clock source = Timer3

//#ifdef FOSC_160000
//        RH3    = HIBYTE(65536 - (1000000/u32Baudrate)-1);                  /*16 MHz */
//  RL3    = LOBYTE(65536 - (1000000/u32Baudrate)-1);                        /*16 MHz */
//#endif
//    set_TR3;         //Trigger Timer3
//}
#endif

/*******************************************************************************
* FUNCTION_PURPOSE: Main function
******************************************************************************/
void main (void)
{

#if 0       
    InitialUART0_Timer1(9600);           //UART0 Baudrate initial,T1M=0,SMOD=0
    while(1)
    Send_Data_To_UART0(0x55);
#else
                InitialUART0_Timer3(115200);
    while(1)
    Send_Data_To_UART0(0x55);
#endif
                       
       
               
}
  

使用特权

评论回复
板凳
huangcunxiake| | 2018-1-24 18:42 | 只看该作者
字符串用printf函数

/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2017
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E003 ADC demo code
//***********************************************************************************************************

#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"


//*****************  The Following is in define in Fucntion_define.h  ***************************
//****** Always include Function_define.h call the define you want, detail see main(void) *******
//***********************************************************************************************
#if 0
//#define Enable_ADC_AIN0                        ADCCON0&=0xF0;P17_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT0;ADCCON1|=SET_BIT0                                                                        //P17
//#define Enable_ADC_AIN1                        ADCCON0&=0xF0;ADCCON0|=0x01;P30_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT1;ADCCON1|=SET_BIT0                //P30
//#define Enable_ADC_AIN2                        ADCCON0&=0xF0;ADCCON0|=0x02;P07_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT2;ADCCON1|=SET_BIT0                //P07
//#define Enable_ADC_AIN3                        ADCCON0&=0xF0;ADCCON0|=0x03;P06_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT3;ADCCON1|=SET_BIT0                //P06
//#define Enable_ADC_AIN4                        ADCCON0&=0xF0;ADCCON0|=0x04;P05_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT4;ADCCON1|=SET_BIT0                //P05
//#define Enable_ADC_AIN5                        ADCCON0&=0xF0;ADCCON0|=0x05;P04_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT5;ADCCON1|=SET_BIT0                //P04
//#define Enable_ADC_AIN6                        ADCCON0&=0xF0;ADCCON0|=0x06;P03_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT6;ADCCON1|=SET_BIT0                //P03
//#define Enable_ADC_AIN7                        ADCCON0&=0xF0;ADCCON0|=0x07;P11_Input_Mode;AINDIDS=0x00;AINDIDS|=SET_BIT7;ADCCON1|=SET_BIT0                //P11
//#define Enable_ADC_BandGap        ADCCON0|=SET_BIT3;ADCCON0&=0xF8;                                                                                                                                                                                                                                                        //Band-gap 1.22V

//#define PWM0_FALLINGEDGE_TRIG_ADC                ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
//#define PWM2_FALLINGEDGE_TRIG_ADC                ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
//#define PWM4_FALLINGEDGE_TRIG_ADC                ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1&=~SET_BIT2;ADCCON1|=SET_BIT1
//#define PWM0_RISINGEDGE_TRIG_ADC                ADCCON0&=~SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
//#define PWM2_RISINGEDGE_TRIG_ADC                ADCCON0&=~SET_BIT5;ADCCON0|=SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1
//#define PWM4_RISINGEDGE_TRIG_ADC                ADCCON0|=SET_BIT5;ADCCON0&=~SET_BIT4;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1

//#define P04_FALLINGEDGE_TRIG_ADC                ADCCON0|=0x30;ADCCON1&=0xF3;ADCCON1|=SET_BIT1;ADCCON1&=~SET_BIT6
//#define P13_FALLINGEDGE_TRIG_ADC                ADCCON0|=0x30;ADCCON1&=0xF3;ADCCON1|=SET_BIT1;ADCCON1|=SET_BIT6
//#define P04_RISINGEDGE_TRIG_ADC                        ADCCON0|=0x30;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1;ADCCON1&=~SET_BIT6
//#define P13_RISINGEDGE_TRIG_ADC                        ADCCON0|=0x30;ADCCON1&=~SET_BIT3;ADCCON1|=SET_BIT2;ADCCON1|=SET_BIT1;ADCCON1|=SET_BIT6
#endif

/******************************************************************************
The main C function.  Program execution starts
here after stack initialization.
******************************************************************************/
void main (void)
{
                InitialUART0_Timer1(115200);

                Enable_ADC_AIN3;                                                // Enable AIN0 P1.7 as ADC input, Find in "Function_define.h" - "ADC INIT"
                while(1)
    {
                        clr_ADCF;
                        set_ADCS;                                                                        // ADC start trig signal
      while(ADCF == 0);
                        printf ("\n Value = 0x%bx",ADCRH);
                        printf ("\n Value = 0x%bx",ADCRL);
                        Timer0_Delay1ms(100);
    }
}


使用特权

评论回复
地板
huangcunxiake| | 2018-1-24 18:42 | 只看该作者
下载这个文件
N76E003_BSP_Keil_C51_V1.0.4
去官网下载。

使用特权

评论回复
5
lansefeiyang|  楼主 | 2018-1-25 14:03 | 只看该作者

我想知道发送字符串的

使用特权

评论回复
6
lansefeiyang|  楼主 | 2018-1-25 14:19 | 只看该作者
huangcunxiake 发表于 2018-1-24 18:42
下载这个文件
N76E003_BSP_Keil_C51_V1.0.4
去官网下载。

我有,这里是字符的,和字符串应该不一样

使用特权

评论回复
7
heisexingqisi| | 2018-1-26 10:12 | 只看该作者
发送一个数字都行,你直接添加个string发送的函数调用这个发送数字的不就行了吗

使用特权

评论回复
8
heisexingqisi| | 2018-1-26 10:15 | 只看该作者
Send_String_to_UART0(string a)
{

while(*a!=''\0'')
Send_Data_To_UART0(a++);

}


差不多就是这么写的。

使用特权

评论回复
9
lansefeiyang|  楼主 | 2018-2-2 15:14 | 只看该作者
heisexingqisi 发表于 2018-1-26 10:15
Send_String_to_UART0(string a)
{

这个不是003的代码吧,003没看到有字符串类型。
我用电脑串口软件发送字符串可以控制模组,但是用003发送就失败,基本可以确定是字符串的问题。

使用特权

评论回复
10
gugogol| | 2018-3-5 15:07 | 只看该作者
/*******************************************************************************
**void Uart_SendString(u8 *data , u8 strlen)
**发送多个字符
**入口:u8 *data   ,  u8 strlen
**返回:无
*******************************************************************************/
void Uart_SendString(uint8_t *datas , uint8_t strlen)
{
  unsigned char datalen;
        InitialUART0_Timer1(115200);
  for(datalen = 0 ; datalen < strlen ; datalen++)
  {
    Send_Data_To_UART0(datas[datalen]);
  }
}


void Send_Data_To_UART0 (UINT8 c)
{
    TI = 0;
    SBUF = c;
    while(TI==0);
}

使用特权

评论回复
11
gugogol| | 2018-3-5 15:11 | 只看该作者
如果要发送:datasheet,则Uart_SendString("datasheet" ,9);

使用特权

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

本版积分规则

3

主题

16

帖子

0

粉丝