资源描述
实验1
ORG 0000H
AJMP MAIN
ORG 0200H
BUFF EQU 60H
MAIN:MOV R3,#00H
MOV R4,#00H
ACALL DISPLAY
ACALL KEXAM
JZ MAIN
ACALL D10ms
ACALL KEXAM
JZ MAIN
MOV R2,#0DFH
MOV DPTR,#8004H
MOV A,#00H
MOVX @DPTR,A
KEY1:MOV DPTR,#8002H
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#8001H
MOVX A,@DPTR
CPL A
ANL A,#0FH
JNZ KEY2
MOV A,R3
ADD A,#04H
MOV R3,A
MOV A,R2
RR A
MOV R2,A
JB ACC.0,KEY1
AJMP MAIN
KEY2:CPL A
KEY3:RRC A
JNC KEY4
INC R4
AJMP KEY3
KEY4:ACALL DISPLAY
ACALL D10ms
ACALL KEXAM
JNZ KEY4
MOV A,R3
ADD A,R4
MOV BUFF,A
KEND:AJMP MAIN
KEXAM:MOV DPTR,#8002H
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8001H
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DISPLAY:MOV DPTR,#TAB
MOV A,60H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#10H
MOVX @DPTR,A
RET
D10ms:MOV R5,#30H
DL:MOV R6,#0FFH
DL0:DJNZ R6,DL0
DJNZ R5,DL
RET
TAB:DB 3FH 06H 66H 07H
DB 71H 5BH 6DH 7FH
DB 79H 4FH 7DH 6FH
DB 5EH 39H 7CH 77H
实验2
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN: ACALL KEXAM ;检查按键
JZ MAIN ;无继续
ACALL D10ms ;延时去抖
ACALL KEXAM
JZ MAIN
START: MOV DPTR,#8002H ;键值分析及选通道
MOV A,#0DFH
MOVX @DPTR,A
MOV DPTR,#8001H
MOVX A,@DPTR
CPL A
ANL A,#07H
CJNE A,#01H,KEY1 ;INT0
AJMP INT0
KEY1: CJNE A,#02H,KEY2;INT1
AJMP INT1
KEY2: CJNE A,#04H,MAIN
AJMP AUTO
INT0: ACALL DISPLAY1
MOV A,#0FH ;0-5V
MOV DPTR,#9000H
MOV R0,#40H
MOVX @DPTR,A
ACALL D10ms
MOVX A,@DPTR
MOV @R0,A
ACALL CAI
ACALL DISPLAY
ACALL KEXAM
JZ INT0
AJMP START
INT1: ACALL DISPLAY2
MOV A,#0FH ;固定值
MOV DPTR,#9001H
MOV R0,#40H
MOVX @DPTR,A
ACALL D10ms
MOVX A,@DPTR
MOV @R0,A
ACALL CAI
ACALL DISPLAY
ACALL KEXAM
JZ INT1
AJMP START
AUTO: MOV 50H,#000
LOP0:ACALL D10ms
DJNZ 50H,LOP0
AJMP INT00
AUTO1: MOV 51H,#000
LOP1:ACALL D10ms
DJNZ 51H,LOP1
AJMP INT11
INT00:
ACALL DISPLAY1
MOV A,#0FH ;0-5V
MOV DPTR,#9000H
MOV R0,#40H
MOVX @DPTR,A
ACALL D10ms
MOVX A,@DPTR
MOV @R0,A
ACALL CAI
ACALL DISPLAY
ACALL D10ms
MOV 53H,#30
PPP: ACALL DISPLAY1
ACALL DISPLAY
ACALL DISPLAY1
ACALL DISPLAY
ACALL DISPLAY1
ACALL DISPLAY
DJNZ 53H,PPP
ACALL KEXAM
JZ AUTO1
AJMP START
INT11:
ACALL DISPLAY2
MOV A,#0FH ;固定值
MOV DPTR,#9001H
MOV R0,#40H
MOVX @DPTR,A
ACALL D10ms
MOVX A,@DPTR
MOV @R0,A
ACALL CAI
ACALL DISPLAY
ACALL D10ms
MOV 54H,#30
OOO: ACALL DISPLAY2
ACALL DISPLAY
ACALL DISPLAY2
ACALL DISPLAY
ACALL DISPLAY2
ACALL DISPLAY
DJNZ 54H,OOO
ACALL KEXAM
JZ AUTO
AJMP START
KEXAM: MOV DPTR,#8004H ;按键判断
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8001H
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
CAI: MOV A,@R0 ;数据解决
MOV B,#51
DIV AB
MOV 40H,A
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP2
ADD A,#5
LOOP2:MOV 41H,A
MOV A,B
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP3
ADD A,#5
LOOP3:MOV 42H,A
RET
DISPLAY:MOV DPTR,#TAB ;列表显示 个位整数 40H
MOV A,40H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#10H
MOVX @DPTR,A
ACALL D10ms
MOV A,#80H ;小数点
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#10H
MOVX @DPTR,A
ACALL D10ms
MOV DPTR,#TAB ;余数 41H 42H
MOV A,41H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#08H
MOVX @DPTR,A
ACALL D10ms
MOV DPTR,#TAB
MOV A,42H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#04H
MOVX @DPTR,A
ACALL D10ms
RET
DISPLAY1: MOV A,#3FH
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#20H
MOVX @DPTR,A
LCALL D10ms
RET
DISPLAY2: MOV A,#06H
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#20H
MOVX @DPTR,A
LCALL D10ms
RET
D10ms: MOV R5,#03H ;延时10
DL: MOV R6,#0FFH
DL0: DJNZ R6,DL0
DJNZ R5,DL
RET
TAB: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H
实验4
ORG 0000H
AJMP KEYPR
ORG 0200H
KEYPR:MOV R3,#00H ;列寄存器
MOV R4,#00H ;行寄存器
ACALL KEXAM
JZ KEND
ACALL D10ms
ACALL KEXAM
JZ KEND
MOV R2,#0DFH ;扫描初值
KEY1:MOV DPTR,#8004H
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8002H ;送列码地址
MOV A,R2
MOVX @DPTR,A ;扫描第一列
MOV DPTR,#8001H ;送行码地址
MOVX A,@DPTR
CPL A
ANL A,#0FH
JNZ KEY2 ;有键按下,求行值
MOV A,R3 ;无键按下,列加4
ADD A,#04H
MOV R3,A
MOV A,R2 ;求下一列扫描值
RR A
MOV R2,A
JB ACC.0,KEY1 ;判断与否已全扫描
AJMP KEND
KEY2:CPL A ;恢复行模型
KEY3:RRC A
JNC KEY4
INC R4
AJMP KEY3
KEY4:ACALL D10ms
ACALL KEXAM
JNZ KEY4
MOV A,R3
ADD A,R4
MOV 60H,A ;键值存入60H
L0:CJNE A,#00H,L1
MOV DPTR,#DLTAB
MOV A,30H
CJNE A,#05,ADDF1
MOV 30H,#00H
LJMP ADDF2
ADDF1:INC 30H
ADDF2:MOVC A,@A+DPTR
MOV 31H,A
DLTAB:DB 01H,20H,50H,80H,0A0H
L1:CJNE A,#0FH,L2 ;锯齿波
LS0: ACALL DISPLAY
MOV DPTR,#9000H
MOV A,#00H
LS1:MOVX @DPTR,A
INC A
ACALL DELAY
CJNE A,#0FFH,LS1
ACALL DELAY
ACALL DISPLAY
ACALL KEXAM
JZ LS0
AJMP KEND
KEND:ACALL DISPLAY
LJMP KEYPR
L2:CJNE A,#0EH,L3 ;三角波
LS2: ACALL DISPLAY
MOV DPTR,#9000H
MOV A,#00H
MOV R0,#200
LS3: ACALL DELAY
MOVX @DPTR,A
INC A
CJNE A,#0FFH,LS3
LS4: ACALL DELAY
DEC A
MOVX @DPTR,A
CJNE A,#00H,LS4
DJNZ R0,LS3
ACALL DISPLAY
ACALL KEXAM
JZ LS2
AJMP KEND
L3:CJNE A,#0DH,L4 ;正弦波
LS5:
ACALL DISPLAY
MOV A,#00
MOV R0,A
LS6: MOV DPTR,#TZSB
MOV A,R0
MOVC A,@A+DPTR
MOV DPTR,#9000H
MOVX @DPTR,A
ACALL DELAY
INC R0
CJNE R0,#32,LS6
ACALL DISPLAY
ACALL KEXAM
JZ LS5
AJMP KEND
L4:CJNE A,#0CH,KEND ;方波
ACALL DISPLAY
MOV R0,#200
LS7: ACALL DISPLAY
MOV A,#00
MOV DPTR,#9000H
MOVX @DPTR,A
ACALL DELAY
MOV A,#255
MOVX @DPTR,A
ACALL DELAY
DJNZ R0,LS7
ACALL D10ms
ACALL DISPLAY
ACALL KEXAM
JZ LS7
AJMP KEND
DISPLAY:MOV DPTR,#TAB ;显示子程序
MOV A,60H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#01H
MOVX @DPTR,A
RET
D10ms:MOV R5,#03H ;延时10毫秒
DL: MOV R6,#0FFH
DL0: DJNZ R6,DL0
DJNZ R5,DL
RET
DELAY:MOV R6,31H
DL1:DJNZ R6,DL1
RET
KEXAM:MOV DPTR,#8002H ;检查与否有键按下子程序
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8001H
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
TAB:DB 3FH,06H,66H,07H,71H,5BH,6DH,7FH,79H,4FH,7DH,6FH,5EH,39H,7CH,77H
TZSB: DB 80H , 98H, 0B0H, 0C6H, 0DAH, 0EAH, 0F5H, 0FDH
DB 0FFH, 0FDH, 0F5H , 0EAH, 0DAH, 0C6H, 0B0H, 98H
DB 80H , 68H, 50H , 3AH, 26H, 16H, 0BH, 03H
DB 01H, 03H, 0BH, 16H, 26H, 3AH, 50H, 68H
实验5
ORG 0000H
AJMP MAIN
ORG 0200H
MAIN:MOV DPTR,#8001H
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#00H
MOVX @DPTR,A
MOV R3,#00H
MOV R4,#00H
ACALL DISPLAY
ACALL KEXAM
JZ MAIN
ACALL DL10ms
ACALL KEXAM
JZ MAIN
MOV R2,#0DFH
MOV DPTR,#8004H
MOV A,#00H
MOVX @DPTR,A
KEY1:MOV DPTR,#8002H
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#8001H
MOVX A,@DPTR
CPL A
ANL A,#0FH
JNZ KEY2
MOV A,R3
ADD A,#04H
MOV R3,A
MOV A,R2
RR A
MOV R2,A
JB ACC.0,KEY1
AJMP MAIN
KEY2:CPL A
KEY3:RRC A
JNC KEY4
INC R4
AJMP KEY3
KEY4:ACALL DISPLAY
ACALL DL10ms
ACALL KEXAM
JNZ KEY4
MOV A,R3
ADD A,R4
MOV 30H,A
KEY8:CJNE A,#00H,KEY5
ZIJIAN:MOV 41H,#0
LCALL DISPLAY1
ACALL DL10ms
ACALL KEXAM
ACALL DL10ms
ACALL KEXAM
JZ ZIJIAN
AJMP MAIN
KEY5: CJNE A,#01H,KEY1
JK: LCALL MSFC
LCALL DISPLAY1
ACALL DL10ms
AJMP JK
MSFC: MOV TMOD,#15H
MOV R1,#0AH
MOV TL0,#00H
MOV TH0,#00H
MOV TL1,#0B0H
MOV TH1,#3CH
SETB P3.4
JB P3.4,$
SETB TR0
SETB TR1
WAIT:JBC TF1,NEXT
SJMP WAIT
NEXT:MOV TL1,#0B0H
MOV TH1,#3CH
DJNZ R1,WAIT
CLR TR1
CLR TR0
MOV 41H,TH0
MOV 40H,TL0
RET
BBCD:MOV R2,40H ;二----十进制转换
MOV R3,41H
MOV R0,#64H ;64H 高位数据存储单元
MOV R7,#04H
MOV DPTR,#PWTAB
MOV R6,#00H
BBC1:MOV A,R6
MOVC A,@A+DPTR
MOV R4,A
INC R6
MOV A,R6
MOVC A,@A+DPTR
MOV R5,A
INC R6
MOV @R0,#00H
BBC2:CLR C
MOV A,R2
SUBB A,R4
MOV R2,A
MOV A,R3
SUBB A,R5
MOV R3,A
JC BBC3
INC @R0
SJMP BBC2
BBC3:MOV A,R2
ADD A,R4
MOV R2,A
MOV A,R3
ADDC A,R5
MOV R3,A
DEC R0
DJNZ R7,BBC1
MOV A,R2
MOV @R0,A
RET
PWTAB: DB 10H 27H 0E8H 03H 0E8H 03H 0AH 00H
DISPLAY :MOV R2,#20H ;显示循环次数
MOV R0,#64H ; 64H 为高位数据存储单元
MOV R7,#4 ; 共 2 个八段管
MOV R6,#00100000B ; 从左边开始显示
MOV DPTR,#8002H
MOV A,#0
MOVX @DPTR,A ; 关所有八段管
LOOP:MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
CJNE R0,#63H,LOPP
ORL A,#80H ;第二位打小数点,单位为 KHz
LOPP:MOV DPTR,#08004H
MOVX @DPTR,A
MOV DPTR,#08002H
MOV A,R6
MOVX @DPTR,A ; 显示一位八段管
CALL DL10ms
MOV A,R6 ; 显示下一位
RR A
MOV R6,A
DEC R0
DJNZ R7,LOOP
DJNZ R2,DISPLAY
RET
DISPLAY1:MOV DPTR,#TAB
MOV A,41H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#10H
MOVX @DPTR,A
MOV A,40H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H
MOV A,#08H
MOVX @DPTR,A
RET
DDFF:DB 0CH,09FH,4AH,0BH,99H
DB 29H,28H,8FH,08H,09H
KEXAM: MOV DPTR,#8002H ; 列地址
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8001H ; 行地址
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DL10ms:MOV 11H,#30H
DL:MOV 10H,#255
DL0:DJNZ 10H,DL0
DJNZ 11H,DL
RET
TAB:DB 3FH 06H 66H 07H
DB 71H 5BH 6DH 7FH
DB 79H 4FH 7DH 6FH
DB 5EH 39H 7CH 77H
考试
ORG 0000H
AJMP MAIN
ORG 0200H
BUFF EQU 60H
MAIN:CLR P1.4
CLR P1.5
CLR P1.6
CLR P1.7
MOV R3,#00H
MOV R4,#00H
ACALL DISPLAY
ACALL KEXAM
JZ MAIN
ACALL D10ms
ACALL KEXAM
JZ MAIN
MOV R2,#0DFH
MOV DPTR,#0D004H
MOV A,#00H
MOVX @DPTR,A
KEY1:MOV DPTR,#0D002H
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#0D001H
MOVX A,@DPTR
CPL A
ANL A,#0FH
JNZ KEY2
MOV A,R3
ADD A,#04H
MOV R3,A
MOV A,R2
RR A
MOV R2,A
JB ACC.0,KEY1
AJMP MAIN
KEY2:CPL A
KEY3:RRC A
JNC KEY4
INC R4
AJMP KEY3
KEY4:ACALL DISPLAY
ACALL D10ms
ACALL KEXAM
JNZ KEY4
MOV A,R3
ADD A,R4
CJNE A,#0CH,KEY5 ;INT0
AJMP INT0
KEY5: CJNE A,#08H,KEY6;INT1
AJMP INT1
KEY6: CJNE A,#04H,MAIN
AJMP AUTO
INT0: ACALL DISPLAY1
MOV A,#0FH
MOV DPTR,#0C000H
MOV R0,#40H
MOVX @DPTR,A
ACALL D10ms
MOVX A,@DPTR
CLR C
SUBB A,#178
JC GREEN
SETB P1.4
AJMP PASS
GREEN: SETB P1.5
PASS:ADD A,#178
MOV @R0,A
ACALL CAI
ACALL DISPLAY
ACALL KEXAM
JZ INT0
KEND:AJMP MAIN
INT1: ACALL DISPLAY2
MOV A,#0FH
MOV DPTR,#0C001H
MOV R0,#40H
MOVX @DPTR,A
ACALL D10ms
MOVX A,@DPTR
CLR C
SUBB A,#247
JC GREN
SETB P1.7
AJMP PAS
GREN: SETB P1.6
PAS:ADD A,#247
MOV @R0,A
ACALL CAI
ACALL DISPLAY
ACALL KEXAM
JZ INT1
AJMP MAIN
AUTO: MOV 50H,#000
LOP0:ACALL D10ms
DJNZ 50H,LOP0
AJMP INT00
AUTO1: MOV 51H,#000
LOP1:ACALL D10ms
DJNZ 51H,LOP1
AJMP INT11
I
展开阅读全文