综合操作: (s2con & 0x3f) |0x40: 这行代码的综合效果是保留 S2CON 的低 6 位,并将第 6 位设置为 1。 总结起来,这行代码的作用是确保 S2CON 寄存器的低 6 位保持不变,同时将第 6 位设置为 1。 其实就是先把前2位清0后第6位置1,其他位不变! 这样就是选模式1--可变波特率8位数据方式(此时第三位B5要设置为0) B4:S2REN = 1; //再把第4位置1允许接收 S2CON到此前4位变成了0101。后4位B3是S2TB8,B2是S2RB8
S2TB8:当串口 2 使用模式 2 或模式 3 时,S2TB8 为要发送的第 9 位数据,按需要由软件置位或清 0。在模式 0 和模式 1 中,该位不用。 S2RB8:当串口 2 使用模式 2 或模式 3 时,S2RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧标志位。在模式9和模式1中,该位不用。 B1:是S2TI B0:是S2RI S2TI:串口 2 发送中断请求标志位。在模式 0 中,当串口发送数据第 8 位结束时,由硬件自动将 S2TI置1,向主机请求中断,响应中断后S2TI必须用软件清零。在其他模式中,则在停止位开始发送时由硬件自动将S2TI置1,向CPU发请求中断,响应中断后S2TI必须用软件清零。 S2RI:串口 2 接收中断请求标志位。在模式 0 中,当串口接收第 8 位数据结束时,由硬件自动将 S2RI置1,向主机请求中断,响应中断后S2RI必须用软件清零。在其他模式中,串行接收到停止位的中间时刻由硬件自动将S2RI置1,向CPU发中断申请,响应中断后S2RI必须由软件清零。 所以后4位中的前2位模式1不用管,后2位在中断函数处理
到此 s2con就配置好了。
|