[工学]微机接口电子时钟课程设计 网络整理.doc

上传人:音乐台 文档编号:1977374 上传时间:2019-01-27 格式:DOC 页数:39 大小:283.50KB
返回 下载 相关 举报
[工学]微机接口电子时钟课程设计 网络整理.doc_第1页
第1页 / 共39页
[工学]微机接口电子时钟课程设计 网络整理.doc_第2页
第2页 / 共39页
[工学]微机接口电子时钟课程设计 网络整理.doc_第3页
第3页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[工学]微机接口电子时钟课程设计 网络整理.doc》由会员分享,可在线阅读,更多相关《[工学]微机接口电子时钟课程设计 网络整理.doc(39页珍藏版)》请在三一文库上搜索。

1、代码硬件连线:8254硬件连线: 片选CS300H A0A2 A1A3 T0:GATE0+5V CLK047KHZ OUT0IR0 T1:GATE1PC0 CLK1OUT2 OUT1蜂鸣器 8255硬件连线:CS_1CS1CS_2CS2CS_3CS3CS_4CS4PC0GATE18259硬件连线: CS23A0H INT2INTR SP/2+5V INT_AINTA IRQ08254的OUT074系列模块硬件连线: Q_0Q0 Q_1Q1 Q_2Q2 Q_3Q3 P_0P0 P_1P1 P_2P2 CS1340H CS2360H 程序代码段:.486pdata segment at 0 use

2、16 ORG 1000h HOUR db ? MINUTE db ? SECOND db ? STOP db ? COUNT DB 0 HHOUR DB ? MMINUTE DB ? SSECOND DB ?data endscode segment use16 assume cs:code,ds:data org 1500hBEG: jmp startTAB1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh,8ch,0c1h,91h,7fh,0ffhTAB2 db 3fh,06h,5bh,4f

3、h,66h,6dh,7dh,07h,7fh,6fhKEYCOD db 0eeh,0deh,0beh,0edh,0ddh,0bdh,0ebh,0dbh,0bbh,0e7h,0d7h,0b7hKEYVAL db 0,1,2,3,4,5,6,7,8,9,0ah,0bhstart: mov eax,60000000h mov cr0,eax mov ax,code mov ds,ax CLI MOV BYTE PTR HOUR ,23 MOV BYTE PTR MINUTE,59 MOV BYTE PTR SECOND,50 MOV BYTE PTR STOP,0;8255初始化 MOV EAX,0A

4、0A0A0AH MOV DX,208H OUT DX,EAX ;8254初始化 MOV DX,30CH MOV AL,34H ;计数器0,16位,方式2,2进制 OUT DX,AL MOV DX,300H MOV AX,1175 ;计数器0初值为25ms*47KHZ OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,30CH MOV AL,54H ;计数器1,8位,方式2,2进制 OUT DX,AL MOV DX,304H MOV AX,40 ;计数器1初值为40,25ms*40=1s OUT DX,AL ;8259初始化 偶地址:3A0H 奇地址:3A8H MOV D

5、X,3A0H ;写ICW1,写入偶地址 MOV AL,13H OUT DX,AL MOV DX,3A8H ;写ICW2,写入奇地址 MOV AL,08H ;IR0的中断类型号为08H OUT DX,AL MOV DX,3A8H ;写ICW4,写入奇地址 MOV AL,05H ;主片,8259工作在80X86中 OUT DX,AL ;设置8259中断向量 MOV AX,OFFSET INTER MOV BX,20H ;08H*4 MOV BX,AX MOV AX,SEG INTER MOV BX+2,AX ;开放IRQ0 MOV DX,3A8H MOV AL,11111110B ;开放IRQ0

6、OUT DX,AL ;判断G键或S键是否按下G: STI NOP CALL INPUT CALL DELAY CMP AL,0D7H ;判断G键是否按下,若按下同时设置闹铃时间 JNZ S NOT STOP CALL INPUT CALL DELAY CALL ALARM ;设定闹铃子程序 JMP GS: CMP AL,0B7H JNZ G MOV STOP,0FFH ;设置时间 ;设置小时 MOV CX,2 JMP H1 H2: CMP AL,SI JZ H3 INC SI INC DI LOOP H2 POP CX JMP H1 H3: POP CX MOV AL,DI ;AL中内容为所按

7、键的键面值 CMP CX,2 JNZ H4;CX=2设置十位,否则设置个位 CMP AL,2 JA H1 PUSH AX PUSH BX MOV DX,208H IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,200H ;送数码管时的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV HOUR,AL CALL DELAY JMP H6H

8、1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP H2 H4: CALL DELAY PUSH AX PUSH BX MOV DX,208H IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,2 JNZ H5 CMP AL,4 JA H1H5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,204H ;送数码管时的个位 OU

9、T DX,AL ADD HOUR,AH CALL DELAY H6: LOOP H1 ;设置分钟 MOV CX,2 JMP M1 M2: CMP AL,SI JZ M3 INC SI INC DI LOOP M2 POP CX JMP M1 M3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ M4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA M1 PUSH AX PUSH BX MOV DX,209H IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,0

10、1H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,201H ;送数码管分的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV MINUTE,AL CALL DELAY JMP M6M1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP M2 M4: CALL DELAY PUSH AX PUSH BX MOV DX,209H IN AL,DX MOV BL,AL AND BL

11、,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,5 JNZ M5 CMP AL,9 JA M1M5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,205H ;送数码管分的个位 OUT DX,AL ADD MINUTE,AH CALL DELAY M6: LOOP M1 ;设置秒钟 MOV CX,2 JMP S1 S2: CMP AL,SI JZ S3 INC SI INC DI LOOP S2 POP CX JMP S1 S3: POP CX MOV AL,DI ;A

12、L中内容为所按键的键面值 CMP CX,2 JNZ S4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA S1 PUSH AX PUSH BX MOV DX,20AH IN AL,DX MOV BL,AL AND BL,0FCH AND AL,03H NOT AL AND AL,BL ADD AL,01H OUT DX,AL POP BX POP AX MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,202H ;送数码管秒的十位 OUT DX,AL MOV DL,AH MOV AL,10 MUL DL MOV SECOND,AL CALL DEL

13、AY JMP S6S1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP S2S4: CALL DELAY PUSH AX PUSH BX MOV DX,20AH IN AL,DX MOV BL,AL AND BL,0F3H AND AL,0CH NOT AL AND AL,BL ADD AL,04H OUT DX,AL POP BX POP AX CMP DL,5 JNZ S5 CMP AL,9 JA S1S5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,206H ;送数

14、码管秒的个位 OUT DX,AL ADD SECOND,AH CALL DELAYS6: LOOP S1 MOV DX,208H MOV EAX,0A0A0A0AH OUT DX,EAX MOV STOP,0 JMP G ;行扫描法读取键入值INPUT PROC PUSH BX PUSH DX WT: MOV AL,00H MOV DX,360H OUT DX,AL NOP NOP MOV DX,360H IN AL,DX AND AL,0FH CMP AL,0FH JZ WT ;al全为0,说明无键按下 NOP NOP MOV DX,360H ;再次确认是否有键按下 IN AL,DX AND

15、 AL,0FH CMP AL,0FH JZ WT MOV CX,3 MOV BL,0FEHNEXT: MOV AL,BL MOV DX,360H OUT DX,AL NOP NOP IN AL,DX AND AL,0FH CMP AL,0FH JNZ KEY ROL BL,1 LOOP NEXT JMP WTKEY: SHL BL,4 OR AL,BL CALL RELEASE POP DX POP BX RETINPUT ENDP;设定闹钟ALARM PROC PUSH CX PUSH AX PUSH DX MOV CX,2 JMP HH1HH2: CMP AL,SI JZ HH3 INC

16、SI INC DI LOOP HH2 POP CX JMP HH1 HH3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ HH4;CX=2设置十位,否则设置个位 CMP AL,2 JA HH1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,200H;送数码管时的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV HHOUR,AL CALL DELAY JMP HH6HH1: PUSH CX CALL INPUT CALL DELAY LEA SI,KE

17、YCOD LEA DI,KEYVAL MOV CX,12 JMP HH2 HH4: CALL DELAY CMP DL,2 JNZ HH5 CMP AL,4 JA HH1HH5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,204H ;送数码管时的个位 OUT DX,AL CALL DELAY ADD HHOUR,AH ;将闹铃值保存在内存中 CALL DELAY HH6: LOOP HH1 ;设置分钟 MOV CX,2 JMP MM1 MM2: CMP AL,SI JZ MM3 INC SI INC DI LOOP MM2 POP CX JMP MM1 MM3: PO

18、P CX MOV AL,DI ;AL中内容为所按键的键面值 CMP CX,2 JNZ MM4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA MM1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,201H ;送数码管分的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV MMINUTE,AL CALL DELAY JMP MM6MM1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP MM2

19、MM4: CALL DELAY CMP DL,5 JNZ MM5 CMP AL,9 JA MM1MM5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,205H ;送数码管分的个位 OUT DX,AL CALL DELAY ADD MMINUTE,AH ;将闹铃值保存在内存中 CALL DELAY MM6: LOOP MM1 ;设置秒钟 MOV CX,2 JMP SS1 SS2: CMP AL,SI JZ SS3 INC SI INC DI LOOP SS2 POP CX JMP SS1 SS3: POP CX MOV AL,DI ;AL中内容为所按键的键面值 CMP C

20、X,2 JNZ SS4 ;CX=2设置十位,否则设置个位 CMP AL,5 JA SS1 MOV AH,AL LEA BX,TAB1 ;查找七段代码值 XLAT MOV DX,202H ;送数码管秒的十位 OUT DX,AL CALL DELAY MOV DL,AH MOV AL,10 MUL DL MOV SSECOND,AL CALL DELAY JMP SS6SS1: PUSH CX CALL INPUT CALL DELAY LEA SI,KEYCOD LEA DI,KEYVAL MOV CX,12 JMP SS2SS4: CALL DELAY CMP DL,5 JNZ SS5 CMP

21、 AL,9 JA SS1SS5: MOV AH,AL LEA BX,TAB1 XLAT MOV DX,206H ;送数码管秒的个位 OUT DX,AL CALL DELAY ADD SSECOND,AH ;将闹铃值保存在内存中 CALL DELAY SS6: LOOP SS1 MOV STOP,0 POP DX POP AX POP CXALARM ENDP;判断按键是否释放RELEASE PROC PUSH AX PUSH DXR1: MOV AL,00H ;行线给0,读列线看是否为0 MOV DX,360H OUT DX,AL NOP NOP IN AL,DX AND AL,0FH CMP

22、 AL,0FH JNZ R1 POP DX POP AX RETRELEASE ENDP;延时子程序DELAY PROC PUSH CX MOV CX,500DEL: LOOP DEL POP CX RETDELAY ENDP ;中断服务程序INTER PROC PUSH AX PUSH BX PUSH DX STI CMP STOP,0 JNZ L3 LEA BX,TAB1 L0: ADD COUNT,1 CMP COUNT,40 ;每40次中断记一秒钟 JNZ L1 MOV COUNT,0 MOV AL,SECOND ADD AL,1 MOV SECOND,AL CMP AL,60 JNZ

23、 L1 MOV BYTE PTR SECOND,0 MOV AL,MINUTE ADD AL,1 MOV MINUTE,AL CMP AL,60 JNZ L1 MOV BYTE PTR MINUTE,0 MOV AL,HOUR ADD AL,1 MOV HOUR,AL CMP AL,24 JNZ L1 MOV BYTE PTR HOUR,0 L1: MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,200H OUT DX,AL MOV AL,AH XLAT MOV DX,204H OUT DX,AL MOV AL,MINUTE MOV AH,0

24、 MOV CL,10 DIV CL XLAT MOV DX,201H OUT DX,AL MOV AL,AH XLAT MOV DX,205H OUT DX,AL MOV AL,SECOND MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,202H OUT DX,AL MOV AL,AH XLAT MOV DX,206H OUT DX,AL MOV AL,MINUTE CMP AL,59 JNZ Q1 MOV AL,SECOND CMP AL,55 JNZ Q1 MOV AL,01H ;当时间为59分55秒时,令GATE1为1,接PC0,报时蜂鸣器响 MOV DX,

25、20BH OUT DX,AL JMP L3 Q1: MOV AL,HOUR ;比较闹铃值,相等则令GATE1为1,蜂鸣器响 CMP AL,HHOUR JNZ L2 MOV AL,MINUTE CMP AL,MMINUTE JNZ Q MOV AL,01H MOV DX,20BH OUT DX,AL JMP L3 Q: MOV AL,MINUTE CMP AL,MMINUTE JZ L3 MOV AL,00H MOV DX,20BH OUT DX,AL JMP L3L2: MOV AL,SECOND CMP AL,1 JNZ L3 MOV AL,00H MOV DX,20BH OUT DX,AL

26、 L3: CALL DIS MOV AL,20H ;发EOI命令 MOV DX,3A0H OUT DX,ALL4: CLI POP DX POP BX POP AX IRETINTER ENDP;将时分秒值给74系列数码管显示DIS PROC PUSH AX PUSH BX PUSH DX LEA BX,TAB2 MOV AL,HOUR MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,81H OUT DX,AL CALL DELAY MOV AL,AH XLAT MOV DX,340H OUT DX

27、,AL MOV DX,360H MOV AL,82H OUT DX,AL CALL DELAY MOV AL,MINUTE MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,84H OUT DX,AL CALL DELAY MOV AL,AH XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,88H OUT DX,AL CALL DELAY MOV AL,SECOND MOV AH,0 MOV CL,10 DIV CL XLAT MOV DX,340H OUT

28、 DX,AL MOV DX,360H MOV AL,90H OUT DX,AL CALL DELAY MOV AL,AH XLAT MOV DX,340H OUT DX,AL MOV DX,360H MOV AL,0A0H OUT DX,AL CALL DELAY POP DX POP BX POP AX RETDIS ENDPCODE ENDS END BEG182.1.2接口的作用和功能)接口一般多指I/O接口,其作用有三点:()信息变化-包括信息种类的转换(A/D,D/A)和数字格式转换(如串/并,并/串);()速度协调-因CPU是工作与ns数量级,而外设多为机械动作,如硬盘的读/写时间

29、为ms数量级,键盘的操作更慢,因此接口起到速度协调的作用,使快速的CPU能与慢速的外设协调工作;()辅助和缓冲-辅助电路包括常见的中断控制器,DMA控制器,计数/定时器,时钟发生器等,而缓冲电路包括电平、阻抗、功率和时间的匹配和驱动。)CPU与外设之间的接口,一般应具有如下八个功能()数据缓冲功能为了解决CPU高速与外设低速的矛盾,避免速度不一致而丢失数据,接口中一般都设置数据寄存器或锁存器称为数据口。为了实现CPU与外设之间的联络,接口电路还要提供寄存器”空”、”满”、”准备好”、”忙”、”闲”等状态信号,以便向CPU报告接口或外设的工作情况,称为状态口。()接收和执行CPU命令的功能CPU对I/O设备的控制命令,一般一代码的形式送到接口的命令寄存器,称为命令口;再由接口电路对命令代码进行识别和分析,产生若干控制信号,传到I/O设备,使其产生相应的操作。()信号转换功能由于外设所需的控制信号和它所能提供的状态信号往往与微机的总线信号不匹配,信号变换就不可避免,因此,信号转换包括CPU的信号

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1