DJNZ R5,$ DJNZ R5,$ DJNZ R5,$ DJNZ R6,DELAY1 RET END
实验十五 LED显示和键盘实验
五、实验步骤
① 用导线连接D5区和A2区的P16→SCL,P17→SDA,P10→RST_L,INT_KEY→INT0,短接D5区的JP1跳线。
② 模拟I2C软件包VI2C_ASM.INC文件,使用 $INCLUDE (VI2C_ASM.INC) 命令加入到你的汇编源文件中。在你的汇编源文件中定义SCL、SDA、ACK等信号。
③ 先编写显示的子程序(Display)和获取用户按键子程序(GetKey)。 ④ 然后再进行整体编程。如果还有一难,可以先画流程一,再编写程序。
⑤ 显示结果为:上电运行时,8位数码管显示01234567,用户按键时,键值在最右侧LED数码管显示,原显示内容左移一位,例如:显示由“01234567”变为“1234567x”,(x:用户按键值,1~16,显示为1~F,g)。
实验结果记录 视频02
按键 初始 显示 76543210
七、实验思考题 思考题程序
S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12 S13 S14 S15 S16 65432101 54321012 43210123 32101234 21012345 10123456 01234567 01234567 12345679 2345679a 345679ab 45679abc 5679abcd 679abcde 79abcdef 9abcdefg ② 如果只允许S1~S10键有效,该如何编写GetKey子程序? GETKEY: MOV SLA,#ZLG7290
MOV SUBA,#01H
MOV NUMBYTE,#01H PUSH ACC PUSH PSW SETB RS0 CLR RS1 LCALL IRDNBYTE POP PSW POP ACC PUSH ACC PUSH PSW MOV A,MRD CJNE A,#0AH,NEXT JC NEXT Mov MRD,#0
MOV DISBUF+0,#1
MOV DISBUF+1,#2 MOV DISBUF+2,#3 MOV DISBUF+3,#4 MOV DISBUF+4,#5 MOV DISBUF+5,#6 MOV DISBUF+6,#7
NEXT: POP PSW POP ACC
MOV KEY,MRD
RET
③ 如果让对应S1~S10键,显示为1~9,0,该如何编写程序? GETKEY: MOV SLA,#ZLG7290 MOV SUBA,#01H
MOV NUMBYTE,#01H PUSH ACC PUSH PSW SETB RS0 CLR RS1
LCALL IRDNBYTE POP PSW POP ACC PUSH ACC PUSH PSW
MOV A,MRD
SUBB A,#0AH JNZ NEXT MOV MRD,A NEXT: POP PSW POP ACC
MOV KEY,MRD RET