ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:23.52KB ,
资源ID:6253944      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6253944.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(硬件课程设计日历.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

硬件课程设计日历.docx

1、硬件课程设计日历2系统模块详细设计与调试1在主程序中要分别对8254和8255初始化编程。具体如下:8254控制字:MOVDX,PORT_8253MOVAL,00110101B;写入控制字,0通道,方式2OUTDX,ALMOVDX,PORT_0MOVAL,00HOUTDX,ALMOVAL,10HOUTDX,ALMOVDX,PORT_8253MOVAL,01110111B;1通道,方式3OUTDX,ALMOVDX,PORT_1MOVAL,00HOUTDX,ALMOVAL,10HOUTDX,AL8255控制字:MOVDX,PORT_8255;8255初始化MOVAL,80HOUTDX,AL程序清单

2、与注释:PORT_A EQU 288H PORT_B EQU 289H PORT_C EQU 28AH PORT_8255 EQU 28BH PORT_0 EQU 280H PORT_1 EQU 281H PORT_2 EQU 282H PORT_8253 EQU 283H DATA SEGMENT ; 0 1 2 3 4 5 6 7 TABLE1 DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH ; 8 9 A B C D E F DB 0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEHHZ_SEC02 DW 0A3B0H HZ_SEC

3、01 DW 0A3B0H HZ_MIN02 DW 0A3B0HHZ_MIN01 DW 0A3B0H HZ_HOU02 DW 0A3B0H HZ_HOU01 DW 0A3B0H HZ_TIM DW 0A1C3H ;符号:HZ_SYM DW 0A1C3H HZ_YEAR02 DW 0A3B0H HZ_YEAR01 DW 0A3B0H HZ_MON02 DW 0A3B1H HZ_MON01 DW 0A3B0H HZ_DAY02 DW 0A3B1H HZ_DAY01 DW 0A3B0H HZ_DATE DW 0A3AFH HZ_WEEK DW 0A3B6H HZ_WEEK01 DW 0D0C7H ;字

4、体星HZ_WEEK02 DW 0C6DAH ;字体期HZ_X DW 0A1EFH ;符号 HZ_W DW 0CDF2H ;字体万HZ_N DW 0C4EAH ;字体年 HZ_R DW 0C8D5H ;字体日 HZ_L DW 0C0FAH ;字体历 HZ_ADR DB ?DATA ENDS STACK1 SEGMENT STACK DW 50 DUP (0) TOP_STAC LABEL WORDSTACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,STACK1 MOV SS,AX LEA SP,TOP_STAC MOV AX

5、,DATA MOV DS,AX MOV DX,PORT_8255 ;8255初始化 MOV AL,80H OUT DX,AL CALL CLEAR ;LCD清除 CALL FUCTION_A ;日期显示 ;8253的编程 MOV DX,PORT_8253 MOV AL,00110101B ;写入控制字,0通道,方式2 OUT DX,AL MOV DX,PORT_0MOV 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,00

6、H OUT DX,AL MOV AL,10H OUT DX,ALMAIN: LP:MOV DX,PORT_C TEST DX,10H ;检测B口是否有1秒脉冲JNZ LP TEST DX,00H JNZ LPINC HZ_SEC02 ;秒的个位加一 ;判断是否有键按下MOV DX,PORT_8255 MOV AL,10001010B;A口输出B口输入C口低四位输出,高四位输入OUT DX,AL MOV DX,PORT_A ;A口为行,向所有的行输出0MOV AL,00H OUT DX,AL MOV DX,PORT_BRET_TO_1: MOV AL,0FEH MOV CL,ALNEXT_ROW

7、_1: MOV DX,PORT_A OUT DX,AL MOV DX,PORT_B IN AL,DX AND AL,0FH CMP AL,0FH ;判断是否有键按下 JNE JP_1 CMP CL,0EFH JE FUC ROL CL,01 MOV AL,CL JMP NEXT_ROW_1 JP_1: CALL JP FUC: CALL FUCTION_00 ;时间的进位 CALL FUCTION_01 ;日期的进位 CALL FUCTION_02 ;星期的进位 CALL FUCTION_A ;日期显示 JMP MAINFUCTION_00 PROC CMP HZ_SEC02,0A3BAH;判

8、断是否为十,是跳转到秒进位子程序JE TIM_NEXT_01 RET TIM_NEXT_01: INC HZ_SEC01 ;秒的十位加一 MOV HZ_SEC02,0A3B0H ;个位置零 CMP HZ_SEC01,0A3B6H ;判断是否为六,是跳转 JE TIM_NEXT_02 RET TIM_NEXT_02: INC HZ_MIN02 ;分的个位加一 MOV HZ_SEC01,0A3B0H CMP HZ_MIN02,0A3BAH ;判断是否为十,是跳转JE TIM_NEXT_03 RET TIM_NEXT_03: INC HZ_MIN01 ;分的十位加一 MOV HZ_MIN02,0A3

9、B0H CMP HZ_MIN01,0A3B6H ;判断是否大于六,是跳转JE TIM_NEXT_04 RET TIM_NEXT_04: INC HZ_HOU02 ;时的十位加一 MOV HZ_MIN01,0A3B0H CMP HZ_HOU01,0A3B2H ;判断是否为二,是跳转JE TIM_NEXT_05 JMP TIM_NEXT_07 TIM_NEXT_05: CMP HZ_HOU02,0A3B4H ;判断时的个位是否为四,是跳转JE TIM_NEXT_06 JMP TIM_NEXT_07 TIM_NEXT_06: MOV HZ_HOU01,0A3B0H MOV HZ_HOU02,0A3B

10、0H INC HZ_DAY02 ;日期加一 INC HZ_WEEK ;星期加一 RET TIM_NEXT_07: CMP HZ_HOU02,0A3BAH ;判断时的个位是否为十,是跳转JE TIM_NEXT_08 RET TIM_NEXT_08: INC HZ_HOU01 ;(个位为十)十位加一,个位置零MOV HZ_HOU02,0A3B0H RET FUCTION_00 ENDP FUCTION_01 PROC CALL CMP_MON CALL MON_COUNT CALL YEAR_WALK RET FUCTION_01 ENDP CMP_MON PROC CMP HZ_MON01,0A

11、3B0H ;判断是否是个位的月份 JE MON01_EQU_0 JMP MON01_EQU_1 MON01_EQU_0: CMP HZ_MON02,0A3B1H ;一月JE GO_TO_31 CMP HZ_MON02,0A3B2H ;二月 JE GO_TO_2MON CMP HZ_MON02,0A3B3H ;三月 JE GO_TO_31 CMP HZ_MON02,0A3B4H ;四月 JE GO_TO_30 CMP HZ_MON02,0A3B5H ;五月 JE GO_TO_31CMP HZ_MON02,0A3B6H ;六月 JE GO_TO_30 CMP HZ_MON02,0A3B7H ;七月

12、 JE GO_TO_31 CMP HZ_MON02,0A3B8H ;八月 JE GO_TO_31 CMP HZ_MON02,0A3B9H ;九月 JE GO_TO_30 MON01_EQU_1: CMP HZ_MON02,0A3B0H ;十月 JE GO_TO_31 CMP HZ_MON02,0A3B1H ;十一月 JE GO_TO_30 CMP HZ_MON02,0A3B2H ;十二月 JE GO_TO_31 GO_TO_31: CALL COUNT_31 ;31天的子程序 JMP TO_END GO_TO_30: CALL COUNT_30 ;30天的子程序 JMP TO_END GO_T

13、O_2MON: CALL MON_2_COUNT ;二月的子程序 JMP TO_END TO_END: RET CMP_MON ENDP COUNT_28 PROC CMP HZ_DAY01,0A3B2H ;判断天十位是否为2,是跳转 JE NEXT_28_01 JMP NEXT_28_03 NEXT_28_01: CMP HZ_DAY02,0A3B9H ;判断天个位是否为9,是跳转JE NEXT_28_02 JMP NEXT_28_03NEXT_28_02: MOV HZ_DAY01,0A3B0H MOV HZ_DAY02,0A3B1H INC HZ_MON02 ;月加一 NEXT_28_0

14、3: CMP HZ_DAY02,0A3BAH JE NEXT_28_04RET NEXT_28_04: MOV HZ_DAY02,0A3B0H INC HZ_DAY01 RET COUNT_28 ENDP COUNT_29 PROC CMP HZ_DAY01,0A3B2H ;判断天十位是否为2,是跳转JE NEXT_29_01 JMP NEXT_29_03 NEXT_29_01: CMP HZ_DAY02,0A3BAH ;判断天个位是否为A,是跳转JE NEXT_29_02 JMP NEXT_29_03 NEXT_29_02: MOV HZ_DAY01,0A3B0H MOV HZ_DAY02,

15、0A3B1H INC HZ_MON02 ;月加一NEXT_29_03: CMP HZ_DAY02,0A3BAH JE NEXT_29_04 RET NEXT_29_04: MOV HZ_DAY02,0A3B0H INC HZ_DAY01 RET COUNT_29 ENDP COUNT_30 PROC CMP HZ_DAY01,0A3B3H;判断天十位是否为3,是跳转JE NEXT_30_01 JMP NEXT_30_03 NEXT_30_01: CMP HZ_DAY02,0A3B1H ;判断天个位是否为1,是跳转JE NEXT_30_02 JMP NEXT_30_03 NEXT_30_02:

16、MOV HZ_DAY01,0A3B0H MOV HZ_DAY02,0A3B1H INC HZ_MON02 ;月加一 NEXT_30_03: CMP HZ_DAY02,0A3BAH JE NEXT_30_04RET NEXT_30_04: MOV HZ_DAY02,0A3B0H INC HZ_DAY01 RET COUNT_30 ENDP COUNT_31 PROC CMP HZ_DAY01,0A3B3H ;判断天十位是否为3,是跳转 JE NEXT_31_01 JMP NEXT_31_03 NEXT_31_01: CMP HZ_DAY02,0A3B2H;判断天个位是否为2,是跳转 JE NEX

17、T_31_02 JMP NEXT_31_03 NEXT_31_02: MOV HZ_DAY01,0A3B0H ;置天数为01MOV HZ_DAY02,0A3B1H INC HZ_MON02 ;月份加一 RET NEXT_31_03: CMP HZ_DAY02,0A3BAH ;个位是否为十,是跳转 JE NEXT_31_04 RET NEXT_31_04: MOV HZ_DAY02,0A3B0H ;个位置零,十位加一 INC HZ_DAY01 RET COUNT_31 ENDP MON_2_COUNT PROC MOV AX, HZ_YEAR01 ;判断是否是闰年 AND AX,01H MOV

18、CX,0AH MUL CX MOV BX,HZ_YEAR02 AND BX,01H ADD AX,BX MOV DX,00H MOV BX,04H DIV BX CMP DX,0JE GO_TO_29 JMP GO_TO_28 GO_TO_29: CALL COUNT_29 ;29天的子程序 GO_TO_28: CALL COUNT_28 MON_2_COUNT ENDPYEAR_PANDUAN PROC MOV AX, HZ_YEAR01 MOV CX,0AH MUL CX ADD AX,HZ_YEAR02 MOV DX,00H MOV BX,04H DIV BX CMP DX,0 RET

19、YEAR_PANDUAN ENDPMON_COUNT PROC CMP HZ_MON01,0A3B1H ;判断月的十位是否为一 JE MON_NEXT_01 JMP MON_NEXT_03 MON_NEXT_01: CMP HZ_MON02,0A3B3H JE MON_NEXT_02 JMP MON_NEXT_03 MON_NEXT_02: MOV HZ_MON01,0A3B0H MOV HZ_MON02,0A3B1H INC HZ_YEAR02 RET MON_NEXT_03: CMP HZ_MON02,0A3BAH JE MON_NEXT_04 RETMON_NEXT_04: MOV HZ

20、_MON02,0A3B0H INC HZ_MON01 RET MON_COUNT ENDP YEAR_WALK PROC CMP HZ_YEAR02,0A3BAH JE YEAR_NEXT_01 RET YEAR_NEXT_01: MOV HZ_YEAR02,0A3B0H INC HZ_YEAR01 RET YEAR_WALK ENDP FUCTION_02 PROC CMP HZ_WEEK,0A3B8H ;是否大于7,大于跳转 JE WEEK_NEXT01 JMP WEEK_END WEEK_NEXT01: MOV HZ_WEEK,0A3B1H ;置一 JMP WEEK_END WEEK_E

21、ND: RET FUCTION_02 ENDPFUCTION_A PROC ;万年历显示80H87H LEA BX,HZ_X MOV BYTE PTR HZ_ADR,81H CALL LCD_DISP MOV BYTE PTR HZ_ADR,86H CALL LCD_DISP LEA BX,HZ_W MOV BYTE PTR HZ_ADR,82H CALL LCD_DISP LEA BX,HZ_N MOV BYTE PTR HZ_ADR,83H CALL LCD_DISP LEA BX,HZ_R MOV BYTE PTR HZ_ADR,84H CALL LCD_DISP LEA BX,HZ_L

22、 MOV BYTE PTR HZ_ADR,85H CALL LCD_DISP;日期显示,第二行90H97H LEA BX,HZ_DATE MOV BYTE PTR HZ_ADR,92H CALL LCD_DISP MOV BYTE PTR HZ_ADR,95H CALL LCD_DISP LEA BX,HZ_DAY02 MOV BYTE PTR HZ_ADR,97H CALL LCD_DISP LEA BX,HZ_DAY01 MOV BYTE PTR HZ_ADR,96H CALL LCD_DISP LEA BX,HZ_MON02 MOV BYTE PTR HZ_ADR,94H CALL LC

23、D_DISP LEA BX,HZ_MON01 MOV BYTE PTR HZ_ADR,93H CALL LCD_DISP LEA BX,HZ_YEAR02 MOV BYTE PTR HZ_ADR,91H CALL LCD_DISP LEA BX,HZ_YEAR01MOV BYTE PTR HZ_ADR,90H CALL LCD_DISP ;时间显示,第三行888F LEA BX,HZ_TIM MOV BYTE PTR HZ_ADR,8AH CALL LCD_DISP MOV BYTE PTR HZ_ADR,8DH CALL LCD_DISP LEA BX,HZ_SEC02 MOV BYTE P

24、TR HZ_ADR,8FH CALL LCD_DISP LEA BX,HZ_SEC01 MOV BYTE PTR HZ_ADR,8EH CALL LCD_DISP LEA BX,HZ_MIN02 MOV BYTE PTR HZ_ADR,8CH CALL LCD_DISP LEA BX,HZ_MIN01 MOV BYTE PTR HZ_ADR,8BHCALL LCD_DISP LEA BX,HZ_HOU02 MOV BYTE PTR HZ_ADR,89H CALL LCD_DISP LEA BX,HZ_HOU01MOV BYTE PTR HZ_ADR,88H CALL LCD_DISP ;星期显

25、示,第四行989F LEA BX,HZ_WEEK01 MOV BYTE PTR HZ_ADR,9AH CALL LCD_DISP LEA BX,HZ_WEEK02 MOV BYTE PTR HZ_ADR,9BH CALL LCD_DISP LEA BX,HZ_WEEK MOV BYTE PTR HZ_ADR,9CH CALL LCD_DISP RET FUCTION_A ENDP CLEAR PROC MOV AL,0CH MOV DX,PORT_A OUT DX,AL CALL CMD_SETUP RET CLEAR ENDPLCD_DISP PROC PUSH CX MOV AL,HZ_A

26、DR MOV DX,PORT_A OUT DX,AL CALL CMD_SETUP MOV AX,BX PUSH AX MOV AL,AH MOV DX,PORT_A OUT DX,AL CALL DATA_SETUP CALL DELAY POP AX MOV DX,PORT_A OUT DX,AL CALL DATA_SETUP CALL DELAYPOP CX RET LCD_DISP ENDPCMD_SETUP PROC MOV DX,PORT_C NOP MOV AL,00000000B ;PC6置0,pc4置0 (LCD I端=0,W端0) OUT DX,AL CALL DELAY

27、 NOP MOV AL,01000000B ;PC6置1 (LCD E端1) OUT DX,AL NOP CALL DELAY MOV AL,00000000B ;PC6置0,(LCD E端置0) OUT DX,AL CALL DELAY RET CMD_SETUP ENDPDATA_SETUP PROC MOV DX,PORT_C ;PORT_A? MOV AL,00010000B ;PC5置0,PC4=1 (LCD I端=1) OUT DX,AL NOP CALL DELAY MOV AL,01010000B ;PC6置1 (LCD E端1) OUT DX,AL NOP CALL DELA

28、Y MOV AL,00010000B ;PC6置0,(LCD E端0) OUT DX,AL NOP CALL DELAY RET DATA_SETUP ENDPDELAY PROC PUSH CX PUSH DX MOV CX,0FFFFH X1: LOOP X1 POP DX POP CXRET DELAY ENDP DELAY_SEC PROC NEAR ;软延时 MOV BX,250 L1:MOV CX,0 L2:LOOP L2 DEC BX JNE L1 RET ;L1: MOV DX,PORT_A ; IN AL,DX ; AND AL,80H ; CMP AL,00H 判断是否为低电平,不是则循环 ; JE L2 ; JMP L1 ;L2: RET DELAY_SEC ENDP JP PROC JP_START: MOV DX,PORT_8255 MOV AL,10001010B;A口输出B口输入C口低四位输出,高四位输入 OUT DX,AL ;万年历显示80H87H LEA BX,HZ_X MOV BYTE PTR HZ_ADR,81H CALL LCD_DISP MOV BYTE PTR HZ_ADR,86H CALL LCD_DISPLEA BX,HZ_W MOV BY

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

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