module
led(led,key)
input
key
output
led
reg
led_out
always@(key)
if(!key)
led_out=1'b0
else
led_out=1'b1
assign
led=led_out
endmodule
你没有加按键消抖,用状态切换(状态机),调整按键消抖时间在5MS-10MS就差不多了,这部分程序是用在产品上的,裁减了下,不懂请留言:input clk //10MHz
input [1:0]KEY
reg [1:0] KEY_BUFFER
reg [2:0] state
reg[15:0] dly_reg
always@(posedge clk)
begin
begin
KEY_BUFFER<=KEY //读取键盘
case(state)
3'b001: if (KEY_BUFFER==2'b01) 判断
begin
state <= 3'b011
end //
else if(KEY_BUFFER==2'b10)
begin
state <= 3'b011
end //
else state <= 3'b001
3'b011:if(dly_reg>=16'b1100001101010000) //延时
begin
state <= 3'b100
dly_reg <=16'd0
end
else
begin
dly_reg<=dly_reg+1'b1
end
3'b100: if ((KEY_BUFFER==2'b11))//在判断
begin
end
else if ((KEY_BUFFER==2'b11))//--
begin
else
state <= 3'b101
3'b101: begin state <= 3'b001end //
endcase
end
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)