[ZLG-MCU] 请问使用lpc952的uart1时应注意什么问题?

[复制链接]
2637|3
 楼主| anchorman 发表于 2007-1-8 12:18 | 显示全部楼层 |阅读模式
同样的程序用在uart0时时正常的,转移到uart1时就检测不到TI_1,也无中断。请问使用uart1时应注意什么问题?
zlgmcu 发表于 2007-1-8 12:26 | 显示全部楼层

您好,凡是我们的客户可以直接向我们的销售索取范例.

  
officeants 发表于 2007-1-10 16:13 | 显示全部楼层

路过,看看

好像是一样的
jdwang 发表于 2007-6-10 19:57 | 显示全部楼层

P89LPC952的UART1

P89LPC952的亮点之一是有2个串口。最近我在试验第一个串口UART0很顺利地通过了。但在试验第二个串口UART1时间很不顺利。网上搜索发现也有人无法使UART1正常工作。经过对952进行模拟调试,发现NXP公司的数据手册中UART1的控制寄存器S1CON的地址和PCONA地址相同都是0B5H,而S1CON的正确地址是0B6H,改正之后UART1即可正常工作。另外要注意S1CON的各位不能位寻址,这和S0CON不同。下面是通过UART1发送一组数据的小程序,下载到952能够正确运行。<br />$NOMOD51<br />$INCLUDE&nbsp;(REG952.INC)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RCOUNT&nbsp;EQU&nbsp;40H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDR&nbsp;EQU&nbsp;41H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T_BUFF&nbsp;EQU&nbsp;70H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RCV_FLAG&nbsp;&nbsp;&nbsp;&nbsp;BIT&nbsp;01H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LEDCON&nbsp;BIT&nbsp;P1.6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;0000H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AJMP&nbsp;MAIN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;0023H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;LJMP&nbsp;SVC_SCI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;接收中断入口<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;0100H<br />;*****************************************************<br />MAIN:&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R7,#20H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DJNZ&nbsp;R7,$<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P1M1,#00H&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P1M2,#40H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#P4M1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVX&nbsp;@DPTR,A<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#P4M2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVX&nbsp;@DPTR,A;设置P4.2(TXD1),P4.3(RXD1)为准双向口<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;P4,#0FFH<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;LEDCON<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;D1S<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;LEDCON<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;S1CON,#50H;设置串口为工作方式1,允许串口接收&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#BRGCON_1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设置串口波特率:Fosc&nbsp;/&nbsp;((BRGR1,BRGR0)+16)<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVX&nbsp;@DPTR,A&nbsp;&nbsp;&nbsp;;关波特率发生器<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#BRG1_1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,#02H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVX&nbsp;@DPTR,A&nbsp;&nbsp;&nbsp;;内部RC振荡器,波特率9600<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#BRG0_1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,#0E0H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVX&nbsp;@DPTR,A&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#BRGCON_1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,#03H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVX&nbsp;@DPTR,A&nbsp;&nbsp;&nbsp;;打开串口波特率发生器,使用串口波特率发生器<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;IEN2,#00H&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;禁止UART1接收中断<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;ADDR,#60H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;RCOUNT,#0DH<br />&nbsp;&nbsp;&nbsp;&nbsp;LCALL&nbsp;TRANSA<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SJMP&nbsp;$<br />TRANSA:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF,#01H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF+1,#04H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF+2,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF+3,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF+4,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF+5,#00H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF+6,#0F0H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;T_BUFF+7,#0AH&nbsp;&nbsp;&nbsp;&nbsp;;发送数据子程序010400000000F00A<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R3,#08H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;R0,#T_BUFF<br />TRANSA1:&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,@R0<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;DPTR,#S1BUF<br />&nbsp;&nbsp;&nbsp;&nbsp;MOVX&nbsp;@DPTR,A<br />WAITHA:&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;A,S1CON<br />&nbsp;&nbsp;&nbsp;&nbsp;JNB&nbsp;ACC.1,WAITHA&nbsp;&nbsp;&nbsp;&nbsp;;取TI_1位,判断是否为1<br />&nbsp;&nbsp;&nbsp;&nbsp;ANL&nbsp;S1CON,#0FDH&nbsp;&nbsp;&nbsp;&nbsp;;TI_1=1,则该位清零(S1CON不能位寻址)<br />&nbsp;&nbsp;&nbsp;&nbsp;INC&nbsp;R0<br />&nbsp;&nbsp;&nbsp;&nbsp;DJNZ&nbsp;R3,TRANSA1<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;RCOUNT,#0DH<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;ADDR,#60H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;S1CON,#50H<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;IEN2,#04H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;开放UART1接收中断<br />&nbsp;&nbsp;&nbsp;&nbsp;SETB&nbsp;EA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;开放总中断,等待接收测量数据<br />&nbsp;&nbsp;&nbsp;&nbsp;RET<br /><br />上面是我的试验程序的发送程序片段,供还在走弯路的朋友参考。另外请周立功公司应该立即更正数据手册。952的初始化程序REG952.INC我在周立功网的论坛上发过,只要把其中的S1CON的地址改为0B6H即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部