微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 旋转编码器程序救助!

旋转编码器程序救助!

时间:10-02 整理:3721RD 点击:
哪位大侠做过旋转编码器的程序,求C程序!谢谢了!

http://bbs.elecfans.com/forum.ph ... 0375&highlight=旋转编码器

module jxd(d,clk,q,qn,a,b,p);      //旋转编码器解码电路
output a,b,q,qn;
output[7:0] p;
input d,clk;
reg q,qn;
reg  a,b;
reg[7:0] p;
        always@(posedge clk)                                        //ab 鉴相电路 D触发器和与非门组成
        begin
                q=d;
                qn=~d;
        end
        /*********
        assign a=~(clk&q);
        assign b=~(clk&qn);
        但a,b要改成wire型
        ********/
        always@(*)
        begin
                a=~(clk&q);
                b=~(clk&qn);      
         end
         
         always@(posedge a or posedge b)        //可逆8位2进制计数器
         begin                                                                                        //设计可逆计数器时不能在两个以上always内对同一变量赋值
         if(a==1)                                                                                //合并即可
                begin
                if(p==8'b00000000)
                        begin p<=4'b11111111;end
                        else
                        begin p<=p+1;end
                        end
        else if(b==1)
                begin
                        if(p==8'b11111111)
                begin p<=4'b00000000;end
                else
                begin p<=p-1;end
                end                       
        end         
endmodule       
        能帮我解释一下这段代码吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top