松翰单片机_SN8F570310——UART

SN8F570310——UART


哎,没想到工作之中又玩起了单片机!!!

平台:松翰 SN8F570310

官网:http://www.sonix.com.tw/masterpage-tw


 









 也就这些


          通过串口助手发送 ——》 单片机UART_RX ——》  串口接收中断_UART_TX ——》 逻辑分析仪

 1 #include "Equ.h"
 2 
 3 /*    硬件IO
 4         XIN /UTX/T2CC0/P0.0            UART_TX
 5         XOUT/URX/T2CC1/P0.1            UART_RX
 6 */
 7 
 8 #define SYSUartSM0    (0 << 6)
 9 #define SYSUartSM1    (1 << 6)
10 #define SYSUartSM2    (2 << 6)
11 #define SYSUartSM3    (3 << 6)
12 #define SYSUartREN    (1 << 4)  //接收功能
13 #define SYSUartSMOD   (1 << 7)
14 #define SYSUartSMODE1 (1 << 7)
15 #define SYSUartBD1    (1 << 7)
16 #define SYSUartES0    (1 << 4)
17 
18 
19 void uart_init(void)
20 {
21     //IO配置    
22     P00 = 1;                    //UART_RX 输入模式
23     P0M = P0M | 0x01& ~0x02;    //UART_TX 输出模式
24     
25 
26     //模式使能
27     S0CON = SYSUartSM1 | SYSUartREN;   //模式1
28     
29     //波特率   9600
30     //PCON      = SYSUartSMODE1;
31     S0CON2 = SYSUartBD1;
32     S0RELH = 0x03;
33     S0RELL = 0Xf3;
34     
35     //使能串口中断
36     IEN0 |= SYSUartES0;  //打开串口中断
37     IEN0 |= ( 1<<7 );    //打开总中断
38     
39     RI0 = 0;
40     
41     //发送测试
42     //S0BUF = 0x31;
43     
44 }
45 
47 void SYSUartInterrupt(void) interrupt ISRUart
48 {
49 /*    
50     if (TI0 == 1) {
51         S0BUF = uartTxBuf;
52         TI0 = 0;
53     }else if (RI0 == 1) {
54         uartRxBuf = S0BUF;
55         RI0 = 0;
56     }
57 */
58     
59     if (RI0 == 1) {
60         RI0 = 0;
61       S0BUF = S0BUF;
62     }    
63 }

测试:

笔记:


1. 串口连发S0BUF之间加延时( for(p=0;p<30000;p++){ }),否则出错!!

原文地址:https://www.cnblogs.com/panda-w/p/11733508.html