当前位置:首页 > 微机实训报告
mov dx,0ff23h ;读取键行值 in al,dx not al nop nop
and al,0fh ;判有键否? jnz key2
inc bl ; loop key1 ;
jmp nkey ;key2: test al,01h ; je key3 mov al,00h
jmp key6
key3: test al,02h je key4 mov al,08h
jmp key6
key4: test al,04h je key5 mov al,10h
jmp key6
key5: test al,08h je nkey
mov al,18h
key6: add al,bl
无键,扫描次数加1 不满8列继续 转无键处理
计算键值
cmp al,10h jnc fkey mov bl,al mov bh,0h
lea si,data2
mov al,cs:[bx+si] ;键值存在AL中 ret
nkey: ;mov al,20h ;无键值为20H mov al,byte ptr ds:[077dh] fkey: ret
data2: db 07h,04h,08h,05h,09h,06h,0ah,0bh ;键值表(数字键)
DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh
MYISR PROC NEAR ;中断处理程序MYISR PUSH AX
MOV AL,DIR CMP AL,0 JZ DOWN CMP AL,2 JZ UP jmp redikey DOWN:
MOV AL,NOW_FLOOR DEC AL
MOV NOW_FLOOR,AL
MOV BX,OFFSET DTABLE
AND AX,00FFH ADD BX,AX MOV AL,[BX]
MOV DX,MY8255_B
OUT DX,AL JMP BIJIAO
UP:
MOV BX,OFFSET DTABLE
AND AX,00FFH ADD BX,AX MOV AL,[BX] MOV AL,NOW_FLOOR INC AL
MOV NOW_FLOOR,AL
MOV DX,MY8255_B BIJIAO:
MOV AL,NOW_FLOOR MOV AH,TARGET_FLOOR CMP AH,AL JZ GUANBI jmp redikey GUANBI:
OUT DX,AL
MOV DX,MY8255_MODE
MOV AL,00001110B ;PC7=0 OUT DX,AL MOV DIR,1H
MOV AL,0
MOV DX,1300H ;标楼层
OUT DX,AL
MOV F_FLOOR,1 ; MOV DX,MY8254_MODE ; MOV AL,36H ; OUT DX,AL
MOV SI,OFFSET FREQ_LIST ; MOV DI,OFFSET TIME_LIST ; MOV DX,0FH ;1.0416667M = 0FE502H MOV AX,0E502H
DIV WORD PTR [SI] ;/ 输出频率
MOV DX,MY8254_COUNT0
OUT DX,AL ; MOV AL,AH OUT DX,AL
MOV DL,[DI] ;用IO-32输出控制8个LED,显示目置1,恢复按键有效 初始化8254工作方式 定时器0、方式3 装入频率表起始地址 装入时间表起始地址
输入时钟为1.0416667MHz,取出频率值计算计数初值,0F4240H 装入计数初值 取出演奏相对时间,调用延时子程
共分享92篇相关文档