51单片机汇编
实现的是一个计算器,但是只能实现相加,写的比较简单,适合初学者使用。还要看具体开发板了
ORG 0000H
LJMP MAIN
MAIN:
SETB P2.7
CLR P2.6
MOV P0,#0F7H
CLR P2.7
SETB P2.6
CLR 30H
KEYDOWN:
MOV P3,#0FH
LCALL DELAY
MOV A,P3
CJNE A,#0F0H,KEYSCAN
LJMP KEYDOWN
KEYSCAN:
MOV A,P3
CJNE A,#0EH,N1
MOV R4,#00H
LJMP NEXT
N1: CJNE A,#0DH,N2
MOV R4,#04H
LJMP NEXT
N2: CJNE A,#0BH,N3
MOV R4,#08H
LJMP NEXT
N3: CJNE A,#07H,NEXT
MOV R4,#0CH
LJMP NEXT
NEXT: ;判断按键所在行
MOV P3,#0F0H
MOV A,P3
CJNE A,#0E0H,N4
MOV R3,#00H
LJMP NEXT
N4: CJNE A,#0D0H,N5
MOV R3,#01H
LJMP NEXT
N5: CJNE A,#0B0H,N6
MOV R3,#02H
LJMP NEXT
N6: CJNE A,#70H,DI
MOV R3,#03H
LJMP DI
DI: MOV A,R4
ADD A,R3
MOV B,A
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
CJNE A,#77H,D3
MOV P0,00H
LJMP KEYDOWN
D3: CJNE A,#7CH,D6
MOV A,31H
MOV B,32H
ADD A,B
MOV B,#10
DIV AB
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
SETB P2.7
CLR P2.6
MOV P0,#0EFH
CLR P2.7
SETB P2.6
MOV DPTR,#LEDTAB
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
LJMP KEYDOWN
D6: MOV P0,A
JB 30H,D5
MOV 31H,B
SETB 30H
LJMP KEYDOWN
D5: MOV 32H,B
LJMP KEYDOWN
DELAY: ;延时函数
MOV R6,#25
D2: MOV R7,#100
DJNZ R7,$
DJNZ R6,D2
RET
LEDTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
还要