PIC18F4550问题!!!!

[复制链接]
3032|4
 楼主| win2000_li 发表于 2007-12-12 20:56 | 显示全部楼层 |阅读模式
我是初学PIC。<br />要做一个采集卡。<br />其中有串口,USB。<br /><br />现在的问题是串口的设置问题。(由于手上没有ICD2)<br />暂时只有软件仿真。<br /><br />请大家帮我看一下,这个程序有没有错。<br /><br />********************************************************<br />*&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;&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;&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;&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;&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 />*********************************************************/<br />void&nbsp;system_init(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.GIE&nbsp;=&nbsp;False;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关中断<br />&nbsp;&nbsp;&nbsp;&nbsp;//特殊功能寄存器设置<br />&nbsp;&nbsp;&nbsp;&nbsp;//TRISC&nbsp;=&nbsp;0b00000000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设端口RC7,RC6为输出<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISCbits.TRISC6&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//RX<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISCbits.TRISC7&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TX<br />&nbsp;&nbsp;&nbsp;&nbsp;/////////////////////////////////////////////////////<br />&nbsp;&nbsp;&nbsp;&nbsp;//串口设定<br />&nbsp;&nbsp;&nbsp;&nbsp;SPBRG&nbsp;=&nbsp;0x81;&nbsp;&nbsp;&nbsp;&nbsp;//晶振20M时波特率:9600<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//接收数据寄存器器设置<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTA&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTAbits.CREN&nbsp;=&nbsp;True;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//打开连续接收<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE1bits.RCIE&nbsp;=&nbsp;True;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//中断方式接收<br />&nbsp;&nbsp;&nbsp;&nbsp;PIR1bits.RCIF&nbsp;=&nbsp;False;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//中断位清0<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//发送接收数据寄存器器设置<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTA&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXSTA&nbsp;=&nbsp;0x20;//SYNC=0;BRGH=0;位必须设为0及异步波特率为低速模式<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//使能串口<br />&nbsp;&nbsp;&nbsp;&nbsp;RCSTAbits.SPEN&nbsp;=&nbsp;True;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//打开串口<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.PEIE&nbsp;=&nbsp;True;&nbsp;&nbsp;&nbsp;//允许所有关未屏蔽的外围中断<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCONbits.GIE&nbsp;=&nbsp;True;&nbsp;&nbsp;&nbsp;&nbsp;//开中断<br />/////////////////////////////////////////////////////////<br />}<br /><br /><br /><br />/********************************************************<br />*&nbsp;功能描述:从串行口发送n个字符&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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br />*********************************************************/<br />void&nbsp;SendNumChar(unsigned&nbsp;char&nbsp;*SendAddr,&nbsp;unsigned&nbsp;char&nbsp;Num)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(;&nbsp;Num&nbsp;&gt&nbsp;0;&nbsp;Num--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXREG&nbsp;=&nbsp;*SendAddr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SendAddr++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(!PIR1bits.TXIF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1bits.TXIF&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//未发送完毕,等待<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br />
 楼主| win2000_li 发表于 2007-12-13 23:32 | 显示全部楼层

谢谢!!!

请大家给看一看啊!!!!<br /><br />我是初学者
兰天白云 发表于 2007-12-14 08:22 | 显示全部楼层

有误

1:根据数据手册,RX/TX端口搞错<br />2:TXSTA&nbsp;=&nbsp;0x20;//SYNC=0;BRGH=0;位必须设为0及异步波特率为低速模式<br />&nbsp;&nbsp;BRGH=1时,误差会更小<br />
 楼主| win2000_li 发表于 2007-12-17 20:48 | 显示全部楼层

谢谢,指点!!!

还有,那么这两个RX,TX要设置成输入啊,还是要设置成输出啊!!!<br /><br />在异步通讯的情况下,请兄弟们指点!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

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