⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数字系统课程设计.txt

📁 数字系统的程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
MODULE SMHCLOCK
//INTERFACE(CLEAR,STOPSET,STEP,CLOCK_100KHZ,SETSMH->[HOUR_H3..HOUR_H0],[HOUR_L3..HOUR_L0],[MINUTE_H3..MINUTE_H0],[MINUTE_L3..MINUTE_L0],[SECOND_H3..SECOND_H0],[SECOND_L3..SECOND_L0]);
TITLE '24小时显示时钟'
//正常显示
//        CLEAR =1, STOPSET =0, CLOCK_100KHZ 
//归零
//        CLEAR =0
//停止并设置
//        CLEAR =1, STOPSET =1, SETSMH 选择时、分、秒, STEP 调节数字
//报时设置
//        CLEAR =1, STOPSET =0, SETREMIND =1 ,SETSMH 设置时、分, STEP 调节数字
DECLARATIONS
    COUNTDEC64 INTERFACE(CLEAR,STOP,CLOCK,[SET5..SET0]->[HOUT3..HOUT0],[LOUT3..LOUT0],FULL);
    COUNT1HZ INTERFACE(CLOCK_100KHZ->CLOCK_1HZ,CLOCK_4HZ,CLOCK_8HZ);
    
    CLOCKHOUR FUNCTIONAL_BLOCK COUNTDEC64;
    CLOCKMINUTE FUNCTIONAL_BLOCK COUNTDEC64;
    CLOCKSECOND FUNCTIONAL_BLOCK COUNTDEC64;
    COUNT_CLOCK FUNCTIONAL_BLOCK COUNT1HZ;

    CLEAR,STOPSET,CLOCK_100KHZ,SETSMH,SETREMIND,STEP,MUSIC PIN;


    [HOUR_H3..HOUR_H0] PIN;
    [HOUR_L3..HOUR_L0] PIN;
    [MINUTE_H3..MINUTE_H0] PIN;
    [MINUTE_L3..MINUTE_L0] PIN;
    [SECOND_H3..SECOND_H0] PIN;
    [SECOND_L3..SECOND_L0] PIN;
    
    [STATESMH2..STATESMH0] PIN ISTYPE 'REG';
    [FLASH2..FLASH0] PIN ISTYPE 'REG';

    HOUR_H = [HOUR_H3..HOUR_H0];
    HOUR_L = [HOUR_L3..HOUR_L0];
    MINUTE_H = [MINUTE_H3..MINUTE_H0];
    MINUTE_L = [MINUTE_L3..MINUTE_L0];
    SECOND_H = [SECOND_H3..SECOND_H0];
    SECOND_L = [SECOND_L3..SECOND_L0];
   
    STATESMH = [STATESMH2..STATESMH0];
    FLASH = [FLASH2..FLASH0];

    HOUR_DOWN =0; HOUR_UP = 1;
    MINUTE_DOWN = 2; MINUTE_UP =3;
    SECOND_DOWN = 4; SECOND_UP =5;
    c = .C.;
    x = .X.;
    
EQUATIONS
    COUNT_CLOCK.CLOCK_100KHZ = CLOCK_100KHZ;
    FLASH.CLK = COUNT_CLOCK.CLOCK_8HZ;
 
    FLASH := FLASH + 1;

    CLOCKHOUR.CLEAR = CLEAR;
    CLOCKMINUTE.CLEAR = CLEAR;
    CLOCKSECOND.CLEAR = CLEAR;
    FLASH.AR = CLEAR;
    STATESMH.AR =CLEAR;

    CLOCKHOUR.CLOCK = STEP  & STOPSET # CLOCKMINUTE.FULL & !STOPSET;
    CLOCKMINUTE.CLOCK = STEP & STOPSET # CLOCKSECOND.FULL & !STOPSET;
    CLOCKSECOND.CLOCK = STEP & STOPSET # COUNT_CLOCK.CLOCK_1HZ & !STOPSET ;

    CLOCKHOUR.STOP = STOPSET & (STATESMH != HOUR_UP);
    CLOCKMINUTE.STOP = STOPSET & (STATESMH != MINUTE_UP);
    CLOCKSECOND.STOP = STOPSET & (STATESMH != SECOND_UP);

    WHEN ((FLASH == 3) # (FLASH == 7)) & (STOPSET # !STOPSET & SETREMIND) &(STATESMH == HOUR_UP)
           THEN{ HOUR_H = [1,1,1,1];
                 HOUR_L = [1,1,1,1];}
           ELSE{ HOUR_H = CLOCKHOUR.[HOUT3..HOUT0];
                 HOUR_L = CLOCKHOUR.[LOUT3..LOUT0];}
    WHEN ((FLASH == 3) # (FLASH == 7)) & (STOPSET # !STOPSET & SETREMIND) &(STATESMH == MINUTE_UP)
           THEN{ MINUTE_H = [1,1,1,1];
                 MINUTE_L = [1,1,1,1];}
           ELSE{ MINUTE_H = CLOCKMINUTE.[HOUT3..HOUT0];
                 MINUTE_L = CLOCKMINUTE.[LOUT3..LOUT0];}
    WHEN ((FLASH == 3) # (FLASH == 7)) & (STOPSET # !STOPSET & SETREMIND) &(STATESMH == SECOND_UP)
           THEN{ SECOND_H = [1,1,1,1];
                 SECOND_L = [1,1,1,1];}
           ELSE{ SECOND_H = CLOCKSECOND.[HOUT3..HOUT0];
                 SECOND_L = CLOCKSECOND.[LOUT3..LOUT0];}
    
    WHEN (CLOCKMINUTE.[HOUT3..HOUT0] == 0) & (CLOCKMINUTE.[LOUT3..LOUT0] == 0)
           THEN  MUSIC = 1;
           ELSE  MUSIC = 0;

    CLOCKHOUR.[SET5..SET0] = 24;//正式使用值24
    CLOCKMINUTE.[SET5..SET0] = 60;//正式使用值60
    CLOCKSECOND.[SET5..SET0] = 60;//正式使用值60
 
    STATESMH.CLK = CLOCK_100KHZ;;


STATE_DIAGRAM STATESMH;
    STATE HOUR_DOWN:
          IF STOPSET== 0 THEN HOUR_UP;
                         ELSE IF SETSMH ==0 THEN HOUR_UP;
                                            ELSE HOUR_DOWN;
    STATE HOUR_UP:
          IF STOPSET== 0 THEN HOUR_UP;
                         ELSE IF SETSMH ==1 THEN MINUTE_DOWN;
                                            ELSE HOUR_UP;
    STATE MINUTE_DOWN:
          IF STOPSET== 0 THEN HOUR_UP;
                         ELSE IF SETSMH==0  THEN MINUTE_UP 
                                            ELSE MINUTE_DOWN;
    STATE MINUTE_UP:
          IF STOPSET== 0 THEN HOUR_UP;
                         ELSE IF SETSMH==1  THEN SECOND_DOWN 
                                            ELSE MINUTE_UP;   
    STATE SECOND_DOWN:
          IF STOPSET== 0 THEN HOUR_UP;
                         ELSE IF SETSMH==0  THEN SECOND_UP;
                                            ELSE SECOND_DOWN;
    STATE SECOND_UP:
          IF STOPSET== 0 THEN HOUR_UP;
                         ELSE IF SETSMH==1  THEN HOUR_DOWN;
                                            ELSE SECOND_UP;

TEST_VECTORS([CLEAR,STOPSET,CLOCK_STEP,CLOCK_100KHZ,SETSMH]->[HOUR_H,HOUR_L,MINUTE_H,MINUTE_L,SECOND_H,SECOND_L])
             [1,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,1]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,1]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,1,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
             [0,0,c,c,0]->[[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x],[x,x,x,x]];
END


////////////////////////////////////////////////////////////
MODULE COUNT1HZ
INTERFACE(CLOCK_100KHZ->CLOCK_1HZ,CLOCK_4HZ,CLOCK_8HZ)

⌨️ 快捷键说明

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