打印

请大家看看我的小i程序有什么问题(请尽量指出)

[复制链接]
1626|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pihois|  楼主 | 2012-11-30 20:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了一个程序,但在处理按键的模块,就出现问题。发觉Verilog HDL,跟C语言很不同。有时问题,想不出原因。
下面是我的处理按键的模块的程序,我的目的是,按一按键,LED就亮或灭。
帮我看看,问题出在哪里。谢
我采用的普通C语言处理按键的方法。10MS检查一次,连续检查到两次,即认为按下一次

相关帖子

沙发
pihois|  楼主 | 2012-11-30 20:15 | 只看该作者
module KEY(led1,led2,odata,key,clk);
output led1;
output led2;
output[7:0] odata;           ////数据输出到其他模块
input key;
input clk;

reg led1;
reg led2;
reg[24:0] clkcount;
reg keydowntag;
reg[2:0] readkey;
//reg[[7:0]  adder;
reg[7:0]  odata;
reg[7:0]  dbuf;
reg[1:0]  keystate;

always @(posedge clk)
begin
clkcount=clkcount+1'b1;
end

always @ (clkcount[23])
begin
      if(key==0)                              // //当按键按下时
     begin
         if(readkey>=2)                   //当检测到2次按键信号时
          begin
               if(keystate==KEYUP)
                begin
                      keystate=2;
                       dbuf=dbuf+1;
                       odata=dbuf;
                       led1=~led1;
                       led2=1;
                       readkey=0;
                       end
                end
               else
               begin
               readkey=readkey+1;
               if(keystate==KEYDOWN)
               begin
               keystate=KEYHOLD;
              readkey=0;
              end
          end
      end
     else
     begin
     readkey=0;
      keystate=KEYUP;
  
     end
end

endmodule

使用特权

评论回复
板凳
gaochy1126| | 2012-12-1 21:17 | 只看该作者
楼主的程序好麻烦呀,没有看懂什么意思!想消抖的话 使用计数就行了!

使用特权

评论回复
地板
GoldSunMonkey| | 2012-12-1 21:49 | 只看该作者
我看一个地方,就发现没有敏感变量,这样不行

使用特权

评论回复
5
pontiff| | 2012-12-1 22:18 | 只看该作者
首先,说成代码更合适些。

使用特权

评论回复
6
visicom| | 2012-12-2 20:33 | 只看该作者
晕死

使用特权

评论回复
7
Backkom80| | 2012-12-3 08:16 | 只看该作者
这代码乱的,
1,逻辑不清晰
2,代码风格差

使用特权

评论回复
8
jahnson066| | 2012-12-4 12:11 | 只看该作者
Backkom80 发表于 2012-12-3 08:16
这代码乱的,
1,逻辑不清晰
2,代码风格差

高手点评,菜鸟学习一下

使用特权

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

本版积分规则

10

主题

108

帖子

1

粉丝