1、【1】打开Keil uVision4 C51 IDE并建立好Nuvoton相应的工程。Nuvoton单片机在Keil上开发需要使用Nuvoton Keil的插件,可以到Nuvoton的官网上去下载.【2】在已建好的工程中添加延时函数、UART1初始化函数、UART1 prinf重定向函数、主函数。【3】延时函数-->简单的延时 看清效果【4】UART1初始化函数-->UART1引脚方向类型定义、波特率设置、数据位设置、奇偶校验位设置、停止位设置,本经验中使用TIM3作为UART1的波特率发生器。【5】prinf重定向函数-->将UART1的输出重新定向到printf函数中【6】主函数-->设置所有IO为准双向IO、初始化UART1、printf打印本次编译时间、每隔一段时间打印一次程序运行次数。
2、【1】简单延时函数void Delayms(u16 i)//Delay ms{ u16 x=0, y租涫疼迟=0; for(x=0; x<1000; x++) for(y=0; y<i; y++);}【2】UART1初始化函数void InitialUART1_Timer3(u32 u32Baudrate)//Initial UART1 Timer3{ P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1 T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1 clr_BRCK; #ifdef FOSC_160000 RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); //16 MHz RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1); #endif #ifdef FOSC_166000 RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); //16.6 MHz RL3 = LOBYTE(65536 - (1037500/u32Baudrate)); #endif set_TR3; //Trigger Timer3 TI_1 = 1; //For printf function must setting TI = 1}【3】UART1 prinf重定向函数char putchar (char c)//for UART1_printf{ while (!TI_1);//wait until transmitter ready TI_1 = 0; SBUF_1 = c;//output character return (c);}【4】主函数void main (void){ u16 count = 0; Set_All_GPIO_Quasi_Mode; InitialUART1_Timer3(115200);//InitialUART1_Timer3 printf("Complie Time:%s\r\n", __TIME__);//Complie Time while(1) { printf("System Runing Count: %d\r\n", count++); Delayms(220); }}
3、【1】编程Nuvoton整个项目工旯皱镢涛程直到没有错误并生成.hex文件【2】打开新塘芯片烧录软件NuMicro ICP Programming Tool选择好目标芯片8051 1T系列,连接到新塘烧录器Nu-Link,载入文件APROM选择生成.hex文件。【3】单击右下角的选项设置,勾选擦除、烧写、验证,其他选项默认就好了,也可以根据自己的实际情况经行选择,最后确定。【4】单击配置值-->设定选项,设置启动项为APROM启动、设置P20复位引脚功能选择、设置DCD调试模式小PWM输出转态、设置LDROM区域选择、设置欠电压设定、设置看门狗WDT时钟选择,最后确定退出。【5】通过NuMicro ICP Programming Tool将生成的.hex下载到Nuvoton N76E003 Target目标板中,点击开始按钮知道程序下载成功
4、【1】打开串口调试助手XCOM V2.0,在电脑上的设置管理器上查看相应的 COM口,并在串口调试助手XCOM V2.0选择相应的COM号、波特率、数据位、停止位。校验位,这些值要与UART初始化的值一致,否则没有数据输出或者乱码。【2】查看打印的信息是否正确【3】在串口调试助手XCOM V2.0上可以看到详细数据,第一行打印出本次编译的时间,后面每隔一段时间就打印出System Runing Count的次数,与我们预期的效果一直,因此本次Nuvoton N76E003 UART在Keil中printf格式化输出成功