智能车制作

标题: 用AD口作为普通IO口接收CD4520的计数脉冲为什么收到数据全是0? [打印本页]

作者: 717580549    时间: 2011-5-8 18:00
标题: 用AD口作为普通IO口接收CD4520的计数脉冲为什么收到数据全是0?
用M0口控制CD4520清零端 高的电平清零 AD口作为普通IO口接收从CD4520过来的脉冲 但是收到的脉冲数全是0  不知道这是为什么 是不是程序有问题呢 知道的朋友麻烦给看下  小弟感激不尽 一下是源程序
void IoPortInit()
{
   DDRA=0x00;   //将每行的像素点输入到A口
   DDRB=0XF0;   //高四位LED 低四位拨码开关
//  PORTB_PB0=Red_Light;
   

   ATD0DIEN=0XFF;   //ATD输入使能
   DDR1AD0=0x00; //AD0口做普通IO口接收脉冲数 还有一个DDR0AD0 PT0AD0未引出
   //PT1AD0=0x00;  //脉冲数初始化0   PT1AD0是低8位 PT0AD0是高八位
  
   DDRM_DDRM0=1;
   PTM_PTM0=1;
   asm(nop);
   asm(nop);  //确保清零
   PTM_PTM0=0; //高脉冲给CD4520清零  低脉冲允许计数
   asm(nop);
   asm(nop);
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0_ISR(void)
{
   
   PIT_Num++;
   if(PIT_Num==10)
   {
      left_speed_get=PT1AD0;
      SendChar(left_speed_get&0x00ff);
      PTM_PTM0=1;//置高清零
      _asm(nop);
      _asm(nop);//保持高电平一段时间确保清零
      PTM_PTM0=0;//允许计数
      _asm(nop);
      _asm(nop);
      
      
     
      //right_speed_get=PACNT;
      PACNT=0;
      SendChar(right_speed_get&0X00FF);
      
      PIT_Num=0;
   }
   PITTF_PTF0=1;    //CLER FLAG   
   
}
#pragma CODE_SEG DEFAULT
作者: 717580549    时间: 2011-5-8 19:15
哎 没人回答 自己顶
作者: 放屁偷着乐    时间: 2011-5-17 10:35
有没有换其他口试一下呢?
我的CD4520也有问题,就是CD4520读的脉冲数不稳定,远没有片内PT7稳定。
不知道什么原因。
作者: g598618971    时间: 2011-5-17 15:38
标题: null
我们也用过AN口,不好用,不过按照你这个设置的寄存器应该可以啊,怎么会不行呢?是不是电路问题?
作者: 蔡典鑫    时间: 2012-3-6 16:47
CP为什么设为接地啊,不是应该接脉冲的吗?
作者: 小心愿    时间: 2012-3-6 17:55
就直接用通用口呗
作者: tianfu    时间: 2012-5-10 23:28
你可以把    ATD0DIEN 改成 0xffff试试。。。。。。。。。。。
嘿嘿。。。。。。。。。。。。。。。。。。。。。。。。。。

作者: jzfffzj    时间: 2012-5-25 10:17
我也这样




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2