学士学位论文硬件课程设计日历.docx

上传人:b****5 文档编号:10172913 上传时间:2023-02-09 格式:DOCX 页数:37 大小:22.60KB
下载 相关 举报
学士学位论文硬件课程设计日历.docx_第1页
第1页 / 共37页
学士学位论文硬件课程设计日历.docx_第2页
第2页 / 共37页
学士学位论文硬件课程设计日历.docx_第3页
第3页 / 共37页
学士学位论文硬件课程设计日历.docx_第4页
第4页 / 共37页
学士学位论文硬件课程设计日历.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

学士学位论文硬件课程设计日历.docx

《学士学位论文硬件课程设计日历.docx》由会员分享,可在线阅读,更多相关《学士学位论文硬件课程设计日历.docx(37页珍藏版)》请在冰豆网上搜索。

学士学位论文硬件课程设计日历.docx

学士学位论文硬件课程设计日历

2

系统模块详细设计与调试

1 在主程序中要分别对8254和8255初始化编程。

具体如下:

8254控制字:

 MOV DX,PORT_8253 

 MOV AL,00110101B ;写入控制字,0通道,方式2 

 OUT DX,AL 

 MOV DX,PORT_0 

 MOV AL,00H 

 OUT DX,AL 

 MOV AL,10H 

 OUT DX,AL 

 MOV DX,PORT_8253 

 MOV AL,01110111B ;1通道,方式3 

 OUT DX,AL 

 MOV DX,PORT_1 

 MOV AL,00H 

 OUT DX,AL 

 MOV AL,10H 

 OUT DX,AL 

 

8255控制字:

MOV DX,PORT_8255 ;8255初始化

 MOV AL,80H 

 OUT DX,AL

程序清单与注释:

PORT_AEQU288H

PORT_BEQU289H

PORT_CEQU28AH

PORT_8255EQU28BH

PORT_0EQU280H

PORT_1EQU281H

PORT_2EQU282H

PORT_8253EQU283H

DATASEGMENT

;01234567

TABLE1DB77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH

;89ABCDEF

DB0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH

HZ_SEC02DW0A3B0H

HZ_SEC01DW0A3B0H

HZ_MIN02DW0A3B0H

HZ_MIN01DW0A3B0H

HZ_HOU02DW0A3B0H

HZ_HOU01DW0A3B0H

HZ_TIMDW0A1C3H;符号":

"

HZ_SYMDW0A1C3H

HZ_YEAR02DW0A3B0H

HZ_YEAR01DW0A3B0H

HZ_MON02DW0A3B1H

HZ_MON01DW0A3B0H

HZ_DAY02DW0A3B1H

HZ_DAY01DW0A3B0H

HZ_DATEDW0A3AFH

HZ_WEEKDW0A3B6H

HZ_WEEK01DW0D0C7H;字体"星"

HZ_WEEK02DW0C6DAH;字体"期"

HZ_XDW0A1EFH;符号"★"

HZ_WDW0CDF2H;字体"万"

HZ_NDW0C4EAH;字体"年"

HZ_RDW0C8D5H;字体"日"

HZ_LDW0C0FAH;字体"历"

HZ_ADRDB?

DATAENDS

STACK1SEGMENTSTACK

DW50DUP(0)

TOP_STACLABELWORD

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,STACK1

MOVSS,AX

LEASP,TOP_STAC

MOVAX,DATA

MOVDS,AX

MOVDX,PORT_8255;8255初始化

MOVAL,80H

OUTDX,AL

CALLCLEAR;LCD清除

CALLFUCTION_A;日期显示

;8253的编程

MOVDX,PORT_8253

MOVAL,00110101B;写入控制字,0通道,方式2

OUTDX,AL

MOVDX,PORT_0

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL

MOVDX,PORT_8253

MOVAL,01110111B;1通道,方式3

OUTDX,AL

MOVDX,PORT_1

MOVAL,00H

OUTDX,AL

MOVAL,10H

OUTDX,AL

MAIN:

LP:

MOVDX,PORT_C

TESTDX,10H;检测B口是否有1秒脉冲

JNZLP

TESTDX,00H

JNZLP

INCHZ_SEC02;秒的个位加一

;判断是否有键按下

MOVDX,PORT_8255

MOVAL,10001010B;A口输出B口输入C口低四位输出,高四位输入

OUTDX,AL

MOVDX,PORT_A;A口为行,向所有的行输出0

MOVAL,00H

OUTDX,AL

MOVDX,PORT_B

RET_TO_1:

MOVAL,0FEH

MOVCL,AL

NEXT_ROW_1:

MOVDX,PORT_A

OUTDX,AL

MOVDX,PORT_B

INAL,DX

ANDAL,0FH

CMPAL,0FH;判断是否有键按下

JNEJP_1

CMPCL,0EFH

JEFUC

ROLCL,01

MOVAL,CL

JMPNEXT_ROW_1

JP_1:

CALLJP

FUC:

CALLFUCTION_00;时间的进位

CALLFUCTION_01;日期的进位

CALLFUCTION_02;星期的进位

CALLFUCTION_A;日期显示

JMPMAIN

FUCTION_00PROC

CMPHZ_SEC02,0A3BAH;判断是否为十,是跳转到秒进位子程序JETIM_NEXT_01

RET

TIM_NEXT_01:

INCHZ_SEC01;秒的十位加一

MOVHZ_SEC02,0A3B0H;个位置零

CMPHZ_SEC01,0A3B6H;判断是否为六,是跳转

JETIM_NEXT_02

RET

TIM_NEXT_02:

INCHZ_MIN02;分的个位加一

MOVHZ_SEC01,0A3B0H

CMPHZ_MIN02,0A3BAH;判断是否为十,是跳转

JETIM_NEXT_03

RET

TIM_NEXT_03:

INCHZ_MIN01;分的十位加一

MOVHZ_MIN02,0A3B0H

CMPHZ_MIN01,0A3B6H;判断是否大于六,是跳转

JETIM_NEXT_04

RET

TIM_NEXT_04:

INCHZ_HOU02;时的十位加一

MOVHZ_MIN01,0A3B0H

CMPHZ_HOU01,0A3B2H;判断是否为二,是跳转

JETIM_NEXT_05

JMPTIM_NEXT_07

TIM_NEXT_05:

CMPHZ_HOU02,0A3B4H;判断时的个位是否为四,是跳转JETIM_NEXT_06

JMPTIM_NEXT_07

TIM_NEXT_06:

MOVHZ_HOU01,0A3B0H

MOVHZ_HOU02,0A3B0H

INCHZ_DAY02;日期加一

INCHZ_WEEK;星期加一

RET

TIM_NEXT_07:

CMPHZ_HOU02,0A3BAH;判断时的个位是否为十,是跳转JETIM_NEXT_08

RET

TIM_NEXT_08:

INCHZ_HOU01;(个位为十)十位加一,个位置零

MOVHZ_HOU02,0A3B0H

RET

FUCTION_00ENDP

FUCTION_01PROC

CALLCMP_MON

CALLMON_COUNT

CALLYEAR_WALK

RET

FUCTION_01ENDP

CMP_MONPROC

CMPHZ_MON01,0A3B0H;判断是否是个位的月份

JEMON01_EQU_0

JMPMON01_EQU_1

MON01_EQU_0:

CMPHZ_MON02,0A3B1H;一月

JEGO_TO_31

CMPHZ_MON02,0A3B2H;二月

JEGO_TO_2MON

CMPHZ_MON02,0A3B3H;三月

JEGO_TO_31

CMPHZ_MON02,0A3B4H;四月

JEGO_TO_30

CMPHZ_MON02,0A3B5H;五月

JEGO_TO_31

CMPHZ_MON02,0A3B6H;六月

JEGO_TO_30

CMPHZ_MON02,0A3B7H;七月

JEGO_TO_31

CMPHZ_MON02,0A3B8H;八月

JEGO_TO_31

CMPHZ_MON02,0A3B9H;九月

JEGO_TO_30

MON01_EQU_1:

CMPHZ_MON02,0A3B0H;十月

JEGO_TO_31

CMPHZ_MON02,0A3B1H;十一月

JEGO_TO_30

CMPHZ_MON02,0A3B2H;十二月

JEGO_TO_31

GO_TO_31:

CALLCOUNT_31;31天的子程序

JMPTO_END

GO_TO_30:

CALLCOUNT_30;30天的子程序

JMPTO_END

GO_TO_2MON:

CALLMON_2_COUNT;二月的子程序

JMPTO_END

TO_END:

RET

CMP_MONENDP

COUNT_28PROC

CMPHZ_DAY01,0A3B2H;判断天十位是否为2,是跳转

JENEXT_28_01

JMPNEXT_28_03

NEXT_28_01:

CMPHZ_DAY02,0A3B9H;判断天个位是否为9,是跳转JENEXT_28_02

JMPNEXT_28_03

NEXT_28_02:

MOVHZ_DAY01,0A3B0H

MOVHZ_DAY02,0A3B1H

INCHZ_MON02;月加一

NEXT_28_03:

CMPHZ_DAY02,0A3BAH

JENEXT_28_04

RET

NEXT_28_04:

MOVHZ_DAY02,0A3B0H

INCHZ_DAY01

RET

COUNT_28ENDP

COUNT_29PROC

CMPHZ_DAY01,0A3B2H;判断天十位是否为2,是跳转JENEXT_29_01

JMPNEXT_29_03

NEXT_29_01:

CMPHZ_DAY02,0A3BAH;判断天个位是否为A,是跳转JENEXT_29_02

JMPNEXT_29_03

NEXT_29_02:

MOVHZ_DAY01,0A3B0H

MOVHZ_DAY02,0A3B1H

INCHZ_MON02;月加一

NEXT_29_03:

CMPHZ_DAY02,0A3BAH

JENEXT_29_04

RET

NEXT_29_04:

MOVHZ_DAY02,0A3B0H

INCHZ_DAY01

RET

COUNT_29ENDP

COUNT_30PROC

CMPHZ_DAY01,0A3B3H;判断天十位是否为3,是跳转JENEXT_30_01

JMPNEXT_30_03

NEXT_30_01:

CMPHZ_DAY02,0A3B1H;判断天个位是否为1,是跳转

JENEXT_30_02

JMPNEXT_30_03

NEXT_30_02:

MOVHZ_DAY01,0A3B0H

MOVHZ_DAY02,0A3B1H

INCHZ_MON02;月加一

NEXT_30_03:

CMPHZ_DAY02,0A3BAH

JENEXT_30_04

RET

NEXT_30_04:

MOVHZ_DAY02,0A3B0H

INCHZ_DAY01

RET

COUNT_30ENDP

COUNT_31PROC

CMPHZ_DAY01,0A3B3H;判断天十位是否为3,是跳转

JENEXT_31_01

JMPNEXT_31_03

NEXT_31_01:

CMPHZ_DAY02,0A3B2H;判断天个位是否为2,是跳转

JENEXT_31_02

JMPNEXT_31_03

NEXT_31_02:

MOVHZ_DAY01,0A3B0H;置天数为01

MOVHZ_DAY02,0A3B1H

INCHZ_MON02;月份加一RET

NEXT_31_03:

CMPHZ_DAY02,0A3BAH;个位是否为十,是跳转

JENEXT_31_04

RET

NEXT_31_04:

MOVHZ_DAY02,0A3B0H;个位置零,十位加一

INCHZ_DAY01

RET

COUNT_31ENDP

MON_2_COUNTPROC

MOVAX,HZ_YEAR01;判断是否是闰年

ANDAX,01H

MOVCX,0AH

MULCX

MOVBX,HZ_YEAR02

ANDBX,01H

ADDAX,BX

MOVDX,00H

MOVBX,04H

DIVBX

CMPDX,0

JEGO_TO_29

JMPGO_TO_28

GO_TO_29:

CALLCOUNT_29;29天的子程序

GO_TO_28:

CALLCOUNT_28

MON_2_COUNTENDP

YEAR_PANDUANPROC

MOVAX,HZ_YEAR01

MOVCX,0AH

MULCX

ADDAX,HZ_YEAR02

MOVDX,00H

MOVBX,04H

DIVBX

CMPDX,0

RET

YEAR_PANDUANENDP

MON_COUNTPROC

CMPHZ_MON01,0A3B1H;判断月的十位是否为一

JEMON_NEXT_01

JMPMON_NEXT_03

MON_NEXT_01:

CMPHZ_MON02,0A3B3H

JEMON_NEXT_02

JMPMON_NEXT_03

MON_NEXT_02:

MOVHZ_MON01,0A3B0H

MOVHZ_MON02,0A3B1H

INCHZ_YEAR02

RET

MON_NEXT_03:

CMPHZ_MON02,0A3BAH

JEMON_NEXT_04

RET

MON_NEXT_04:

MOVHZ_MON02,0A3B0H

INCHZ_MON01

RET

MON_COUNTENDP

YEAR_WALKPROC

CMPHZ_YEAR02,0A3BAH

JEYEAR_NEXT_01

RET

YEAR_NEXT_01:

MOVHZ_YEAR02,0A3B0H

INCHZ_YEAR01

RET

YEAR_WALKENDP

FUCTION_02PROC

CMPHZ_WEEK,0A3B8H;是否大于7,大于跳转

JEWEEK_NEXT01

JMPWEEK_END

WEEK_NEXT01:

MOVHZ_WEEK,0A3B1H;置一

JMPWEEK_END

WEEK_END:

RET

FUCTION_02ENDP

FUCTION_APROC

;万年历显示80H~87HLEABX,HZ_X

MOVBYTEPTRHZ_ADR,81H

CALLLCD_DISP

MOVBYTEPTRHZ_ADR,86H

CALLLCD_DISP

LEABX,HZ_W

MOVBYTEPTRHZ_ADR,82H

CALLLCD_DISP

LEABX,HZ_N

MOVBYTEPTRHZ_ADR,83H

CALLLCD_DISP

LEABX,HZ_R

MOVBYTEPTRHZ_ADR,84H

CALLLCD_DISP

LEABX,HZ_L

MOVBYTEPTRHZ_ADR,85H

CALLLCD_DISP

;日期显示,第二行90H~97H

LEABX,HZ_DATE

MOVBYTEPTRHZ_ADR,92H

CALLLCD_DISP

MOVBYTEPTRHZ_ADR,95H

CALLLCD_DISP

LEABX,HZ_DAY02

MOVBYTEPTRHZ_ADR,97H

CALLLCD_DISP

LEABX,HZ_DAY01

MOVBYTEPTRHZ_ADR,96H

CALLLCD_DISP

LEABX,HZ_MON02

MOVBYTEPTRHZ_ADR,94H

CALLLCD_DISP

LEABX,HZ_MON01

MOVBYTEPTRHZ_ADR,93H

CALLLCD_DISP

LEABX,HZ_YEAR02

MOVBYTEPTRHZ_ADR,91H

CALLLCD_DISP

LEABX,HZ_YEAR01

MOVBYTEPTRHZ_ADR,90H

CALLLCD_DISP

;时间显示,第三行88~8F

LEABX,HZ_TIM

MOVBYTEPTRHZ_ADR,8AH

CALLLCD_DISP

MOVBYTEPTRHZ_ADR,8DH

CALLLCD_DISP

LEABX,HZ_SEC02

MOVBYTEPTRHZ_ADR,8FH

CALLLCD_DISP

LEABX,HZ_SEC01

MOVBYTEPTRHZ_ADR,8EH

CALLLCD_DISP

LEABX,HZ_MIN02

MOVBYTEPTRHZ_ADR,8CH

CALLLCD_DISP

LEABX,HZ_MIN01

MOVBYTEPTRHZ_ADR,8BH

CALLLCD_DISP

LEABX,HZ_HOU02

MOVBYTEPTRHZ_ADR,89H

CALLLCD_DISP

LEABX,HZ_HOU01

MOVBYTEPTRHZ_ADR,88H

CALLLCD_DISP

;星期显示,第四行98~9F

LEABX,HZ_WEEK01

MOVBYTEPTRHZ_ADR,9AH

CALLLCD_DISP

LEABX,HZ_WEEK02

MOVBYTEPTRHZ_ADR,9BH

CALLLCD_DISP

LEABX,HZ_WEEK

MOVBYTEPTRHZ_ADR,9CH

CALLLCD_DISP

RET

FUCTION_AENDP

CLEARPROC

MOVAL,0CH

MOVDX,PORT_A

OUTDX,AL

CALLCMD_SETUP

RET

CLEARENDP

LCD_DISPPROC

PUSHCX

MOVAL,HZ_ADR

MOVDX,PORT_A

OUTDX,AL

CALLCMD_SETUP

MOVAX,[BX]

PUSHAX

MOVAL,AH

MOVDX,PORT_A

OUTDX,AL

CALLDATA_SETUP

CALLDELAY

POPAX

MOVDX,PORT_A

OUTDX,AL

CALLDATA_SETUP

CALLDELAY

POPCX

RET

LCD_DISPENDP

CMD_SETUPPROC

MOVDX,PORT_C

NOP

MOVAL,00000000B;PC6置0,pc4置0(LCDI端=0,W端=0)

OUTDX,AL

CALLDELAY

NOP

MOVAL,01000000B;PC6置1(LCDE端=1)

OUTDX,AL

NOP

CALLDELAY

MOVAL,00000000B;PC6置0,(LCDE端置0)

OUTDX,AL

CALLDELAY

RET

CMD_SETUPENDP

DATA_SETUPPROC

MOVDX,PORT_C;PORT_A?

MOVAL,00010000B;PC5置0,PC4=1(LCDI端=1)

OUTDX,AL

NOP

CALLDELAY

MOVAL,01010000B;PC6置1(LCDE端=1)

OUTDX,AL

NOP

CALLDELAY

MOVAL,00010000B;PC6置0,(LCDE端=0)

OUTDX,AL

NOP

CALLDELAY

RET

DATA_SETUPENDP

DELAYPROC

PUSHCX

PUSHDX

MOVCX,0FFFFH

X1:

LOOPX1

POPDX

POPCX

RET

DELAYENDP

DELAY_SECPROCNEAR;软延时

MOVBX,250

L1:

MOVCX,0

L2:

LOOPL2

DECBX

JNEL1

RET

;L1:

MOVDX,PORT_A

;INAL,DX

;ANDAL,80H

;CMPAL,00H判断是否为低电平,不是则循环;JEL2

;JMPL1;L2:

RET

DELAY_SECENDP

JPPROC

JP_START:

MOVDX,PORT_8255

MOVAL,10001010B;A口输出B口输入C口低四位输出,高四位输入

OUTDX,AL

;万年历显示80H~87H

LEABX,HZ_X

MOVBYTEPTRHZ_ADR,81H

CALLLCD_DISP

MOVBYTEPTRHZ_ADR,86H

CALLLCD_DISP

LEABX,HZ_W

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1