always @(posedge clk_12M or negedge stop)
begin
if(!stop)//暫停信號為0時有效
begin
cnt <= 0;
end//停止信號有效時,暫停
else if(cnt == 24'h5b8d80)//計數為5999999
begin
clk_1s <= ~clk_1s;
cnt <= 0;
end
else
begin
cnt <= cnt+1;
clk_1s <= clk_1s;
end//暫停信號無效時繼續計時
end
/*用于產生1s的秒表計數*/
reg [7:0]sec_reg=0;
always @(posedge clk_1s or negedge reset)
begin
if(!reset)//復位信號為0時有效
begin
sec_reg <= 0;//復位信號有效時置0
end
else if(sec_reg[3:0] == 4'd9)//秒個位計數到9
begin
if(sec_reg[7:4] == 4'd5)//秒十位計數到5
begin
sec_reg <= 0;//清0
end
else
begin
sec_reg[7:4] <= sec_reg[7:4] + 1;//秒十位加1
sec_reg[3:0] <= 0;//秒個位清零
end
end
else
begin
sec_reg[3:0] <= sec_reg[3:0] + 1;
end
end
assign sec = sec_reg;