51手记之MEGAWIN
同标准51;
串行口可以工作在四种模式:模式 0 提供同步通讯同时模式 1、2 和模式 3 提供异步通讯。异步通讯作为一个全双工的通用异步收发器(UART),可以同时发送和接收并使用不同的波特率。
模式0:8位数据(低位先出)通过RXD0(P3.0)传送和接收,波特率可通过SCFG寄存器的URM0X6位选择为系统时钟频率的1/12或1/2。
模式1:10位数据通过TXD0传送或通过RXD0接收,波特率是可变的。
模式2:11位数据通过TXD0传送或通过RXD0接收,波特率可以配置为1/32或1/64 的系统时钟频率
模式3:11位数据通过TXD0传送或通过RXD0接收,波特率是可变的。
除了标准操作外,UART0还能具有侦察丢失停止位的帧错误和自动地址识别的功能。
串口1使用独立波特率发生器,串口0可选择使用定时器1或定时器2(T2CON的RCLK和TCLK决定),也可共用串口1的波特率(RCLK=0,TCLK=0及URTS=1) 串口1使用的寄存器SCON1、SBUF1、S1BRT需要切换到SFR页1才能使用:SFRPI=0X01;7.可编程计数器阵列(PCA)
该功能与标准定时/计数器相比以更少的CPU占用提供了更多的定时能力。它的优点包括减少了软件复杂度并提高了精度。
PCA由一个专用定时/计数器作为一个6组比较/捕获模块的时间基础,6组比较/捕获模块中的每一组都可以编程为如下任意模式:
- 上升和/或下降沿捕获
- 软件定时器
- 高速输出
- 脉宽调制(PWM)输出
1)PCA 定时器/计数器
它的时钟输入可以从以下来源选择(CPS1 和 CPS0选择):
- 1/12 系统时钟频率
- 1/2 系统时钟频率
- 定时器0溢出,可以让低频时钟源输入到PCA定时器
- 外部时钟输入,ECI(P1.1)引脚的1-0反转
2)比较/捕获模块
6组比较/捕获模块中的每一组都有一个模式寄存器,叫做CCAPMn(n代表0,1,2,3,4,5),来选择其工作模式。ECCFn位控制当中断标志置位时每个模块的中断开启/关闭。
3)PCA运行模式
具体工作模式与STC同。
提供4种精度的PWM输出:8位(可自动重载)、10位、12位、16位(后3种需手动重载溢出值)
8.串行外设接口(SPI)
提供了一个高速串行通讯接口(SPI)。SPI接口是一种全双工、高速同步通讯总线,有两种操作模式:主机模式和从机模式。无论哪种模式,12MHz系统时钟时支持高达3Mbps的通讯速度。SPI状态寄存器(SPSTAT)有一个传送完成标志(SPIF)和写冲突标志(WCOL)。
SPI接口有4个引脚:MISO (P1.6), MOSI (P1.5), SPICLK (P1.7) 和nSS (P1.4)。
1)典型SPI配置模式:
a.单主机单从机
b.互为主机/从机
c.单主机多从机
2)注意事项
SPI通讯中,传输总是由主机发起 。若 SPI使能(SPEN=1)并作为主机运行,写入SPI数据寄存器(SPDAT) 数据即可启动SPI时钟生成器和数据传输器,大约半个到1个SPI位时间后写入SPDAT的数据开始出现在MOSI线上。
在开始传输之前,主机通过拉低相应nSS引脚选择一个从机作为当前从机。写入SPDAT寄存器德数据从主机MOSI引脚移出,同时从从机MISO移入主机MISO的数据也写入到主机的SPDAT寄存器中。移出1字节后,SPI时钟发生器停止,置传输完成标志SPIF,若SPI中断使能则生成一个中断。主机CPU和从机CPU中的两个移位寄存器可以看成一个分开的16位环形移位寄存器,数据从主机移到从机同时数据也从从机移到主机。这意味着,在一次传输过程中,主从机数据进行了交换。
SPI在发送方向是单缓冲的,而在接收方向是双缓冲的。发送数据直到上一次数据发送完成后才能写入移位寄存器,数据发送过程中写入数据寄存器就会使WCOL(SPSTAT.6) 置位来表明数据冲突。这种情况下,正在发送的数据继续发送,而刚写入数据寄存器造成冲突的数据就会丢失。WCOL使用软件向其位写入’1’来清零。
SPI时钟频率选择(主机模式)使用SPCTL寄存器的SPR1 和SPR0 位来设置。
9.键盘中断
键盘中断功能主要用于当P2口等于或不等于某个值时产生一个中断,这个功能可以用作总线地址识别或键盘键码识别。
键盘中断掩码寄存器(KBMASK) 用来定义P2口哪些引脚可以产生中断;键盘模式寄存器(KBPATN)用来定义与P2口值进行比较的值,比较匹配时硬件置键盘中断控制寄存器(KBCON)中的键盘中断标志(KBIF)。
10.10位模数转换器ADC
ADC子系统由一个模拟多路器(AMUX)、一个200ksps、10逐次逼近型模数转换器组成。ADC转换时钟由ADCON寄存器的SPEED1、SPEED0两位决定的系统时钟分频而来。(备注:目前建议ADC操作时,系统时钟不要超过20MHz)ADC转换结果=Vin*1024/Vdd;
在使用ACD功能之前,用户应:
a.设置ADCEN 位启动ADC硬件;
b.设置SPEED1 和 SPEED0位设定转换速度;
c.设置CHS2、CHS1
51手记MEGAWI 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)