论坛风格切换切换到宽版
  • 4178阅读
  • 5回复

mplab IDE+PICC如何产生汇编文件 [复制链接]

上一主题 下一主题
离线XLDZZ
 
发帖
443
只看楼主 倒序阅读 0楼 发表于: 2010-12-19
最近写个东西 遇到一个怪事如下

使用while(1)死循环

内部为发送8bit数据 用示波器看了下

前面几个发送数据对的 到了后面几个发送完以后数据就不对了

照我的理解 使用死循环后会不断的重复发送数据,最多后面加些重载

while死循环的时间 不会发生数据变化的事 故想看看汇编的情况如何
离线BG2WAH
发帖
424
只看该作者 1楼 发表于: 2010-12-22
很遗憾,不会c编程,在此仅提个醒。如果你的程序是以中断形式发送,一定要注意usart发送中断使能位,也就是16f系列的pie1寄存器的txie位,若不能在发送完指定字节后禁止该中断,那么,程序将进入发送死循环……
离线XLDZZ
发帖
443
只看该作者 2楼 发表于: 2010-12-22
感谢回复

程序代码如下
void main()
{
init();
rd7=1;
sc();
 
while(1)
  {
 
ds_reset();
 
 
  }
}







void ds_reset()
{
  uchar st=1;
  in();
  nop();
  nop();
  nop();
  nop();
  nop();//2us
  out();//trisa全部置为0 ,输出。并且输出为0。拉低总线。
  delayus(130,200);//716us
  in();//释放总线,拉高,这里把trisa全部置1,全部为输入
  delay(10);//44
while(st)
  {
 
    if(dq==0)//dq是ra5,由于上面trisa已经置1。porta为高阻态。上拉电阻会把它拉到高电平。也就是这里dq=1,那么程序就会死在while循环中。ra5永远是高电平。问题是ra5输出了1ms左右的方波。
    {
    st=0;
   
    }
    else
    {
    st=1;
    }
   
  }
  in();
delayus(130,200);//延时716us
}


这下子搞不懂了 看来写时序还要用汇编来写 c还真的不太合适
算法到是可以用c来写
离线XLDZZ
发帖
443
只看该作者 3楼 发表于: 2010-12-23
郁闷中啊 有哪位有完好的ht picc
我这里经常报木马 360认为是木马

可以发到我的邮箱里
xldzz@163.com
离线XLDZZ
发帖
443
只看该作者 4楼 发表于: 2010-12-25
原因搞清楚了 如果从程序面上看程序不可能跳出while(1)死循环

但是,ra口是个复用口。有ad变换器的功能和比较器的功能。

由于我只关闭了ad电源和比较器,没有把把adcon1的pcfg3--pcfg0的ad引脚

设置成数字引脚 所以才会出现怪事。看来端口的初始化工作很重要,否则会有一些

列的从程序面上看很不好理解的问题。这也是单纯开发c的人和开发单片机的面对

的问题的不同。
发帖
689
只看该作者 5楼 发表于: 2010-12-26
看不懂的路过。