智能车制作
标题:
用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