请教:用两个按键来控制流水灯的左右移动问题

2019-07-16 00:25发布

module led1(clk,rst,led,c1,c2);
input clk;
input rst;
input c1,c2;
output [7:0]led;

reg [7:0]led;
reg [24:0]count;
reg flag1,flag2;
wire count_clk;
assign count_clk=(count==25'd24999999)?1:0;
always@(negedge clk)
begin
        if(!rst)
                count<=0;
        else if(count<25'd24999999)
                count<=count+1'd1;
        else count<=0;
end
always@(c2 or c1)
begin
                flag1<=~c1;
                flag2<=~c2;
end
always@(negedge clk)
begin
        if(!rst)
                led<=8'b1111_1110;
        else if(count_clk)
        begin
        if(flag1)
                led<={led[6:0],led[7]};
        else if(flag2)
                led<={led[0],led[7:1]};
        else led<=8'b1111_1110;
        end
end
endmodule
以上是我写的代码,但是板上的现象是我必须要一直按着按键才可以使其左移或右移,我分析原因是当我松手的时候,按键上升沿触发,这样又会使flag为零,这样流水灯就不动了,所以我想请教下各位高手如何修改程序是我只要按一下就可以改变流水灯流向,谢谢大家!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。