本帖最后由 寒冰萧 于 2012-4-8 12:53 编辑
第一次使用串口调试,想使用串口猎人。由于水平有限,反复调试代码猎人仍旧无法正常收到我想要的数据(我想发送一个整型,用猎人直接显示出来的也是整型)。昨天发了个求助帖,却引来了几位同病相怜的战友。经过通宵推敲,猎人显示的数据似乎有那么一点意思。这里把我之前的疑问写点自己的理解,望高手指点,也算是给其他疑惑的兄弟一点提示。 完整代码:
main.c:
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#include <stdio.h>
void SetBusCLK_80M(void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR =0xc0 | 0x09;
REFDV=0xc0 | 0x01;
POSTDIV=0x00; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=160MHz;
_asm(nop); //BUS CLOCK=80M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
void SCI_Init(void)
{
SCI0CR1=0x00;
SCI0CR2=0x0c; //enable Receive Full Interrupt,RX enable,Tx enable
SCI0BDH=0x02; //busclk=80M , 9600bps;
SCI0BDL=0x09;
}
/*The implementation of void_SCIWriteInt function*/
void void_SCIWriteInt(const int SCIdata)
{
while(!SCI0SR1_TDRE);
SCI0DRL = 0xff;
while(!SCI0SR1_TDRE);
SCI0DRL = (byte)(SCIdata>>8);
while(!SCI0SR1_TDRE);
SCI0DRL = (byte)(SCIdata);
while(!SCI0SR1_TDRE);
SCI0DRL = 0xfe;
}
extern byte by_SCIReadDataBuffer;
extern int SCIdata;
void main(void)
{
DisableInterrupts;
SetBusCLK_80M();
SCI_Init();
EnableInterrupts;
SCIdata = 4800;
while(1)
{
void_SCIWriteInt(SCIdata);
}
}
基本功能界面:
高级收码界面:
波形显示界面: 以上是我的想法,望高手斧正。 还有,我想请教如何用中断进行SCI通讯。高级发码我也不懂,具体代码要怎么写。
最后附上串口猎人安装包:
|