(整理)单片机实验指导书93576.

精品文档

JMP START

SCAN: MOV A,#0 ;扫描子程序 MOV R0,#20H MOV R2,#8 LOOP: MOV P2,A MOV P0,@R0 INC R0 CALL DELAY ADD A,#01H

DJNZ R2,LOOP ;循环显示8个数字 MOV R2,#8 CLR A RET

DELAY:MOV R3,#1 ;扫描延时 D1:MOV R4,#2 D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET END

实验B、矩阵键盘实验:

ORG 0000H AJMP MAIN ORG 0030H

MAIN: MOV 20H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23H,#00H MOV 24H,#00H MOV 25H,#00H

MOV 26H,#00H

MOV 27H,#00H

精品文档

;初始化,清显示

精品文档

LCALL SCAN ;显示 S1: LCALL KEY

;调用键盘扫描程序,并返回键值

LCALL SCAN

JNB F0,S1

CLR F0

;显示

;有键按下继续执行,否则继续返回S1扫描 ;清标志

MOV A,3FH

/////////数码管显示程序///////////////////////////////////// SCAN: MOV A,#0 ;扫描子程序 MOV R0,#20H MOV R2,#8 LOOP: MOV P2,A MOV P0,@R0 INC R0 CALL DELAY ADD A,#01H

DJNZ R2,LOOP ;循环显示8个数字 MOV R2,#8 CLR A

精品文档

MOV A,7BH MOV 27H,A LCALL SCAN AJMP S1

;低位的码型值存于27H

MOV A,7AH MOV 26H,A

;高位的码型值存于26H

LCALL CHA_BIAO ;查表,将数字对应的码型值存于相应寄存器 LCALL ZHUAN

;将16进制的编号转换成十进制的BCD码

MOV 46H,A

;存按键的编号到46H

精品文档

RET

DELAY:MOV R3,#1 ;扫描延时 D1:MOV R4,#2 D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET

////////////////////////////////////////////////////////////

//////将46H单元中存放的十六进制数转换成十进制的BCD码并存放于7CH(最高位),7DH, 7EH(最低位)单元中//////////// ZHUAN:MOV A,46H MOV B,#0AH DIV AB MOV 7EH,B MOV B,#0AH DIV AB MOV 7DH,B MOV 7CH,A RET

////////////////////////////////////////////////////////////////

///////////////十进制数存于7CH,7DH,7EH单元中//////////////////////////////////// //////////////对应的码型存入79H,7AH,7BH单元中/////////////////////// CHA_BIAO: MOV R3,#03H MOV R0,#7CH MOV R1,#79H C1: MOV A,@R0 MOV DPTR,#TAB1 MOVC A,@A+DPTR MOV @R1,A INC R0 INC R1 DJNZ R3,C1 RET

//////////////////////////////////////////////////////////////////////////////////

精品文档

;查表,将码型存入79H,7AH,7BH

精品文档

TAB1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

///////键盘扫描程序/////////////////////////////////////////

KEY: MOV P3,#0FFH ;要先给P2口输出FF,再回读 MOV P3,#0F0H MOV A,P3 ORL A,#0FH

CJNE A,#0FFH,K1 ;有键按下,调至K1处执行

K1:

K2:

M1:

M2:

M3:

M4:

精品文档

AJMP EXIT ;否则继续扫描

LCALL DELAY_10 ;延时10ms去抖动 MOV P3,#0F0H MOV A,P3 ORL A,#0FH

CJNE A,#0FFH,K2 ;若确实有键按下,跳之K2 AJMP EXIT ;否则继续扫描

ANL A,#0F0H

MOV R0,A ;R0存列值 MOV P3,#0FH ;行扫描 MOV A,P3

ORL A,R0 ; 键值存R0 MOV R0,A

CJNE R0,#7EH,M1 MOV 3FH,#1 AJMP OUT

CJNE R0,#7DH,M2 MOV 3FH,#2 AJMP OUT

CJNE R0,#7BH,M3 MOV 3FH,#3 AJMP OUT

CJNE R0,#77H,M4 MOV 3FH,#4 AJMP OUT

CJNE R0,#0BEH,M5 MOV 3FH,#5

精品文档

AJMP OUT M5: CJNE R0,#0BDH,M6

MOV 3FH,#6 AJMP OUT

M6: CJNE R0,#0BBH,M7

MOV 3FH,#7 AJMP OUT

M7: CJNE R0,#0B7H,M8

MOV 3FH,#8 AJMP OUT

M8: CJNE R0,#0DEH,M9

MOV 3FH,#9 AJMP OUT

M9: CJNE R0,#0DDH,M10

MOV 3FH,#10 AJMP OUT

M10: CJNE R0,#0DBH,M11

MOV 3FH,#11 AJMP OUT

M11: CJNE R0,#0D7H,M12

MOV 3FH,#12 AJMP OUT

M12: CJNE R0,#0EEH,M13

MOV 3FH,#13 AJMP OUT

M13: CJNE R0,#0EDH,M14

MOV 3FH,#14 AJMP OUT

M14: CJNE R0,#0EBH,M15

MOV 3FH,#15 AJMP OUT

M15: CJNE R0,#0E7H,OUT

MOV 3FH,#16

OUT: SETB F0 EXIT: RET

精品文档

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4