⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 v1.0.asm

📁 2005年做的一个小东东
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        MOV   LED0,#18H
        MOV   MOVD,#0FFH
        CALL  DISPUU
        MOV   MOVD,#0FFH
        CALL  DISPUU
        MOV   MOVD,#0FFH
        CALL  DISPUU
        MOV   MOVD,#0FFH
        CALL  DISPUU
        MOV   MOVD,#02FH
        CALL  DISPUU
        AJMP  ERROUT3;





DISPUN:MOV   MOVD,#0FFH
       MOV   LED1,#014H
       CALL  DISPU
       MOV   MOVD,#0FFH
       CALL  DISPU
       MOV   MOVD,#0FFH
       CALL  DISPU
       MOV   LED1,#015H;
       MOV   MOVD,#0FFH
       CALL  DISPU
       MOV   MOVD,#0FFH
       CALL  DISPU
       MOV   MOVD,#0FFH
       CALL  DISPU
       MOV   LED1,#016H;
       MOV   MOVD,#0FFH
       CALL  DISPU
       MOV   MOVD,#0FFH
       CALL  DISPU
       MOV   MOVD,#0FFH
       CALL  DISPU
       RET;
DISPU: CALL   DISPU1
       DEC   MOVD
       CLR   C
		 MOV   A,MOVD
       CJNE  A,#00H,DISPU
		 CALL  DISPU1
		 RET
DISPU1:LCALL DISPLAY
       JNB   P1.5,ZSIGIN;
		 JNB   P3.7,REST1
		 LCALL DISPLAY
       JNB   P1.5,ZSIGIN;
		 JNB   P3.7,REST1
		 LCALL DISPLAY
       JNB   P1.5,ZSIGIN;
		 JNB   P3.7,REST1
		 LCALL DISPLAY
       JNB   P1.5,ZSIGIN;
		 JNB   P3.7,REST1
		 LCALL DISPLAY
       RET
ZSIGIN:;AJMP   MAIN
       AJMP  ZSIG;
REST1: AJMP  START;


;**********************************************************8
;    判别A和B的方向                                        ;
;**********************************************************;
AORB:   MOV   A,P1;
        ANL   A,#06H;
		  MOV   R0,#WHEE1NOW;将A、B两端实时状态暂存在变量Whee1Now内,
		  MOV   @R0,A;                         A、B两端正常状态为1
		  MOV   R7,A;         将Whee1Now存入R7以内及
		  MOV   KEYTMP,A;
		  MOV   R0,#WHEE1OLD;
		  MOV   A,@R0;
		  XRL   KEYTMP,A
		  MOV   A,KEYTMP;
		  JZ    C0002;
C0001:
        MOV   A,KEYTMP;
		  JNB   ACC.2,C0003;
		  MOV   A,R7;
		  JNB   ACC.2,C0004;
		  LCALL  WHEE1LEFT;
		  SJMP  C0008;
C0004:  MOV   R0,#WHEE1NOW;
        MOV   A,@R0;
		  JNB   ACC.1,C0006;
		  LCALL  WHEE1LEFT;
		  SJMP   C0008;
C0006:  LCALL  WHEE1RIGHT;
        SJMP   C0008
C0003:  
        MOV    A,KEYTMP;
		  ANL    A,#06H;
		  JZ     C0008;
		  MOV    R0,#WHEE1NOW;
		  MOV    A,@R0;
		  JNZ    C0010;
		  LCALL  WHEE1LEFT;
		  SJMP   C0008;
C0010:  
        MOV   R0,#WHEE1NOW
		  MOV   A,@R0;
		  CJNE   A,#02H,C0012;
		  LCALL   WHEE1LEFT;
		  SJMP    C0008;
C0012:
        LCALL   WHEE1RIGHT;
C0008:  
        MOV    R0,#WHEE1NOW;
		  MOV    A,@R0;
		  MOV    R0,#WHEE1OLD;
		  MOV    @R0,A;
C0002:  
        RET
WHEE1LEFT:
        CLR   A;
		  MOV   R0,#RIGHTCOUNT;
		  MOV   @R0,A;
		  MOV   R0,#LEFTCOUNT
		  INC   @R0
		  MOV   A,@R0;
		  CJNE   A,#02H,C0015;
		  MOV   R0,#ENCODERCNT;
		  MOV   @R0,#02H;
		  CLR   A;
		  MOV   R0,#LEFTCOUNT;
		  MOV   @R0,A;
C0015:
        RET
WHEE1RIGHT:
        CLR   A;
		  MOV   R0,#LEFTCOUNT;;
		  MOV   @R0,A;
		  MOV   R0,#RIGHTCOUNT;
		  INC   @R0;
		  MOV   A,@R0;
		  CJNE  A,#02H,C0017;
		  MOV   R0,#ENCODERCNT;
		  MOV   @R0,#01H;
		  CLR   A
		  MOV   R0,#RIGHTCOUNT;
		  MOV   @R0,A;
C0017:
        RET
;******************************************



;************;
; 中断0 加1程序 ;
;************;

INTEXT0:    PUSH       ACC;               进栈
            PUSH       PSW;
				CLR        C
				MOV        A,LED2
				CJNE       A,#00H,INTT1;
				MOV        A,LED3
				CJNE       A,#00H,INTT1;
				MOV        A,LED4
				CJNE       A,#00H,INTT1;
				MOV        A,LED5
				CJNE       A,#00H,INTT1;
            MOV        LED1,#0DH;
INTT1:      MOV        A, LED1;
            CJNE       A,#13H,INTT2;      如是负数则由+变为-1
            DEC        LED5;              
            MOV        A,LED5  ;          
            CLR        C;                 清进位标致
            CJNE       A,#0FFH,INT1OUT0;   
            MOV        LED5,#09H;         不是将LED0置9
            DEC        LED4;              
            MOV        A,LED4  
            CLR        C;                 清进位标志
            CJNE       A,#0FFH,INT1OUT0
            MOV        LED4,#09H;          .
            DEC        LED3;  
            MOV        A,LED3  
            CLR        C;               
            CJNE       A,#0FFH,INT1OUT0
            MOV        LED3,#09H
            DEC        LED2
            MOV        A,LED2 
            CLR        C;             
            CJNE       A,#0FFH,INT1OUT0
            MOV        LED2,#09H
INT1OUT0:   POP        PSW;               出栈
            POP        ACC
            RETI;                         中断返回

INTT2:      INC        LED5;              
            MOV        A,LED5;           
            CJNE       A,#0AH,INT0OUT;   
            MOV        LED5,#00H;         如到了则将LED0置0
            INC        LED4;              
            MOV        A,LED4
            CJNE       A,#0AH,INT0OUT;    显存单元在0-9
            MOV        LED4,#00H;         
            INC        LED3;              
            MOV        A,LED3
            CJNE       A,#0AH,INT0OUT;     .
            MOV        LED3,#00H
            INC        LED2
            MOV        A,LED2
            CJNE       A,#0AH,INT0OUT;     .
            MOV        LED2,#00H
INT0OUT:    POP        PSW;               出栈
            POP        ACC
            RETI;                         中断返回

;************;
;中断1 减1程序  ;
;************;

INTEXT1:    PUSH       ACC;               进栈
            PUSH       PSW
				CLR        C
				MOV        A,LED2
				CJNE       A,#00H,INTTO0;
				MOV        A,LED3
				CJNE       A,#00H,INTTO0;
				MOV        A,LED4
				CJNE       A,#00H,INTTO0;
				MOV        A,LED5
				CJNE       A,#00H,INTTO0;
            MOV        LED1,#13H;         -
INTTO0:     MOV       A, LED1
            CJNE      A,#13H,INTTO;
            CLR       C
            INC        LED5;             
            MOV        A,LED5;            
            CJNE       A,#0AH,INT1OUT;   
            MOV        LED5,#00H;        
            INC        LED4;              
            MOV        A,LED4
            CJNE       A,#0AH,INT1OUT;    显存单元在0-9
            MOV        LED4,#00H;         如是10时则置零
            INC        LED3;             
            MOV        A,LED3
            CJNE       A,#0AH,INT1OUT;     .
            MOV        LED3,#00H
            INC        LED2
            MOV        A,LED2
            CJNE       A,#0AH,INT1OUT;     .
            MOV        LED2,#00H
            POP        PSW;               出栈
            POP        ACC
            RETI;                         中断返回

INTTO:      DEC        LED5;              
            MOV        A,LED5  ;          
            CLR        C;                 清进位标致
            CJNE       A,#0FFH,INT1OUT;   
            MOV        LED5,#09H;         不是将LED0置9
            DEC        LED4;              
            MOV        A,LED4  
            CLR        C;                 清进位标志
            CJNE       A,#0FFH,INT1OUT
            MOV        LED4,#09H;          .
            DEC        LED3;  
            MOV        A,LED3  
            CLR        C;               
            CJNE       A,#0FFH,INT1OUT
            MOV        LED3,#09H
            DEC        LED2
            MOV        A,LED2 
            CLR        C;             
            CJNE       A,#0FFH,INT1OUT
            MOV        LED2,#09H
INT1OUT:    POP        PSW
            POP        ACC
            RETI;                         中断返回

;*********************;
; 显示程序  6 BIT LED  ;
;*********************;
DISPLAY:  MOV DPTR,#NUMTAB;     指针指向数据字符码
          MOV A,LED0
          MOVC A,@A+DPTR;       查表
          MOV P0,A
          CLR P2.0;             选中小数位显示
          ACALL D1MS
          SETB P2.0

          MOV A,LED1
          MOVC A,@A+DPTR
          MOV P0,A
          CLR P2.1;             选中个位数显示
          ACALL D1MS
          SETB P2.1

          MOV A,LED2
          MOVC A,@A+DPTR
          MOV P0,A
          CLR P2.2;             选中十位数显示
          ACALL D1MS
          SETB P2.2
		  
          MOV A,LED3
          MOVC A,@A+DPTR
          MOV P0,A
          CLR P2.3;             选中百位数显示
          ACALL D1MS
          SETB P2.3

          MOV A,LED4
          MOVC A,@A+DPTR
          MOV P0,A
          CLR P2.4;              选中千位数显示
          ACALL D1MS
          SETB P2.4

          MOV A,LED5
          MOVC A,@A+DPTR
          MOV P0,A
          CLR P2.5;              选中千位数显示
          ACALL D1MS
          SETB P2.5
          RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LINE:     RET

;*******;
;延时程序;
;*******;
D1MS:   MOV R7,#2;            显示延时程序
        DJNZ R7,$
        RET
DL512:   MOV   R5,#0FFH
LOOP1:   DJNZ  R5,LOOP1
         RET
DL10MS:  MOV   R3,#14H
LOOP2:   LCALL DL512
         DJNZ  R3,LOOP2
         RET
DL05S:   MOV   R4,#10H
LOOP3:   LCALL DL10MS
         DJNZ  R4,LOOP3
         RET
DL1S:    LCALL  DL05S
         LCALL  DL05S
			LCALL  DL05S
			LCALL  DL05S
			RET
;*********;
; 查表程序 ;
;*********;
NUMTAB: DB        03FH;0
        DB        006H;1
        DB        05BH;2
        DB        04FH;3
        DB        066H;4
        DB        06DH;5
        DB        07DH;6
        DB        007H;7
        DB        07FH;8
        DB        06FH;9
        DB        038H;L  0AH
        DB        030H;I  0BH
        DB        037H;N  0CH
        DB        000H;   0DH
        DB        073H;P  0EH
        DB        058H;c  0FH
        DB        050H;r  010H
        DB        079H;E  011H
        DB        078H;t  012H
        DB        040H;-  013H
        DB        024H;USIG  014H
        DB        009H;VSIG  015H
        DB        012H;WSIG  016H
        DB        062H;  u     017H
        DB        054H;  n    018H
        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -