微机接口课程设计--电子钟实验_第1页
微机接口课程设计--电子钟实验_第2页
微机接口课程设计--电子钟实验_第3页
微机接口课程设计--电子钟实验_第4页
微机接口课程设计--电子钟实验_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 微机原理与接口技术-电子钟实验2011年1月6日一 实验任务及要求任务:1、掌握综合使用基本输入输出设备、通用接口芯片、专用接口芯片的方法;2、掌握实时处理程序的编制和调试方法。要求 设计一个定时显示装置,用实验仪左侧的六个LED 数码管显示时间,时间显示格式为24小时制。分秒值为59分55秒时开始报时,每秒钟蜂鸣器鸣叫一声,到整点报时停止。 用小键盘控制时钟的启停和时钟的设置,键的定义参见左图 键值具体定义如下:G 键(启停键) 程序启动后,按下该键时 钟启动; 再次按下该键,暂停计时,显示当前时间。S 键(设置键) 按下S 键后,为时钟设置时、分、秒初始值。二 硬件连线键盘的控制、LED

2、 显示模块:采用74系列模块控制键盘的行信号Q_0、Q_1、Q_2、Q_3分别与开放的输入信号Q0、Q1、Q2、Q3相连,键盘的列信号P_0、P_1、P_2和开放的输出信号P0、P1、P2相连。74芯片的片选信号CS1接地址译码信号340H , CS2接地址译码信号360H 。时间的精确定时:用8254定时器0产生25ms 的中断信号;8254的片选CS 连地址输出端320H ,A0,A1分别连地址总线A2,A3,GATE0连+5V,CLK0连74LS393分频输出的47K 输出端,OUT0连接到8259的IRQ0整点报时控制:由8255模块控制;PC0直接与蜂鸣器相连,CS_4连接到实验仪中

3、部的地址输出端CS_4中断处理模块:由8259控制8259的片选CS-1连地址输出300H , INT1连总线输入INTR ,8259模块的INT-A 连总线的INTA ,8259的SP/1连+5V, 8259的IRQ0连接到8254的 OUT0。三、程序流程图初始化8255、8254、8259芯片设置中断向量,开放8259中断屏蔽开放处理器中断保护现场59分55秒YN G S ADDONE 子程序清0结束中断(发EOI 命令)恢复现场四、实验源代码.486pDA TA SEGMENT AT 0 USE16ORG 1000HHOUR DW ?MIN DW ?SEC DW ?ST DB ?COU

4、NT DB ?YN YDA TA ENDSCODE SEGMENT USE16ASSUME CS:CODE,DS:DATAORG 1500HBEG:JMP STARTTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,00H ;0F的共阴极七段译码表 00H 表示不显示任何东西KEYCOD DB 0EEH,0DEH,0BEH,0EDH,0DDH,0BDH,0EBH,0DBH,0BBH,0E7H,0D7H,0B7H ;行列编码值 KEYV AL DB 0,1,2,3,4,5,6,7,8,9,0AH,0BH ;所有键的键面值PORT1 EQ

5、U 340H ; 数码管段选端口PORT2 EQU 360H ; 数码管位选端口,键盘矩阵的行列端口START: MOV EAX,60000000HMOV CR0,EAXMOV AX,DATAMOV DS,AXMOV HOUR,0203H ; 小时分钟以及秒的初始化MOV MIN,0509HMOV SEC,0502HLEA BX,TABMOV ST,0 ; 开始暂停标志位置0MOV COUNT ,0 ; 中断次数计数初始值为0;8255初始化 ,用于产生报时的脉冲MOV DX,20FH ; 利用左四的8255,控制口为20FH MOV AL,10000000B ;C 口输出OUT DX,ALM

6、OV DX,20BHL ;C0输出1,蜂鸣器不响MOV AL,0FFHOUT DX,AL;8254初始化, 用于产生周期为25ms 的中断MOV AL,00110110B ; 计数器0,先低后高,方式三,二进制 MOV DX,32cH ; 写往控制口OUT DX,ALMOV DX,320H ; 计数器0写初值:47KHz*25ms MOV AX,1175OUT DX,ALMOV AL,AHOUT DX,AL;8259初始化CLI :关中断MOV DX,300H ;ICW1MOV AL,00010011BOUT DX,ALMOV DX,308H ;ICW2MOV AL,08H ;IR0中断类型号

7、为08HOUT DX,ALMOV AL,00000001B ;ICW4OUT DX,ALMOV AL,0FEH;IR0开屏蔽 OUT DX,ALXOR AX,AX; 装载中断向量 MOV ES,AXMOV DI,08H*4MOV AX,OFFSET INTSRMOV ES:DI,AXMOV AX,SEG INTSRMOV ES:DI+2,AXSTI; 开中断 JMP $INTSR PROC; 中断服务程序 CMP MIN,0509H; 比较当前时间是否在59分55秒00分00秒之间 JL NEXT1CMP SEC,0505HJL NEXT1MOV DX,20BHMOV AL,00H; 蜂鸣器低

8、有效,报时 OUT DX,ALJMP NEXT2NEXT1: CMP MIN,0JNE NEXT3CMP SEC,0JNE NEXT3MOV DX,20BHMOV AL,00H; 蜂鸣器低有效,报时 OUT DX,ALJMP NEXT2NEXT3: MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT2: CMP COUNT,20 ; 用8255产生0.5ms 的蜂鸣JLE NEXT4MOV DX,20BHMOV AL,0FFHOUT DX,ALNEXT4: CALL KEYCHECK ; 检测有无键按下CMP AL,0AH ; 启停键按下,调用启停程序JNZ NEXT5CA

9、LL TSTARTJMP NEXT6NEXT5: CMP AL,0BH; 设置键按下,调用设置时间程序 JNZ NEXT6CALL SETTIMENEXT6: INC COUNT; 当COUNT 直为40时,加一秒,之后置0 CMP COUNT,40;25ms*40=1s JB NEXT7CALL ADDONEMOV COUNT,0NEXT7: CALL SHOW; 显示时间MOV AL,20H; 发EOI 命令,结束中断 MOV DX,300HOUT DX,ALIRETINTSR ENDPTSTART PROC; 控制暂停和开始 CMP ST,00HJNE L1DEC STJMP L2L1:

10、 INC STL0: CALL KEYCHECKCMP AL,0AHJZ L2CALL SHOWJMP L0L2: RETTSTART ENDPADDONE PROC; 加1秒子程序 MOV AX,SEC; 当前秒个位为9,加1后变0,十位加1 CMP AL,9JE N1INC ALMOV SEC,AXJMP N6N1: INC AHMOV AL,0CMP AH,6 ; 十位加1后为6,则秒变为00,分钟个位加1 JE N2MOV SEC,AXJMP N6N2: MOV AX,0MOV SEC,AXMOV AX,MIN; 当前分钟个位为9,加1后变0,十位加1 CMP AL,9JE N3INC

11、 ALMOV MIN,AXJMP N6N3: INC AHMOV AL,0CMP AH,6; 十位加1后为6,则分钟变为00,小时个位加1 JE N4MOV MIN,AXJMP N6N4: MOV AX,0MOV MIN,AXMOV AX,HOURINC ALCMP AX,0204H; 小时加1后与24比,相等,则变为0 JE N5MOV HOUR,AXJMP N6N5: MOV AX,0MOV HOUR,AXN6: RETADDONE ENDPSETTIME PROC; 设置时间子程序 LEA BX,TABMOV HOUR,0MOV MIN,0MOV SEC,0NOPNOPL1: CALL

12、KEYCHECK; 调用KEYCHECK ,无键按下时,AL 中值为0CHCALL DELAYCMP AL,0CHJNZ L2JMP L1L2: CMP AL,02HJG L1 ; 设置小时十位时,将其他各位数码管灭掉及对应的七段译码表0CH MOV AH,ALMOV BYTE PTRHOUR+1,ALMOV BYTE PTRHOUR,0CHMOV MIN,0C0CHMOV SEC,0C0CHL3: CALL SHOWCALL KEYCHECK ;设置小时的个位CALL DELAYCMP AL,0CHJZ L3MOV AH,BYTE PTRHOUR+1L4: CMP AX,0204HJGE L

13、1MOV HOUR,AXL5: CALL SHOWCALL KEYCHECK ;设置分钟的十位CALL DELAYCMP AL,0CHJZ L5L6: CMP AL,06HJGE L1MOV AH,ALMOV BYTE PTRMIN+1,ALL7: CALL SHOWCALL KEYCHECK ; 设置分钟的个位CALL DELAYCMP AL,0CHJZ L7MOV AH,BYTE PTRMIN+1L8: CMP AX,0509HJG L1MOV MIN,AXL9: CALL SHOWCALL KEYCHECK ; 设置秒的十位CALL DELAYCMP AL,0CHJZ L9L10: CM

14、P AL,06HJGE L1MOV AH,ALMOV BYTE PTRSEC+1,ALL11: CALL SHOWCALL KEYCHECK ; 设置秒的个位CALL DELAYCMP AL,0CHJZ L11MOV AH,BYTE PTRSEC+1L12: CMP AX,0509HJG L1MOV SEC,AXL13: CALL SHOWCALL KEYCHECK ; 再次按键,启动计时 CALL DELAYCMP AL,0CHJZ L13RETSETTIME ENDPKEYCHECK PROC ; 判断有无键按下子程序 PUSH BXCALL CLEARMOV DX,PORT2IN AL,

15、DXAND AL,0FHCMP AL,0FHJZ EXIT ; 有按键按下, 延时消抖 NOPNOP; 再次确认是否有键按下 IN AL,DXAND AL,0FHCMP AL,0FHJZ EXIT; 开始对每一列进行逐行扫描 MOV CX,3MOV BL,0FEHNEXT:MOV AL,BLMOV DX,PORT2OUT DX,ALNOPNOPIN AL,DXAND AL,0FH CMP AL,0FH JNZ KEY ROL BL,1 LOOP NEXT JMP EXIT KEY: SHL BL,4 OR AL,BL ;形成一个字节的键码信息存入 AL,高 4 位为列信息低 4 位为行信息 L

16、EA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 NEXT11: CMP AL,SI JZ FIND INC SI INC DI LOOP NEXT11 JMP EXIT FIND: MOV AL,DI ;AL 中内容为所按键的键面值 PUSH AX NOP NOP WAIT1: IN AL,DX ;判断按键是否已释放,若无则等待 AND AL,0FH CMP AL,0FH JNZ WAIT1 POP AX JMP EXIT2 EXIT:MOV AL,0CH EXIT2:NOP POP BX RET KEYCHECK ENDP SHOW PROC ;显示时间 MOV A

17、X,HOUR XLAT MOV DX,PORT1 OUT DX,AL MOV DX,PORT2 MOV AL,0C2H OUT DX,AL CALL DELAY CALL CLEAR ;段选输出数据 ;位选输出小时的个位 MOV AL,AH XLAT MOV DX,PORT1 OUT DX,AL MOV DX,PORT2 MOV AL,0C1H OUT DX,AL CALL DELAY CALL CLEAR MOV AX,MIN XLAT MOV DX,PORT1 OUT DX,AL MOV DX,PORT2 MOV AL,0C8H OUT DX,AL CALL DELAY CALL CLEA

18、R MOV AL,AH XLAT MOV DX,PORT1 OUT DX,AL MOV DX,PORT2 MOV AL,0C4H OUT DX,AL CALL DELAY CALL CLEAR MOV AX,SEC XLAT MOV DX,PORT1 OUT DX,AL MOV DX,PORT2 MOV AL,0E0h OUT DX,AL CALL DELAY CALL CLEAR MOV AL,AH XLAT MOV DX,PORT1 ;段选输出数据 ;位选输出小时的十位 ;段选输出数据 ;位选输出分钟的个位 ;段选输出数据 ;位选输出分钟的十位 ;段选输出数据 ;位选输出秒的个位 ;段选输出数据 OUT DX,AL MOV DX,PORT2 MOV AL,0D0H OUT DX,AL CALL DELAY CALL CLEAR RET SHOW ENDP CODE ENDS END BEG PROC PUSH CX MOV CX,1000 LOOP $ POP CX RET DELAY ENDP PROC MOV AL,00H MOV DX,PORT1 OUT DX,AL MOV DX,PORT2 OUT DX,AL NOP NOP RET CLEAR ENDP CLEAR DELAY ;位选输出秒的十位 ;延时子程序 ;使七段译码管全灭子程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论