📄 数字系统课程设计.txt
字号:
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 + -