标题:
关于输出比较!急,在线等。
[打印本页]
作者:
第8个伙伴
时间:
2010-7-7 16:29
标题:
关于输出比较!急,在线等。
本帖最后由 第8个伙伴 于 2010-7-7 16:53 编辑
我现在用输出比较功能实现串行数据的输出,用通道0作为输出比较,引脚接到串口的发生端S0,芯片是MC9S12XEP100。
初始化都做好了,能够进入中断,现在就是发送数据这段卡住了,发送不出去。
下面是本人写的程序,不知道对不对。波特率是9600,8个数据位,一个停止位。总线频率为16MHZ,分频为0.
__interrupt 8 void ISR_TimerChan0(void)
{
ECT_TSCR1|=(1<<7);//清空标志位
ECT_TFLG1=0x01;
asm "sei"; //关中断
a=SCI_received();
// 发送起始位
ECT_TC0=ECT_TCNT+1666;
ECT_TCTL2=0x02;
while(ECT_TCNT<ECT_TC0) ;
//发送输入数据
for(i=0;i<8;i++)
{
b=a;
b&=(1<<i);
// ECT_TCNT=0;
ECT_TC0=ECT_TCNT+1666;
if(b)
{
ECT_TCTL2=0x03;
// ECT_TCNT=0;
while(ECT_TCNT<ECT_TC0);
}
else
{
ECT_TCTL2=0x02;
while(ECT_TCNT<ECT_TC0);
// ECT_TCTL2=0x02;
}
}
//发送停止位
ECT_TC0=ECT_TCNT+1666;
ECT_TCTL2=0x03;
while(ECT_TCNT<ECT_TC0);
ECT_TFLG1 |= (1<<0);
ECT_TSCR1=0x80;
asm "cli";
}
跪求解答!!!在线等
作者:
第8个伙伴
时间:
2010-7-7 22:00
本帖最后由 第8个伙伴 于 2010-7-7 22:09 编辑
版主能讲解一下用输出比较作为串行数据发送的原理吗?过程是怎么样的,我发觉TCNT的计数速度太快了,比语句的运行时间还快~用延时的话,一下就跳出去了?????或者有无有相关的代码,发给我好嘛?
作者:
只爱晓晨
时间:
2010-7-8 10:55
SW新。三件没用。?你老老实实去换吧。真的你比身上的散件好。你身上除了MJ,胸,护腕可以不换。其他都得换。
作者:
第8个伙伴
时间:
2010-7-8 11:58
???本人是CW初学者。。什么SW新,三件没用?
作者:
strongchen
时间:
2010-7-15 11:34
要实现你所说的功能,总的思路应该这样:要在主程序中进行软硬件初始化和程序运行控制标志位的管理;当中断产生时,进入中断服务程序,此时只需写入下次中断的时间即可,无需做别的事情--引脚的电平翻转可由输出不比较功能自动实现。而下次发生中断的时间,应该与要输出的数据有关 —— 并不是每一位都需要中断。相反,每次产生中断后电平必须翻转。
作者:
wensrr
时间:
2010-7-16 11:02
恩,呵呵 ,好分享···
净水器
酒神
晨月阁
异世邪君
长生界快眼
天才医生
武神 苍天白鹤
修真世界
天神下凡
净水机
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0