救命~~~为什么没有输出呢?

[复制链接]
2247|2
 楼主| eliucheng 发表于 2008-6-21 15:48 | 显示全部楼层 |阅读模式
TE, UART, ov, abi, se
&nbsp;<br />//void&nbsp;InitUART1(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;申明UART1初始化程序&nbsp;&nbsp;&nbsp;<br />void&nbsp;Configure_UART&nbsp;(void)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;volatile&nbsp;(&nbsp;&quot;MOV&nbsp;&nbsp;&nbsp;&nbsp;#OSCCON,w1&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV&nbsp;&nbsp;&nbsp;&nbsp;#0x46,w2&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV&nbsp;&nbsp;&nbsp;&nbsp;#0x57,w3&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV.b&nbsp;&nbsp;w2,[w1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV.b&nbsp;&nbsp;w3,[w1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;BCLR&nbsp;&nbsp;&nbsp;OSCCON,#6&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;configure&nbsp;input&nbsp;funcitions<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;assign&nbsp;u1rx&nbsp;to&nbsp;pin&nbsp;rp2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RPINR18bits.U1RXR&nbsp;=&nbsp;2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;assign&nbsp;u1tx&nbsp;to&nbsp;pin&nbsp;rp3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RPOR1bits.RP3R&nbsp;=&nbsp;3;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asm&nbsp;volatile&nbsp;(&nbsp;&quot;MOV&nbsp;&nbsp;&nbsp;&nbsp;#OSCCON,w1&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV&nbsp;&nbsp;&nbsp;&nbsp;#0x46,w2&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV&nbsp;&nbsp;&nbsp;&nbsp;#0x57,w3&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV.b&nbsp;&nbsp;w2,[w1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MOV.b&nbsp;&nbsp;w3,[w1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;BSET&nbsp;&nbsp;&nbsp;OSCCON,&nbsp;#6&quot;&nbsp;&nbsp;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AD1PCFG&nbsp;=&nbsp;0XFFFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;模拟通道全部配置为I/O通道&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISBbits.TRISB2&nbsp;=&nbsp;INPUT;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;-&nbsp;U1RX<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRISBbits.TRISB3&nbsp;=&nbsp;OUTPUT;&nbsp;&nbsp;&nbsp;//&nbsp;UART&nbsp;-&nbsp;U1TX<br /><br />}<br /><br />void&nbsp;Uart_Init()<br />{&nbsp;<br />&nbsp;&nbsp;&nbsp;U1MODE=0x8800;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;U1STA=0x8000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;U1BRG=51;&nbsp;&nbsp;//19200<br />&nbsp;&nbsp;&nbsp;IFS0bits.U1TXIF=0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;IFS0bits.U1RXIF=0;<br />&nbsp;&nbsp;&nbsp;IEC0bits.U1TXIE=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//UART1&nbsp;发送器中断允许位<br />&nbsp;&nbsp;&nbsp;IEC0bits.U1RXIE=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//UART1&nbsp;接收器中断允许位<br />&nbsp;&nbsp;&nbsp;IPC2bits.U1RXIP=2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//中断优先级高于定时器优先级<br />&nbsp;&nbsp;&nbsp;IPC3bits.U1TXIP=2;<br />&nbsp;<br />}<br /><br />void&nbsp;Timer1Init()<br /><br />void&nbsp;delay()<br />{<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;k=0;<br />&nbsp;&nbsp;&nbsp;while(k&lt10000)<br />&nbsp;&nbsp;&nbsp;k++;&nbsp;<br />}<br /><br />/*********************************<br />//__attribute__((__interrupt__))_U1RXInterrupt()<br />//串口1接收中断服务子程序&nbsp;<br />**********************************/<br />void&nbsp;__attribute__((__interrupt__))_U1RXInterrupt()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;IFS0bits.U1RXIF=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(U1STAbits.OERR)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1STAbits.OERR=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(U1_receive_count&lt700)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1_receive[U1_receive_count]=U1RXREG;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1_receive_count++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1_receive_count=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;}<br />}<br />/**********************************<br />//__attribute__((__interrupt__))_U1TXInterrupt()<br />//发送中断服务子程序&nbsp;&nbsp;&nbsp;<br />*********************************/<br /><br />void&nbsp;__attribute__((__interrupt__))_U1TXInterrupt()<br />{<br />&nbsp;&nbsp;&nbsp;IFS0bits.U1TXIF=0;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;while(U1_send_count&lt=6)//<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1TXREG&nbsp;=U1_receive[U1_send_count]&nbsp;;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!U1STAbits.TRMT);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1_send_count++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;if(U1_send_count&gt6)//send_count&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1STAbits.UTXEN=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1_send_count=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />&nbsp;&nbsp;&nbsp;}&nbsp;<br /><br />}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />int&nbsp;main(void)<br />{<br />&nbsp;&nbsp;Configure_UART();&nbsp;&nbsp;&nbsp;//&nbsp;设置RP2,RP3为UART1通讯口&nbsp;&nbsp;Uart_Init();<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISAbits.TRISA0&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISBbits.TRISB12&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISBbits.TRISB13&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LATAbits.LATA0&nbsp;=&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LATBbits.LATB12&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;LATBbits.LATB13&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((U1_receive_count%2)&nbsp;==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LATBbits.LATB13&nbsp;=&nbsp;!LATBbits.LATB13&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;LED&nbsp;D3&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LATAbits.LATA0&nbsp;=&nbsp;!LATAbits.LATA0&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;LED&nbsp;D1<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;U1STAbits.UTXEN&nbsp;=&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;}<br />}接收可以正常&nbsp;&nbsp;但是发送引脚没有输出!
兰天白云 发表于 2008-6-21 21:44 | 显示全部楼层

你是用示波器看的?

  
 楼主| eliucheng 发表于 2008-6-23 10:10 | 显示全部楼层

是啊!引脚一直高电平!

硬件&nbsp;应该没问题&nbsp;因为原来验证过@!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

64

帖子

0

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