#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%10; temp=a2/10; b=temp%10; temp=temp/10; c=temp%10; temp=temp/10; d=temp%10; temp=temp/10; e=temp%10; 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 |
|