打印
[微控制器/MCU]

求助各位大哥,急

[复制链接]
1505|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuyang1982|  楼主 | 2010-5-25 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟最近接了一个项目,用lpc2132作控制器,采集信号,用8253进行累加计数,我用2132的P1_16-19,p1_21-24作为数据口d0-d7,对8253进行读写。我现在用脉冲发生器给8253发确定脉冲,比如10个脉冲,可是我读出来的都是大于10的,给的脉冲越多,误差就越大,小弟苦思冥想N天,就是不得其解,忘各位大哥给看看,出了什么问题

相关帖子

沙发
wuyang1982|  楼主 | 2010-5-25 10:02 | 只看该作者
void write_8253_cnt(uint8 chose_8253,uint8 dat_8253,uint8 a1a0)
{

        if(!chose_8253)               
                        Output(p0_25,0);//片选8253(1)cs
        else
                        Output(p0_26,0);//片选8253(2)cs
        //Output(p0_30,0);//选中wr
        switch(a1a0)
                {
                        case 0:
                                        Output(p0_28,0);//A1
                                        Output(p0_27,0);//A0
                                        break;
                        case 1:
                                        Output(p0_28,0);//A1
                                        Output(p0_27,1);//A0
                                        break;
                        case 2:
                                        Output(p0_28,1);//A1
                                        Output(p0_27,0);//A0
                                        break;
                        case 3:
                                        Output(p0_28,1);//A1
                                        Output(p0_27,1);//A0
                                        break;
                }
               
        write_8253_dat(dat_8253);
       
        Output(p0_30,0);//选中wr
        DelayNS(10);
        Output(p0_30,1);//放弃wr
        if(!chose_8253)
                        Output(25,1);//放弃8253(1)cs
        else               
                        Output(26,1);//放弃8253(2)cs
                       
}
uint8 read_8253_dat(uint8 a1a0,uint8 chose_8253)
{

        uint8 read_i=0;
       
        if(!chose_8253)
                Output(p0_25,0);//选中cs1
        else                
                Output(p0_26,0);//选中cs2
               
        //Output(p0_29,0);//选中rd
       
        switch(a1a0)
                {
                        case 0:
                                        Output(p0_28,0);//A1
                                        Output(p0_27,0);//A0
                                       
                                        break;
                        case 1:
                                        Output(p0_28,0);//A1
                                        Output(p0_27,1);//A0
                                       
                                        break;
                        case 2:
                                        Output(p0_28,1);//A1
                                        Output(p0_27,0);//A0

                                        break;
                                }
        DelayNS(1);
        Output(p0_29,0);//选中rd
       
        DelayNS(1);
       
        read_i=(Read_pin(p1_24,p1_24)&0x01)<<7;
        read_i=read_i|(Read_pin(p1_23,p1_23)&0x01)<<6;
        read_i=read_i|(Read_pin(p1_22,p1_22)&0x01)<<5;
        read_i=read_i|(Read_pin(p1_21,p1_21)&0x01)<<4;
        read_i=read_i|(Read_pin(p1_19,p1_19)&0x01)<<3;
        read_i=read_i|(Read_pin(p1_18,p1_18)&0x01)<<2;
        read_i=read_i|(Read_pin(p1_17,p1_17)&0x01)<<1;
        read_i=read_i|(Read_pin(p1_16,p1_16)&0x01);

        Output(p0_29,1);//放弃rd
       
        if(!chose_8253)
                Output(p0_25,1);//放弃cs1
        else        
                Output(p0_26,1);//放弃cs2
               
        //Output(p0_29,1);//放弃rd
        return(read_i);
       
       
}
这是我的读写函数

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url][/url]走向高工

3

主题

9

帖子

0

粉丝