计数器源程序alarm-counter:.txt

来自「该数字闹钟包括以下几个组成部分: (1) 显示屏,由6个七段数码管组成,用于显示」· 文本 代码 · 共 78 行

TXT
78
字号
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
PACKAGE P_ALARM IS
SUBTYPE T_DIGITAL IS INTEGER RANGE 0 TO 9;
SUBTYPE T_SHORT IS INTEGER RANGE 0 TO 65535;
TYPE T_CLOCK_TIME IS ARRAY(5 DOWNTO 0)OF T_DIGITAL;
TYPE T_DISPLAY IS ARRAY (5 DOWNTO 0)OF T_DIGITAL;
END PACKAGE P_ALARM;
  LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE WORK.P_ALARM.ALL;
ENTITY ALARM_COUNTER IS
  PORT(NEW_CURRENT_TIME: IN T_CLOCK_TIME;
       LOAD_NEW_C: IN STD_LOGIC;
       CLK: IN STD_LOGIC;
       RESET: IN STD_LOGIC;
       CURRENT_TIME: OUT T_CLOCK_TIME);
  END ALARM_COUNTER;
ARCHITECTURE ART OF ALARM_COUNTER IS
  SIGNAL I_CURRENT_TIME: T_CLOCK_TIME;
  BEGIN
  PROCESS(CLK,RESET,LOAD_NEW_C) IS
  VARIABLE C_T: T_CLOCK_TIME;
BEGIN
    IF RESET='1'THEN
      I_CURRENT_TIME(5)<=0;
      I_CURRENT_TIME(4)<=0; 
      I_CURRENT_TIME(3)<=0;
      I_CURRENT_TIME(2)<=0;
      I_CURRENT_TIME(1)<=0;
      I_CURRENT_TIME(0)<=0;
    ELSIF RISING_EDGE(CLK)THEN
      IF LOAD_NEW_C='1'THEN
     I_CURRENT_TIME<=NEW_CURRENT_TIME;
      ELSE
        C_T:=I_CURRENT_TIME;
          IF C_T(0)<9 THEN
            C_T(0):=C_T(0)+1;
          ELSE
            C_T(0):=0;
            IF C_T(1)<5 THEN
              C_T(1):=C_T(1)+1;
            ELSE
              C_T(1):=0;
              IF C_T(2)<9 THEN
                C_T(2):=C_T(2)+1;
              ELSE
                C_T(2):=0;
                IF C_T(3)<5 THEN
                C_T(3):=C_T(3)+1;
                ELSE
                C_T(3):=0;
                IF C_T(5)<2 THEN
                IF C_T(4)<9 THEN
                C_T(4):=C_T(4)+1;
                ELSE
                C_T(4):=0;
                C_T(5):=C_T(5)+1;
                END IF;
                ELSE 
                IF C_T(4)<3 THEN
                C_T(4):=C_T(4)+1;
                ELSE
                C_T(4):=0;
                C_T(5):=0;
                END IF;    
               END IF;   
              END IF;     
            END IF;    
   END IF;    
          END IF;   
         END IF;  
         I_CURRENT_TIME<=C_T;
         END IF;
       END PROCESS;  
       CURRENT_TIME<=I_CURRENT_TIME;
       END ART;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?