问:在调试UART程序时,为什么在IDE中查看不到SBUF0的值?那么如何察看接收和发送是否正确?

答:UART发送寄存器和UART接收锁存器共用一个SFR地址,但是占用不同的物理存储区域。请参看器件的数据手册的UART框图部分。
读SBUF将返回接收数据锁存器的内容。写SBUF将写发送移位寄存器的内容。在Silabs IDE中写数据到传输 寄存器是不可见的。如果你想确认发送和接收是否正确,你可将UART的TX和RX引脚连在一起来测试发送和接收是否正确。

生成海报
点赞 0

创世纪

单片机学习,电子制作DIY学习与分享,各种新鲜的,有趣的,好玩的,一起来吧!机器人、无人机、树莓派/Raspberry Pi、arduino、极客、创客等

暂无评论

发表评论

相关推荐

单片机对modem要进行哪些初始化操作?

答:一般单片机的MODEM通讯必须要有两个背景知识,一个是AT命令集,另一个是通用非同步接收发送器(UART)。 ①AT命令集 下面介绍我通讯程式例子中涉及到的AT命令。 Dn:拨号命令。该命令使MODEM立即进入摘机状态,并拨出跟在后面的号码。D命令是基本的拨号命令,它受到其他命令的修饰可构成MODEM何时拨号以及如何拨号等操作。 T:音频拨号。例如,ATDT8886666,其中8886666为电话号码。 P:脉冲拨号。例如,ATDP8886666,其中8886666为电话号码。 ,:标准暂停。我们常常碰到拨打外线电话时需要暂停一下,等听到二次拨号音(外线)之后才能再拨后续的号码。缺省时暂停时间为2s(秒),它由S8寄存器指定。 Sn:表示MODEM内部的寄存器。 S0:自动回应。如果要求MODEM具有自动回应特性,则应该预先将MODEM的S0寄存器设置为非0。 S8:逗号拨号修饰符的暂停时间。该寄存器决定了当MODEM在拨号中遇 到逗号(,)时应该暂停的时间。 ②通用非同步接收发送器UART 深入理解UART内部结构以及内部寄存器各位的含义,详细了解资料发送和接收的过程,有助于编写出高效、稳定的程式。一般介绍编写基本通讯程式需要知道的寄存器。实际的ADDRESS由具体接线决定。 串列传输速率除数锁存器(LSB、MSB) 在通讯之前要进行一些参数初始化,串列传输速率是首先应该考虑的一项。该寄存器是一个16位的寄存器,分为低8位(LSB)和高8位(MSB)寄存器。 另外单片机访问的是串列传输速率除数锁存器LSB/MSB。一般常用的工作频率是1。8432MHz。这个频率除以16就是串列传输速率的时钟频率,用于控制发送和接收资料的速度。 下面给出串列传输速率除数锁存器值的计算公式: 串列传输速率除数锁存器值=工作频率/(16×期望串列传输速率)=1843200/(16×期望串列传输速率)接收缓冲寄存器和发送保持寄存器(transmit and receive holding register) 读操作单片机访问接收缓冲寄存器(RHR),写操作单片机访问发送保持寄存器(THR)。 中断允许寄存器(interrupt enable register)FIFO控制寄存器(FIFO control register) 资料发送和接收模式的选择。常用的两种模式:FIFO和DMA。其中DMA又有两种模式DMA的模式0、DMA的模式1可供选择。

问:C8051F单片机是怎样调试用户系统的?

答:C8051F 单片机是用开发套件来调试用户系统的。单片机开发套件包括开发软件IDE(集成开发环境),U-EC2至PC机USB口和单片机JTAG接口的协议转换模块和一个目标板(板上有C8051F MCU)。IDE中集成编译器,汇编器和连接器,支持汇编语言和C语言(第三方支持);U-EC2是从USB口到JTAG协议的转换模块。 目标板上带有一块相应的C8051F MCU和一些简单的外围电路构成一个最小单片机系统,并将所有引脚连接到插座。C8051F单片机片内集成了一个以JTAG协议为基础的调试电路,这样在调试您的系统时,不需要专用仿真芯片、目标仿真头及目标RAM等。您在IDE上编译生成程序代码后,通过U-EC2(连接到计算机USB口和JTAG接口)将代码下载到用户系统板的C8051F MCU的Flash存储器中,然后您就可以调试您的目标系了。