应用说明 华邦 8 位单片机 (8051 内核 ) 应用说明 华邦 8 位单片机 (8051 内核 ) ANSC-UC08-0007
目录 - 1. 应用说明 :...4 1.1...4 1.2 相关寄存器介绍...4 1.2.1 串行口控制寄存器 (SCON)... 4 1.2.2 串行数据缓冲寄存器 (SBUF)... 5 1.2.3 串行口控制 1 (SCON1)... 5 1.2.4 串行数据接收缓冲 1 (SBUF1)... 6 1.2.5 从机地址 (SADDR)... 6 1.2.6 从机地址 1 (SADDR1)... 6 1.3 电源控制 (PCON)...6 1.3.1 定时器 2 控制 (T2CON)... 6 1.3.2 使能 (IE)... 7 2. 串口 0 工作模式和演示程序...8 2.1 串口 0 的模式 0...8 2.1.1 特点 :... 8 2.1.2 串口 0 的模式 0 设置实例程序... 8 2.2 串口 0 的模式 1...8 2.2.1 特点... 8 2.2.2 串口 0 的模式 1 设置实例程序... 8 2.3 串口 0 的模式 2...9 2.3.1 特点... 9 2.3.2 串口 0 的模式 2 设置实例程序... 9 2.4 串口 0 的模式 3...9 2.4.1 特点... 9 2.4.2 串口 0 的模式 1 设置实例程序... 9 3. 串口 1 工作模式和演示程序...10 3.1 串口 1 的模式 0...10 3.1.1 特点 :... 10 3.1.2 串口 1 的模式 0 设置实例程序... 10 3.2 串口 1 的模式 1...10 3.2.1 特点... 10 3.2.2 串口 1 的模式 1 设置实例程序... 10 3.3 串口 1 的模式 2...11 3.3.1 特点... 11 3.3.2 串口 1 的模式 2 设置实例程序... 11 3.4 串口 1 的模式 3...11 3.4.1 特点... 11 3.4.2 串口 1 的模式 1 设置实例程序... 11-2 -
4. 中断服务程序的写法...12 4.1 串口 0 中断程序的写法...12 4.2 串口 1 中断程序的写法...12 5. 文件版本描述...13 Publication Release Date: May 02, 2006-3 - Revision SC1
1. 应用说明 : 1.1 W77E516 有两个个全双工串行口 这两个串行口还为用户提供帧错误检测 自动地址识别等附加功能 这两个串行口提供同步及异步通信方式 在同步模式下串行口产生时钟并以半双工的方式工作 在异步模式下, 能以全双工的方式工作, 即可以同时收发数据 发送, 接收寄存器均用 SBUF 来访问 对 SBUF 的写是发送数据, 从 SBUF 读是读取数据 串行口有 4 种不同的方式工作 值得注意的是 : 串口 0 工作在模式 1 或模式 3 时可以用定时器 1 或定时器 2 产生波特率 ; 串口 1 工作在模式 1 或模式 3 时只能用定时器 1 产生波特率 1.2 相关寄存器介绍 1.2.1 串行口控制寄存器 (SCON) SM0/FE SM1 SM2 REN TB8 RB8 TI RI SM0/FE: 串行口 0, 模式 0 控制位或贞错误标志位 PCON 特殊功能寄存器中的 SMOD0 位决定该位的功能 下面会描述 SM0 的运行功能 当用作贞错误标志时, 该位的置位表示一个无效的停止位 该位必须由软件来清除 SM1: 串行口模式位 1: SM0 SM1 模式说明数据长度波特率 0 0 0 同步 8 时钟的 4 或 12 分之一 0 1 1 异步 10 可变 1 0 2 异步 11 时钟的 64 或 32 分之一 1 1 3 异步 11 可变 SM2: 多机通信控制 将该位置 1, 则使能模式 2 及模式 3 下的多机通信功能 在模式 2 或 3 下, 如果 SM2 置 1, 那么收到的第九位数据 RB8 是 0 的话,RI 将不会置位 在模式 1 下如果 SM2 置 1, 那么在没有收到有效的停止位前 RI 是不会置位的 在模式 0 下,SM2 位控制着串行口的时钟 如果清 0, 那么串行口的时钟是系统时钟的 12 分频 这样系统就与标准 8052 兼容 如果该位置 1, 那么串行口的时钟是系统时钟的 4 分频, 这样就加快了同步通信的速度 REN: 接收使能, 置 1 时打开串行口接收功能, 否则关闭该功能 TB8: 模式 2 和 3 中要被发送的第九位数据 软件可以根据需求将该位置 1 或清 0 RB8: 模式 2 和 3 中接收到的第九位数据 模式 1 下, 若 SM2=0 则 RB8 是接收到的停止位 模式 0 下该位无意义 TI: 发送中断标志 : 模式 0 下该标志由硬件在发送完 8 位数据后置位, 而在其他模式下在串行发送到停止位的开始时置位 该位必须由软件来清除. RI: 接收中断标志 : 模式 0 下该标志由硬件在接收到 8 位数据后置位, 而在其他模式下在串行接收到停止位的中间时置位 该位必须由软件来清除 - 4 -
1.2.2 串行数据缓冲寄存器 (SBUF) SBUF.7 SBUF.6 SBUF.5 SBUF.4 SBUF.3 SBUF.2 SBUF.1 SBUF.0 SBUF.7-0: 串行口 0 接收或发送的数据都放在这个寄存器中 实际上该地址上有 2 个独立的 8 位寄存器 一个用于接收数据, 一个用于发送数据 对它进行读操作将会接收串行数据, 对它进行写操作则发送串行数据 1.2.3 串行口控制 1 (SCON1) SM0_1/FE_1 SM1_1 SM2_1 REN_1 TB8_1 RB8_1 TI_1 RI_1 SM0_1/FE_1: 串行口 1, 模式 0 控制位或贞错误标志位 PCON 特殊功能寄存器中的 SMOD0 位决定该位的功能 下面会描述 SM0_1 的运行功能 当用作贞错误标志时, 该位的置位表示一个无效的停止位 该位必须由软件来清除 SM1_1: 串行口模式位 1: SM0_1 SM1_1 模式 说明 数据长波特率 0 0 0 同步 8 时钟的 4 或 12 分之一 0 1 1 异步 10 可变 1 0 2 异步 11 时钟的 64 或 32 分之一 1 1 3 异步 11 可变 SM2_1: 多机通信控制 将该位置 1, 则使能模式 2 及模式 3 下的多机通信功能 在模式 2 或 3 下, 如果 SM2_1 置 1, 那么收到的第九位数据 RB8_1 是 0 的话,RI 将不会置位 在模式 1 下如果 SM2_1 置 1, 那么在没有收到有效的停止位前 RI 是不会置位的 在模式 0 下,SM2_1 位控制着串行口的时钟 如果清 0, 那么串行口的时钟是系统时钟的 12 分频 这样系统就与标准 8052 兼容 如果该位置 1, 那么串行口的时钟是系统时钟的 4 分频, 这样就加快了同步通信的速度 REN_1: 接收使能, 置 1 时打开串行口接收功能, 否则关闭该功能 TB8_1: 模式 2 和 3 中要被发送的第九位数据 软件可以根据需求将该位置 1 或清 0 RB8_1: 模式 2 和 3 中接收到的第九位数据 模式 1 下, 若 SM2_1=0 则 RB8 是接收到的停止位 模式 0 下该位无意义 TI_1: 发送中断标志 : 模式 0 下该标志由硬件在发送完 8 位数据后置位, 而在其他模式下在串行发送到停止位的开始时置位 该位必须由软件来清除. RI_1: 接收中断标志 : 模式 0 下该标志由硬件在接收到 8 位数据后置位, 而在其他模式下在串行接收到停止位的中间时置位 该位必须由软件来清除 Publication Release Date: May 02, 2006-5 - Revision SC1
1.2.4 串行数据接收缓冲 1 (SBUF1) SBUF1.7 SBUF1.6 SBUF1.5 SBUF1.4 SBUF1.3 SBUF1.2 SBUF1.1 SBUF1.0 SBUF1.7-0: 串行口 1 接收或发送的数据都放在这个寄存器中 实际上该地址上有 2 个独立的 8 位寄存器 一个用于接收数据, 一个用于发送数据 对它进行读操作将会接收串行数据, 对它进行写操作则发送串行数据 1.2.5 从机地址 (SADDR) SADDR: SADDR 中应当写入串行口 0 进行多机通信时的广播地址或是从机的地址 1.2.6 从机地址 1 (SADDR1) SADDR1: SADDR1 中应当写入串行口 1 进行多机通信时的广播地址或是从机的地址 1.3 电源控制 (PCON) SM0D SMOD0 - - GF1 GF0 PD IDL SMOD: 该位置 1 时, 会使串行口在模式 1,2,3 下的波特率加倍 SMOD0: 贞错误检测使能 : 该位置 1 时,SCON.7 表示一个贞错误它是 FE( 贞错误 ) 标志 当该位 0,SCON.7 的功能与标准 8052 中 SCON.7 相同 1.3.1 定时器 2 控制 (T2CON) TF2 EXF2 RCLK TCLK EXEN2 TR2 C / T2 CP / RL2 TF2: 定时器 2 溢出标志 : 该位置位表示定时器 2 溢出 在向下计数方式中, 如果计数值与捕捉寄存器的数值相等 TF2 也会置位 而且该位仅在 RCLK 和 TCLK 都为 0 的情况下被置位 该位只能由软件来清 0, 软件同样也可以对该位置 1 或清 0 EXF2: 定时器 2 外部事件标志 : 依照 CP / RL2,EXEN2 及 DCEN 的设置, 在 T2EX 管脚 (P1.1) 上出现低电平跳变, 或定时器 2 溢出时该位置位 如果是电平负跳变使该位置位, 那么必须由软件来清 0 如果打开相应的中断, 那么当软件将该位置位或是检测到一个电平负跳变时, 会引发一个定时器中断 RCLK: 接收时钟标志 : 该位决定串行口 0 在模式 1 和 3 下接收数据时的时基 如果该位置 0, 那么用定时器 1 的溢出做波特率发生器, 否则将会用定时器 2 的溢出做波特率发生器 将该位置位将迫使定时器 2 用作波特率发生器 - 6 -
TCLK: 发送时钟标志 : 该位决定串行口 0 在模式 1 和 3 下发送数据时的时基 如果该位置 0, 那么用定时器 1 的溢出做波特率发生器, 否则将会用定时器 2 的溢出做波特率发生器 将该位置位将迫使定时器 2 用作波特率发生器 EXEN2: 定时器 2 外部事件使能 如果定时器 2 不用做波特率发生器时, 该位将控制定时器 2 的捕捉 / 重装功能的开启与关闭 如果该位置 0, 那么 T2EX 管脚上的电平变化将被忽略, 否则 T2EX 上的电平变化将会引发捕捉或重装 1.3.2 使能 (IE) EA ES1 ET2 ES ET1 EX1 ET0 EX0 EA: 中断总控制位 使能 / 关闭所有中断 ET2: 使能定时器 2 中断. ES: 使能串口 0 中断 t. ET1: 使能定时器 1 中断 EX1: 使能外部中断 1 ET0: 使能定时器 0 中断 EX0: 使能外部中断 0 Publication Release Date: May 02, 2006-7 - Revision SC1
2. 串口 0 工作模式和演示程序 2.1 串口 0 的模式 0 2.1.1 特点 : 同步主动式半双工工作方式,RXD 上传输数据,TXD 是输出同步信号 ; 当 SM2=0 时波特率为时钟频率的 1/12, 当 SM2=1 时波特率为时钟频率的 1/4;8 位一帧 LSB 先传 2.1.2 串口 0 的模式 0 设置实例程序 void SetSP0M0(void) SM0=0;SM1=0; // 把串口 0 设置为模式 0 SM2=0; REN=1; ES0=1; // 波特率为 1/12 时钟频率 // 允许接受 // 允许串口 0 中断 // 允许全局中断 2.2 串口 0 的模式 1 2.2.1 特点 异步全双工的工作方式 ; 波特率可以是 :1/16 的定时器 1 溢出频率 1/32 的定时器 1 溢出频率 1/16 的定时器 2 溢出频率 ; 10 位 (1 位起始位 +8 位数据位 +1 位结束位 ) 一帧 LSB 先传 2.2.2 串口 0 的模式 1 设置实例程序 //=== 用定时器 2 溢出产生串口时钟 void SetSP0M1(void) RCAP2H=0Xff;RCAP2L=0Xd9; // 设置定时器 2 TH2=0xff;TL2=0xd9; T2CON&=0xFD; TCLK=0x01;RCLK=0x01; TR2=1; // 把定时器 2 设置为计数器模式 // 把定时器 2 设置为波特率产生器 // 定时器 2 开始计时 SM0=0;SM1=1; // 把串口 0 设置为模式 1 SM2=0; ES0=1; 许串口 0 中断 // 允许全局中断 // 允 - 8 -
2.3 串口 0 的模式 2 2.3.1 特点 异步全双工的工作方式 ; 波特率可以是 :1/32 或 1/64 Fosc( 系统时钟频率 ); 11 位 (1 位起始位 +8 位数据位 +1 位 TB8+1 位结束位 ) 一帧 LSB 先传 2.3.2 串口 0 的模式 2 设置实例程序 void SetSP0M2(void) PCON=0; // 波特率可以是 : 1/64 Fosc SM0=1;SM1=0; // 把串口 0 设置为模式 2 SM2=0; TB8=1; ES0=1; // 允许串口 0 中断 // 允许全局中断 2.4 串口 0 的模式 3 2.4.1 特点 异步全双工的工作方式 ; 波特率可以是 :1/16 的定时器 1 溢出频率 1/32 的定时器 1 溢出频率 1/16 的定时器 2 溢出频率 ;11 位 (1 位起始位 +8 位数据位 +1 位 TB8+1 位结束位 ) 一帧 LSB 先传 2.4.2 串口 0 的模式 1 设置实例程序 //=== 用定时器 2 溢出产生串口时钟 void SetSP0M1(void) RCAP2H=0Xff;RCAP2L=0Xd9; // 设置定时器 2 TH2=0xff;TL2=0xd9; T2CON&=0xFD; TCLK=0x01;RCLK=0x01; TR2=1; // 把定时器 2 设置为计数器模式 // 把定时器 2 设置为波特率产生器 // 定时器 2 开始计时 SM0=1;SM1=1; // 把串口 0 设置为模式 3 SM2=0; ES0=1; // 允许串口 0 中断 // 允许全局中断 Publication Release Date: May 02, 2006-9 - Revision SC1
3. 串口 1 工作模式和演示程序 3.1 串口 1 的模式 0 3.1.1 特点 : 同步主动式半双工工作方式,RXD 上传输数据,TXD 是输出同步信号 ; 当 SM2=0 时波特率为时钟频率的 1/12, 当 SM2=1 时波特率为时钟频率的 1/4;8 位一帧 LSB 先传 3.1.2 串口 1 的模式 0 设置实例程序 void SetSP1M0(void) SM01=0;SM11=0; // 把串口 1 设置为模式 0 SM21=0; ES1=1; // 波特率为 1/12 时钟频率 // 允许串口 0 中断 // 允许全局中断 3.2 串口 1 的模式 1 3.2.1 特点 异步全双工的工作方式 ; 波特率可以是 :1/16 的定时器 1 溢出频率 1/32 的定时器 1 溢出频率 ; 10 位 (1 位起始位 +8 位数据位 +1 位结束位 ) 一帧 LSB 先传 3.2.2 串口 1 的模式 1 设置实例程序 //=== 用定时器 1 溢出产生串口时钟, void SetSP1M1(void) TH1=0xF6;TL1=0xF6; TMOD&=0x0F; TMOD =0x20; TR1=1; CKCON =0x10; SM01=0;SM11=1; SM21=0; ES1=1; - 10 -
3.3 串口 1 的模式 2 3.3.1 特点 异步全双工的工作方式 ; 波特率可以是 :1/32 或 1/64 Fosc( 系统时钟频率 ); 11 位 (1 位起始位 +8 位数据位 +1 位 TB8+1 位结束位 ) 一帧 LSB 先传 3.3.2 串口 1 的模式 2 设置实例程序 void SetSP1M2(void) CKCON&=0XF7; SM01=1;SM11=0; SM21=0; REN1=1; ES1=1; 3.4 串口 1 的模式 3 3.4.1 特点 异步全双工的工作方式 ; 波特率可以是 :1/16 的定时器 1 溢出频率 1/32 的定时器 1 溢出频率 ;11 位 (1 位起始位 +8 位数据位 +1 位 TB8+1 位结束位 ) 一帧 LSB 先传 3.4.2 串口 1 的模式 1 设置实例程序 //=== 用定时器 1 溢出产生串口时钟 void SetSP1M3(void) TH1=0xF6;TL1=0xF6; TMOD&=0x0F; TMOD =0x20; TR1=1; CKCON&=0XF7; PCON=0; SM01=1;SM11=1; SM21=0; ES1=1; Publication Release Date: May 02, 2006-11 - Revision SC1
4. 中断服务程序的写法 4.1 串口 0 中断程序的写法 void SP0_ISR() interrupt 4 using 2 if(ri==1) RI=0; TI=0; 4.2 串口 1 中断程序的写法 void SP1_ISR() interrupt 7 using 3 if(ri1==1) RI1=0; TI1=0; 参照文件 W77 系列的芯片规格书 - 12 -
5. 文件版本描述 版本日期页码描述 SC1 May 02, 2006 初次发行 Headquarters No. 4, Creation Rd. III, Science-Based Industrial Park, Hsinchu, Taiwan TEL: 886-3-5770066 FAX: 886-3-5665577 http://www.winbond.com.tw/ Taipei Office 9F, No.480, Rueiguang Rd., Neihu District, Taipei, 114, Taiwan, R.O.C. TEL: 886-2-8177-7168 FAX: 886-2-8751-3579 Winbond Electronics Corporation America 2727 North First Street, San Jose, CA 95134, U.S.A. TEL: 1-408-9436666 FAX: 1-408-5441798 Winbond Electronics Corporation Japan 7F Daini-ueno BLDG, 3-7-18 Shinyokohama Kohoku-ku, Yokohama, 222-0033 TEL: 81-45-4781881 FAX: 81-45-4781800 Winbond Electronics (Shanghai) Ltd. 27F, 2299 Yan An W. Rd. Shanghai, 200336 China TEL: 86-21-62365999 FAX: 86-21-62365998 Winbond Electronics (H.K.) Ltd. Unit 9-15, 22F, Millennium City, No. 378 Kwun Tong Rd., Kowloon, Hong Kong TEL: 852-27513100 FAX: 852-27552064 Please note that all data and specifications are subject to change without notice. All the trademarks of products and companies mentioned in this datasheet belong to their respective owners. Publication Release Date: May 02, 2006-13 - Revision SC1