1 适用产品 : 1.1 SM59R16A5/ SM59R09A5/ SM59R05A5/ SM59R16A3/ SM59R09A3/ SM59R05A3 1.2 SM59R16G6/ SM59R09G6/ SM59R05G6 1.3 SM59R04A2/ SM59R04A1/ SM59R03A1/ SM59R02A1 1.4 SM59R16A2/ SM59R08A2 2 UART 差异如下说明 : P4UR1 P1UR0 UART0 UART1 (UART1 function pin assign) (UART0 function pin assign) SM59R16A5 SM59R16A3 SM59R09A5 SM59R09A3 SM59R05A5 SM59R05A3 SM59R16A2 SM59R08A2 SM59R16G6 SM59R09G6 SM59R05G6 SM59R04A2 SM59R04A1 SM59R03A1 SM59R02A1 : 表示该型号可以使用此特殊功能 : 表示该型号不可使用此特殊功能 Notice: 选用 Package DIP 因没有 P4, 所以无法使用此特殊功能 2.1 SM59R 系列 UART0 和传统 12T 8051 程序可完全兼容 ( 使用 Timer 1), 不须修改 2.2 SM59R 系列大多数皆有双 UART 功能, 有少数系列只提供 UART0 功能, 如上表 2.3 建议使用 UART0 和 UART1 独立的 10-bit baud-rate generator, 可不占用 MCU 其它资源 ( 例如 Timer 1, 2) ISSFA-0200 1 Ver B 2011/01
2.4 UART0 鲍率功式选择 (BRS) 位置不同, 其它用方相同, 请参考以下 : 2.4.1 SM59R16A5/ SM59R09A5/ SM59R05A5/ SM59R16A3/ SM59R09A3/ SM59R05A3/ SM59R04A2 请参考以下 : Mnemonic Description Direct Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET Serial interface 0 and 1 AUX Auxiliary register 91h BRS P4CC P4SPI P4UR1 P4IIC P0KBI - DPS 00H 2.4.2 SM59R16G6/ SM59R09G6/ SM59R05G6 请参考以下 : Mnemonic Description Direct Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET Serial interface 0 and 1 AUX Auxiliary register 91h BRS P4SPI P4UR0 P4IIC P2PWM DPS 00H 2.4.3 SM59R16A2/ SM59R08A2 请参考以下 : Mnemonic Description Direct Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET Serial interface 0 and 1 Baud rate BRGS D8h BRS - - - - - - - 00h generator switch 各系列 UART 串口鲍率 (Baud rate) 计算功式, 请参考下表 : Device Device SM59R16A5/ SM59R09A5/ SM59R05A5/ SM59R16A3/ SM59R09A3/ SM59R05A3/ SM59R16G6/ SM59R09G6/ SM59R05G6 SM59R04A2/ SM59R04A1/ SM59R03A1/ SM59R02A1/ SM59R16A2/ SM59R08A2 T1PS[1:0] is 00 2 Fclk 32 12 256 TH1 ( ) BRS = 0 T1PS[1:0] is 01 2 Fclk 32 256 TH1 ( ) T1PS[1:0] is 10 2 Fclk 32 96 256 TH1 ( ) * T1PS 请参考 SFR PFCON 说明 Baud Rate 2 32 12 F OSC = ( 256 TH1) ISSFA-0200 2 Ver B 2011/01
S0RELPS[1:0] is 00 2 Fclk 10 64 2 S0REL ( ) BRS = 1 S0RELPS[1:0] is 01 2 Fclk 10 32 2 S0REL ( ) S0RELPS[1:0] is 10 2 Fclk 10 16 2 S0REL ( ) 2 10 64 F OSC ( 2 S0REL) S0RELPS[1:0] is 11 2 Fclk 10 8 2 S0REL ( ) 2.4.4 SM59R16G6/ SM59R09G6/ SM59R05G6 系列,UART0 支持更快速的 baud rate, 请参考以下 : Mnemonic Description Direct Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET Timer 0 and 1 PFCON Peripheral Frequency control register D9H S0RELPS[1:0] T1PS[1:0] T0PS[1:0] 00H Mnemonic: PFCON Address: D9H 7 6 5 4 3 2 1 0 Reset - - S0RELPS[1:0] T1PS[1:0] T0PS[1:0] 00H S0RELPS[1:0]: S0REL Prescaler select S0RELPS[1:0] Prescaler 00 Fclk/64 01 Fclk/32 10 Fclk/16 11 Fclk/8 T1PS[1:0]: Timer1 Prescaler select T1PS[1:0] Prescaler 00 Fosc/12 01 Fosc 10 Fosc/96 11 reserved ISSFA-0200 3 Ver B 2011/01
2.5 UART0( 或 UART1) 的 RX 和 TX 提供可指定脚位 (pin assign) 的功能, 避免和其它特殊功能脚位重复, 并提高硬件规划的兼容性 指定脚位只须在程序中设定 P4UR0( 或 P4UR1) 即可, 更可扩展为多组 UART 2.5.1 SM59R16A5/ SM59R09A5/ SM59R05A5/ SM59R16A3/ SM59R09A3/ SM59R05A3/ SM59R04A2, 请参考以下 : P4UR1: P4UR1 = 0 Serial interface 1 function on P1 ( RXD1 in P1.2, TXD1 in P1.3 ). P4UR1 = 1 Serial interface 1 function on P4 ( RXD1 in P4.2, TXD1 in P4.3 ). 2.5.2 SM59R16G6/ SM59R09G6/ SM59R05G6, 请参考以下 : P1UR0: P4UR0 = 0 Serial interface 1 function on P1 ( RXD0 in P3.0, TXD0 in P3.1). P4UR0 = 1 Serial interface 1 function on P4 ( RXD0 in P1.2, TXD0 in P1.3 ). 3 UART 使用概述鲍率说明 : 3.1 使用串口时, 系统晶振频率的误差须小于 2%, 因内部晶振频率的误差较大, 为避免数据遗失, 系统建议使用外部晶振 3.2 UART0 鲍率 : 功能和一般 8051 相同, 可使用 Timer1(8-bit) 做鲍率产生, 另多一组内部鲍率 (Baud rate) 产生器 (16-bit), 鲍率兼容更高更准确, 可供选用, 详细说明参考 5.1.1 计算公式 3.3 UART1 鲍率 : 使用内部鲍率产生器 (16-bit) 产生, 详细说明参考 5.1.2 计算公式 硬件说明 : 3.4 UART0 有四种操作模式 (mode 1~mode 4), 使用方式及设定可完全兼容传统 8051, 详细请参考章节第 6.0 说明 3.5 UART1 有二种操作模式 (mode A 和 mode B), 请参考章节第 7.0 说明 3.6 每一组串口分别有独立的缓冲存储器, 传送及接收则是共享缓冲存储器 : UART0 使用 S0BUF UART1 使用 S1BUF 当执行数据接收时, 必须在前一笔数据完成执行工作以后, 否则会造成数据流失 ( 新数据覆盖旧 数据 ) 的情形 ; 可由传送旗标 (TXIF) 和接收旗标 (RXIF) 判断前一次的工作状态是否完成 3.7 鲍率无论由 Timer(8-bit) 或内部鲍率产生器 (16-bit) 产生, 其频率固定预除 12, 不受系统频率选择 1T 或 2T 的影响 4 UART 相关的特殊缓存器 UART Special Function Register (SFR) Mnemonic Description Direct Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESE T Serial interface 0 and 1 PCON Power control 87h MDUF - - - - STOP IDLE 40h AUX Auxiliary register 91h BRS P4CC P4SPI P4UR0 P4IIC P0KBI - DPS 00H S0CON Serial Port 0 control register 98h SM0 SM1 SM20 REN0 TB80 RB80 TI0 RI0 00h S0RELL Serial Port 0 reload register AAh S0REL.7 S0REL.6 S0REL.5 S0REL.4 S0REL.3 S0REL.2 S0REL.1 S0REL.0 00h low byte S0RELH Serial Port 0 BAh - - - - - - S0REL.9 S0REL.8 00h ISSFA-0200 4 Ver B 2011/01
S0BUF S1CON L H S1BUF reload register high byte Serial Port 0 data buffer Serial Port 1 control register Serial Port 1 reload register low byte Serial Port 1 reload register high byte Serial Port 1 data buffer 99h S0BUF[7:0] 00h 9Bh SM - SM21 REN1 TB81 RB81 TI1 RI1 00h 9Dh.7.6.5.4.3.2 BBh - - - - - -.1.9.0.8 9Ch S1BUF[7:0] 00h 00h 00h Only for SM59R16A2/ SM59R08A2 used: Mnemonic Description Direct Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESE T Serial interface 0 and 1 PCON Power control 87h MDUF - PMW - - STOP IDLE 00h BRGS Baud rate generator switch D8h BRS - - - - - - - 00h Mnemonic: S0CON Address: 98h 7 6 5 4 3 2 1 0 Reset SM0 SM1 SM20 REN0 TB80 RB80 TI0 RI0 00h SM0,SM1: 串口 0(UART0) 模式选择 (Serial Port 0 mode selection.) SM0 SM1 Mode Description Board Rate Baud Rate generate 0 0 0 Shift register Fosc/12 Fixed 0 1 1 8-bit UART Variable 1 0 2 9-bit UART Fosc/32 or Fosc/64 1 1 3 9-bit UART Variable 详细可参考章节 6. 说明 Internal baud rate generator or Timer 1 ISSFA-0200 5 Ver B 2011/01 Fixed Internal baud rate generator or Timer 1 SM20: 多任务处理机通讯致能旗标 (Enables multiprocessor communication feature.) 此功能只和 UART 串口接收中断 (RI) 有关, 不影响传送中断中 (TI), 各模式说明如下 : Mode SM2 功能说明 0 模式 0,SM20 必须为 0 1 模式 1:RB80 为停止位 (stop bit) 若 SM20=0, 无论停止位为 1 或 0,RI 皆会动作 若 SM20=1, 当停止位不正确时,RI 则不动作 2 & 3 RB80 为数据的第 9 位 (9 th -bit) 若 SM20 设定 =0: 无论第 9 位为 1 或 0,RI 皆会动作 若 SM20 设定 =1: 若第 9 位 =1 则 RI 会动作
若第 9 位 =0 则 RI 不会动作 REN0: 接收致能旗标 : 1 致能 0 禁能, 必须由软件清除 TB80: 在传送模式 2 和模式 3 时, 所传送的数据的第 9 位 (9 th -bit) The 9 th transmitted data bit in modes 2 and 3. Set or cleared by the CPU depending on the function it performs such as parity check, multiprocessor communication etc. RB80: 在传送模式 2 和模式 3 时, 所接收的数据的第 9 位 (9 th -bit) 在传送模式 1 时, 如果 SM20 为 0, 则 RB80 为停止位 (stop bit) 在传送模式 0 时,RB80 无作用此位必须由软件清除 TI0: 传送中断旗标 (Transmit interrupt flag): 在模式 0 时, 在第 8 位结束时, 硬件会将它设为 1; 其它模式时, 在 stop bit 停止位的开始时设定为 1 1 传送完成由硬件设置 0 必须由软件清除 RI0: 接收中断旗标 (Receive interrupt flag) 在模式 0 时, 在第 8 位结束时, 硬件会将它设为 1, 其它模式时, 在 stop bit 停止位的一半的时候由硬件设定 1 接收完成由硬件设置 0 必须由软件清除 须参考 SM20 Mnemonic: S1CON Address: 9Bh 7 6 5 4 3 2 1 0 Reset SM - SM21 REN1 TB81 RB81 TI1 RI1 00h SM: 串通讯列端口 1(UART1) 模式选择 (Serial Port1 mode selection.) SM Mode Description Baud Rate Notice 0 A 9-bit UART Variable 此模式与 UART0 的 Mode 2 和 Mode 3 相似 1 B 8-bit UART Variable 此模式与 UART0 的 Mode 1 类似 详细可参考章节 7. 说明 SM21: 多任务处理机通讯致能位 (Enables multiprocessor communication feature.) 此功能只和串口接收中断 (RI) 有关, 和传送中断 (TI) 无关, 各模式说明如下 : Mode SM2 功能说明 A B RB81 为数据的第 9 位 (9 th -bit) 若 SM21 设定 =0: 无论第 9 位为 1 或 0,RI 皆会动作 若 SM21 设定 =1: 若第 9 位 =1 则 RI 会动作 若第 9 位 =0 则 RI 不会动作 RB81 为停止位 (stop bit) 若 SM21=0: 无论停止位为 1 或 0,RI 皆会动作 若 SM21=1: 当停止位不正确时,RI 则不动作 ISSFA-0200 6 Ver B 2011/01
REN1: 接收致能位 : 1 致能 0 禁能, 必须由软件清除 TB81: 在传送模式 2 和模式 3 时, 所传送的数据的第 9 位 (9 th -bit) The 9 th transmitted data bit in mode A. Set or cleared by the CPU depending on the function it performs such as parity check, multiprocessor communication etc. RB81: 在传送模式 A 时, 所接收的数据的第 9 位 (9 th -bit) 在传送模式 B 时, 如果 SM21 为 0, 则 RB81 为停止位 (stop bit) 此位必须由软件清除 TI1: 传送中断旗标 (Transmit interrupt flag) 在模式 0 时, 在第 8 位结束时, 硬件会将它设为 1 其它模式时, 在 stop bit 停止位的开始时设定为 1 1 传送完成由硬件设置 0 必须由软件清除 RI1: 接收中断旗标 (Receive interrupt flag) 在模式 0 时, 在第 8 位结束时, 硬件会将它设为 1, 其它模式时, 在 stop bit 停止位的一半的时候由硬件设定 1 接收完成由硬件设置 0 必须由软件清除 须参考 SM21 4.1 串口鲍率 (Baud rate) 计算功式 : 4.1.1 Serial interface 0(UART0) modes 1 and 3 (a) When BRS = 0: (b) When BRS = 1: Baud Rate 2 32 12 F OSC = 2 10 64 ( 256 TH1) F OSC ( 2 S0REL) 4.1.2 Serial interface 1(UART1) modes A and B F 10 32 OSC ( 2 ) 5 UART0(Serial interface 0) 串口有以下四种操作模式 : SM0 SM1 Mode Description Board Rate Baud Rate generate 0 0 0 Shift register Fosc/12 Fixed 0 1 1 8-bit UART Variable Internal baud rate generator or Timer 1 ISSFA-0200 7 Ver B 2011/01
1 0 2 9-bit UART Fosc/32 or Fosc/64 Fixed 1 1 3 9-bit UART Variable Internal baud rate generator or Timer 1 Fosc 指 crystal 或 oscillator 的振荡频率 5.1.1 Mode 0 1. MCU 数据输出或输入都是利用 RXD0 为引脚 TXD0 为 MCU 输出移位频率 ( 固定为 Fosc/12) 2. 数据为 8 bits, 由 LSB 先传送 3. 固定鲍率 (Baud rate) 为 Fosc/12 4. Mode 0 初始化由旗标 S0CON 设定 :RI0 = 0 and REN0 = 1 5. 当传送数据时 : 须先以软件清除 S0CON 中的 REN0=0, 执行数据写入 S0BUF 指令, 则会引发数据传送的动作 ; 数据传送完毕后,MCU 会将 S0CON 中的 TI0 设定为 1, 通知中断产生 6. 当接收数据时 : 须先以软件设定 S0CON 中的 REN0=1, 然后执行清除 RI 位, 串行端口就会依时序进行接收的工作 ; 数据接收完毕后,MCU 会将 S0CON 中的 RI0 设定为 1, 通知中断产生 Fig. 9-1: Transmit mode 0 for Serial 0 Fig. 9-2: Receive mode 0 for Serial 0 5.1.2 Mode 1 1. 鲍率 (Baud rate), 由内部鲍率产生器 (SFR S0RELH 及 S0RELL 设定 ) 或 Timer1 来产生 2. RXD0 为输入数据的引脚,TXD0 为输出数据的引脚 ISSFA-0200 8 Ver B 2011/01
3. Mode1 没有使用任何的位移频率, 数据以 10bits 传输, 分为三部分 : (1) bit[0] a start bit (always 0) (2) bit[1~8] 8 data bits (LSB first) (3) bit[9] a stop bit (always 1) (save to RB80, clear by software) 4. 在接收模式中,start bit 与数据传输会同时发生, 可从 SFR S0BUF 读取 8 data bits,stop bit 则存至 SFR S0CON 的 RB80 旗标设置 ( 由软件清除 ) Fig. 9-3: Transmit mode 1 for Serial 0 Fig. 9-4: Receive mode 1 for Serial 0 5.1.3 Mode 2 此模式与 Mode 1 相似, 仅有两点不相同 : 1. 固定的鲍率 (Baud rate) 有两种 : (1) Fosc/12 (=1) (2) Fosc/64 (=0) 2. 数据是以 11bits 传送或接收, 分为四个部分 : (1) bit[0] a start bit (always 0) (2) bit[1~8] 8 data bits (LSB first) (3) bit[9] a programmable (4) bit[10] a stop bit(always 1) 3. 数据 bit[9] 可当作同位检查位 (parity check bit) (1) 在传送模式 :SFR S0CON 的 TB80 为传送数据的第九位 (2) 在接收模式 :SFR S0CON 的 RB80 为接收数据的第九位 ISSFA-0200 9 Ver B 2011/01
5.1.4 Mode 3 此模式与 Mode 2 相似, 仅有一项不同, 即鲍率 (Baud rate) 可指定由内部鲍率产生器 (SFR S0RELH 及 S0RELL 设定 ) 或 Timer1 来产生 ( 与 Mode1 相同 ) Fig. 9-5: Transmit modes 2 and 3 for Serial 0 Fig. 9-6: Receive modes 2 and 3 for Serial 0 6 UART1(Serial interface 1) 串口有以下二种操作模式 : SM Mode Description Baud Rate 0 A 9-bit UART Variable 1 B 8-bit UART Variable 6.1 Mode A 6.1.1 此模式与 UART0 的 Mode 2 和 Mode 3 相似 6.1.2 鲍率 (Baud rate), 由内部鲍率产生器产生 (SFR H 及 L 设定 ) 6.1.3 数据为 11bits 传送或接收, 分为四个部分 : (1) bit[0] a start bit (always 0) (2) bit[1~8] 8 data bits (LSB first) (3) bit[9] a programmable (TB81 or RB81) (4) bit[10] a stop bit(always 1) ISSFA-0200 10 Ver B 2011/01
6.1.4 数据 bit[9] 可当作同位检查位 (parity check bit) (1) 在传送模式 :SFR S1CON 的 TB81 为传送数据的第九位 (2) 在接收模式 :SFR S1CON 的 RB81 为接收数据的第九位 Fig. 9-7: Transmit mode A for Serial 1 Fig. 9-8: Receive mode A for Serial 1 6.2 Mode B 6.2.1 此模式与 UART0 的 Mode 1 类似 6.2.2 鲍率 (Baud rate), 由内部鲍率产生器产生 (SFR H 及 L 设定 ) 6.2.3 RXD0 为输入数据的引脚,TXD0 为输出数据的引脚 6.2.4 没有使用任何的位移频率 6.2.5 数据为 10bits 传输, 分为三部分 : (1) bit[0] a start bit (always 0) (2) bit[1~8] 8 data bits (LSB first) (3) bit[9] a stop bit (always 1) (save to RB80, clear by software) 在接收模式中,start bit 与数据传输会同时发生,8 data bits 可从 SFR S1BUF 读取,stop bit 则存至 SFR S1CON 的 RB80 旗标设置 ( 由软件清除 ) Fig. 9-9: Transmit mode B for Serial 1 ISSFA-0200 11 Ver B 2011/01
Fig. 9-10: Receive mode B for Serial 1 7 以下为 UART 串口中断应用有关的致能旗标 Interrupt vectors Table Interrupt Vector Interrupt Number Interrupt Request Flags Address *(use Keil C Tool) IE0 External interrupt 0 0003h 0 TF0 Timer 0 interrupt 000Bh 1 IE1 External interrupt 1 0013h 2 TF1 Timer 1 interrupt 001Bh 3 RI0/TI0 Serial channel 0 interrupt 0023h 4 TF2/EXF2 Timer 2 interrupt 002Bh 5 PWMIF PWM interrupt (The SM59R16A2/SM59R08A2 haven t) 0043h 8 SPIIF SPI interrupt 004Bh 9 ADCIF A/D converter interrupt 0053h 10 KBIIF keyboard Interface interrupt 005Bh 11 LVIIF Low Voltage Interrupt (The SM59R16A2/SM59R08A2 haven t) 0063h 12 IICIF IIC interrupt 006Bh 13 RI1/TI1 Serial channel 1 interrupt 0083h 16 RTC/ALARM interrupt (Only SM59R16A5/SM59R09A5/SM59R05A5 have) 008Bh 17 Comparator interrupt (Only SM59R16A5/SM59R09A5/SM59R05A5 have) 0093h 18 *See Keil C about C51 User s Guide about Interrupt Function description Mnemonic Description Direct Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RESET Interrupt IEN0 Interrupt Enable 0 register A8h EA - ET2 ES0 ET1 EX1 ET0 EX0 00h IEN1 Interrupt Enable 1 register B8h EXEN2 - IEIIC IELVI IEKBI IEADC IESPI IEPWM 00h IEN2 Interrupt Enable 2 register 9Ah - - - - - - - ES1 00h IRCON Interrupt request register C0H EXF2 TF2 IICIF LVIIF KBIIF ADCIF SPIIF PWMIF 00H IP0 Interrupt priority level 0 A9h - - IP0.5 IP0.4 IP0.3 IP0.2 IP0.1 IP0.0 00h ISSFA-0200 12 Ver B 2011/01
IP1 Interrupt priority level 1 B9h - - IP1.5 IP1.4 IP1.3 IP1.2 IP1.1 IP1.0 00h * 如果需要使用中断程序, 可参考以下设置 : void SerialChannel_0(void) interrupt 4 void SerialChannel_1(void) interrupt 16 8 范例程序 Serial Port 1(UART1) TX 及 RX 通讯的范例程序 Description 1. 程序使用双串口 (UART0,UART1), 中断致能, 设定 baud rate 115200 bps 2. UART0 及 UART1 设定使用 internal baud rate generator 3. UART0 及 UART1 通讯协议相同, 程序会一直等待接收外部数据, 收到数据后会以相同的数 据回传, 例如 RX 收到数据 5Ah,TX 会回传 5Ah 4. 连接 PC COM Port 设定 : 4.1. baud rate=115200bps 4.2. Data Bits=8 4.3. No Parity 4.4. Stop bits=1 Main program //=================================================================== // // S Y N C M O S T E C H N O L O G Y // //=================================================================== #include "SM59R04A2.h" #define S0BUF SBUF #define S0CON SCON #define S0CON_TI TI #define S0CON_RI RI bit TX_IF0 = 0; bit TX_IF1 = 0; bit UART0_toogle = 0; bit UART1_toogle = 0; unsigned char RXBUF0 = 0; unsigned char RXBUF1 = 0; void UART0_INT(void) interrupt 4 if(s0con_ri) //UART0_INT_RX UART0_toogle = 1; RXBUF0 = S0BUF; S0CON_RI= 0; //clear UART0 RI //RX_IF0 = 1; ISSFA-0200 13 Ver B 2011/01
else S0CON_TI=0; TX_IF0 =1; //UART0_INT_TX //clear UART0 TI void UART1_INT(void) interrupt 16 if(s1con & 0x01) //UART1_INT_RX UART1_toogle = 1; RXBUF1 = S1BUF; S1CON &= 0xFE; //clear UART1 RI //RX_IF1 = 1; else //UART1_INT_TX S1CON &= 0xFD; //clear UART1 TI TX_IF1 =1; void UART0_TX(void) S0BUF = RXBUF0; while(!tx_if0); //while(!s0con_ti); TX_IF0 =0; // confirm INT void UART1_TX(void) S1BUF = RXBUF1; while(!tx_if1); // confirm INT // while(!(s1con & 0x02)); TX_IF1 =0; void init_uart0(void) //AUX &= 0x7F; // for UART0, set BRS =0, BR ref.to TH1(8-bit) AUX = 0x80; S0RELH/S0RELL(16-bit) // for UART0, set BRS =1, BR ref.to PCON = 0x80; // set 1 S0CON = 0x50; // Mode 1 sel / REN Enable / RI&TI Clear S0RELH = 0x03; // set BR 115200 External OSC=22.1184MHz S0RELL = 0xFA; // set BR 115200 External OSC=22.1184MHz IEN0 = 0x10; // ES0 enbale (serial channel 0 interrupt) void init_uart1(void) S1CON = 0xB0; // Mode B sel / REN Enable / RI&TI Clear H = 0x03; // set BR 115200 External OSC=22.1184MHz L = 0xFA; // set BR 115200 External OSC=22.1184MHz IEN2 = 0x01; // ES1 enbale (serial channel 1 interrupt) void init_mcu(void) IFCON = 0X80; // 1T select IEN0 = 0x80; // all Interrupt enable ISSFA-0200 14 Ver B 2011/01
void main(void) unsigned int Loop=0; init_mcu(); init_uart0(); init_uart1(); while(1) if(uart0_toogle) UART0_TX(); UART0_toogle = 0; if(uart1_toogle) UART1_TX(); UART1_toogle = 0; ISSFA-0200 15 Ver B 2011/01