#include <reg51.h>
#include <absacc.h>
#include <math.h>
#pragma NOREGPARMS
#define a DBYTE[0x30]
#define b DBYTE[0x31]
#define cDBYTE[0x32]
#define dDBYTE[0x33]
#define e DBYTE[0x34]
#define f DBYTE[0x35]
#define ww DBYTE[0x39]
#define flag DBYTE[0x20]
unsigned long data a0 _at_ 0x42;
unsigned long data a1 _at_ 0x48;
unsigned long data a2 _at_ 0x52;
voidcount()
{
unsigned int temp;
if(ww==1)
{
a0=f*100000+e*10000+d*1000+c*100+b*10+a;
}
if((flag>0)&&(!ww))
{
a1=f*100000+e*10000+d*1000+c*100+b*10+a;
if(flag==1)a2=a1+a0;
if(flag==2)a2=a0-a1;
if(flag==3)a2=a1*a0;
if(flag==4)a2=a0/a1;
a=a2;
temp=a2/10;
b=temp;
temp=temp/10;
c=temp;
temp=temp/10;
d=temp;
temp=temp/10;
e=temp;
f=temp/10;
}
}
EXTRN CODE(COUNT)
ORG 0000H
MAIN:
MOV R0,#30H
MOV R4,# 8
CLEAR :
MOV @R0,#00H
INC R0
DJNZ R4,CLEAR
START:LCALL DISPLAY
MOV P0,#0FH
MOV A,P0
CJNE A,#0FH,D1
LJMP START
D1: MOV 40H,A
MOV P0,#0F0H
MOV A,P0
MOV 41H,A
D2: MOV P0,#0F0H
MOV A,P0
CJNE A,41H,D3
LCALL DISPLAY
LJMP D2
D3: MOV A,41H
ADD A,40H
CJNE A,#0EEH,D4
MOV 40H,#1
LJMP D20
D4: CJNE A,#0DEH,D5
MOV 40H,#2
LJMP D20
D5: CJNE A,#0BEH,D6
MOV 40H,#3
LJMP D20
D6: CJNE A,#7EH,D7
MOV 40H,#4
LJMP D20
D7: CJNE A,#0EDH,D8
MOV 40H,#5
LJMP D20
D8: CJNE A,#0DDH,D9
MOV 40H,#6
LJMP D20
D9: CJNE A,#0BDH,D10
MOV 40H,#7
LJMP D20
D10: CJNE A,#7DH,D11
MOV 40H,#8
LJMP D20
D11: CJNE A,#0EBH,D12
MOV 40H,#9
LJMP D20
D12: CJNE A,#0DBH,D13
MOV 40H,#0
LJMP D20
D13: CJNE A,#0BBH,D14
MOV 39H,#1
MOV 20H,#1
CALL D22
MOV 39H,#0
D14: CJNE A,#7BH,D15
MOV 39H,#1
MOV 20H,#2
CALL D22
MOV 39H,#0
D15: CJNE A,#0E7H,D16
MOV 39H,#1
MOV 20H,#3
CALL D22
MOV 39H,#0
D16: CJNE A,#0D7H,D17
MOV 39H,#1
MOV 20H,#4
CALL D22
MOV 39H,#0
D17: CJNE A,#0B7H,D18
CALL D22
LJMP START
D18: LJMP MAIN
D20: MOV R0,#30H
MOV R1,#8
MOV A,40H
D21:XCH A,@R0
INC R0
DJNZ R1,D21
LJMP START
D22: PUSH PSW
PUSH ACC
LCALL COUNT
POP ACC
POP PSW
RET
DISPLAY:CLR F0
MOV A,37H
JZ LED6
SETB F0
ADD A,#70H
MOV P1,A
CALL DELAY
LED6:MOV A,36H
JB F0,DIS6
JZ LED5
SETB F0
DIS6: ADD A,#60H
MOV P1,A
CALL DELAY
LED5:MOV A,35H
JB F0,DIS5
JZ LED4
SETB F0
DIS5:ADD A,#50H
MOV P1,A
CALL DELAY
LED4:MOV A,34H
JB F0,DIS4
JZ LED3
SETB F0
DIS4:ADD A,#40H
MOV P1,A
CALL DELAY
LED3:MOV A,33H
JB F0,DIS3
JZ LED2
SETB F0
DIS3:ADD A,#30H
MOV P1,A
CALL DELAY
LED2:MOV A,32H
JB F0,DIS2
JZ LED1
SETB F0
DIS2:ADD A,#20H
MOV P1,A
CALL DELAY
LED1:MOV A,31H
JB F0,DIS1
JZ LED0
SETB F0
DIS1:ADD A,#10H
MOV P1,A
CALL DELAY
LED0:MOV A,30H
MOV P1,A
CALL DELAY
RET
DELAY: MOV R6,#02
Dl1: MOV R7,#200
DJNZ R7,$
DJNZ R6,Dl1
RET
END