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

📄 danbai2.asm

📁 程序功能:能实现单摆的物理实验
💻 ASM
📖 第 1 页 / 共 2 页
字号:
           
         ORG       0000H   
         LJMP      MAIN

         ORG       000BH
         AJMP      T0_INT

         ORG       001BH
         MOV       TL1,#01AH
         MOV       TH1,#0FCH
         AJMP      T1_INT

TAB1:    DB        0EDH,60H,0A7H,0E6H,6AH,0CEH,0CFH,0E0H,0EFH,0EEH;0,1,....,9
TAB2:    DB        0FDH,70H,0B7H,0F6H,7AH,0DEH,0DFH,0F0H,0FFH,0FEH;0.,1.,..,9.
TAB3:    DB        00H,00H,00H,60H,00H,0A7H,00H,0E6H,00H,6AH,00H,0CEH
         DB        00H,0CFH,00H,0E0H,00H,0EFH,00H,0EEH,60H,0EDH,60H,60H
         DB        60H,0A7H,60H,0E6H,60H,06AH,60H,0CEH,60H,0CFH,60H,0E0H
         DB        60H,0EFH,60H,0EEH,0A7H,0EDH,0A7H,60H,0A7H,0A7H,0A7H,0E6H
         DB        0A7H,6AH,0A7H,0CEH,0A7H,0CFH,0A7H,0E0H,0A7H,0EFH,0A7H,0EEH
         DB        0E6H, 0EDH,0E6H,60H,0E6H,0A7H,0E6H,0E6H,0E6H,6AH,0E6H,0CEH
         DB        0E6H,0CFH,0E6H,0E0H,0E6H,0EFH,0E6H,0EEH,6AH,0EDH,6AH,60H
         DB        6AH,0A7H,6AH,0E6H,6AH,6AH,6AH,0CEH,6AH,0CFH,6AH,0E0H,6AH,0EFH
         DB        6AH,0EEH,0CEH,0EDH,0CEH,60H,0CEH,0A7H,0CEH,0E6H,0CEH,6AH
         DB        0CEH,0CEH,0CEH,0CFH,0CEH,0E0H,0CEH,0EFH,0CEH,0EEH,0CFH,0EDH
MAIN:
         CLR       EA
         MOV       R0,#20H
CLR0:         
         MOV       @R0,#00H
         INC       R0
         CJNE      R0,#7FH,CLR0
         
         MOV       21H,#30
        
         MOV       SP,#60H
         
         SETB      PT0
         CLR       PT1
         MOV       IE,#0AH
         MOV       TMOD,#15H
         MOV       TL1,#1AH
         MOV       TH1,#0FCH
         
         LCALL     WRITEP1
         LCALL     DISPLAY
KEY:
         MOV       P1,#0FFH
         MOV       A,P1
         CJNE      A,#0FFH,ONEKEY
         AJMP      KEY
ONEKEY:     
         MOV       B,A
         LCALL     DELAY10MS
         MOV       A,B
         CJNE      A,P1,KEY

         JB        P1.0,KDNEXT1  	;有键按下,直接寻址位P1.0为1跳转至KDNEXT1
         LCALL     KEY_GONGNENG		;P1.0为0电平,则调用功能子程序
KDNEXT1: 					;	;置数
         JB        P1.1,KDNEXT2
         LCALL     KEY_ZHISHU 
KDNEXT2:					;		;上调
         JB        P1.2,KDNEXT3
         LCALL     KEY_ST
KDNEXT3:					;		;下调
         JB        P1.3,KDNEXT4
         LCALL     KEY_XT
KDNEXT4:					;		;执行
         JB        P1.4,KDNEXT5
         LCALL     KEY_ZHIXING
KDNEXT5:					;		;查询
         JB        P1.5,KDNEXT6
         LCALL     KEY_CHAXUN
KDNEXT6:             			;	;自检
         JB        P1.6,KDNEXT7
         LCALL     KEY_ZHIJIAN
KDNEXT7:				;			;返回
         JB        P1.7,KEY
         LCALL     KEY_FANHUI
         LJMP      KEY

KEY_GONGNENG:
         
         JB        07H,KEY1_OUT
         LCALL     RELL
         MOV       20H,#00H
         MOV       35H,#0A7H
         MOV       34H,#43H
         MOV       33H,#06H
         MOV       32H,#0E9H
         MOV       31H,#02H
         MOV       30H,#60H
         LCALL     DISPLAY
         SETB      P3.0
KEY1_OUT:
         LCALL     KEYOUT
         RET

KEY_ZHISHU: 
         JB        07H,KEY2_OUT
         LCALL     RELL
         CLR       04H
         JNB       01H,DO_ZHISHU
         CLR       01H
         MOV       36H,#8BH
         MOV       34H,#00H
         MOV       33H,#00
         MOV       32H,#8FH
         MOV       31H,#43H
         MOV       30H,#67H
         MOV       35H,#60H 
         MOV       21H,2BH
         MOV       A,21H
         LCALL     DISPLAY
         MOV       R0,#38H
CLRF11:         
         MOV       @R0,#00H
         INC       R0
         CJNE      R0,#4AH,CLRF11
         LJMP      KEY2_OUT

DO_ZHISHU:
         SETB      01H
         MOV       5CH,#1
         MOV       36H,#43H
         MOV       35H,#06H
         MOV       34H,#00H
         MOV       33H,#00
         MOV       32H,#00
         MOV       31H,#0E6H
         MOV       30H,#0EDH
         LCALL     DISPLAY
         MOV       2BH,#30
KEY2_OUT:  
         LCALL     KEYOUT         
         RET

KEY_ST:
         JB        07H,KEY3_OUT
         JNB       01H,KEY3_OUT
DO_ZSST:
         LCALL     RELL
         MOV       A,5CH
         CJNE      A,#01H,DO_ZSST1
         MOV       2BH,#30
         MOV       5CH,#00H
DO_ZSST1:           
         MOV       R0,2BH
         CJNE      R0,#60,ST_NXUNF
         MOV       2BH,#01H
         LJMP      ST_OEND
ST_NXUNF:
         MOV       A,2BH
         ADD       A,#01H
         MOV       2BH,A
ST_OEND:         
         MOV       2CH,2BH
         LCALL     WRITEZS
         LCALL     DISPLAY

KEY3_OUT:  
         LCALL     KEYOUT
         RET

KEY_XT:
         JB        07H,KEY4_OUT
         JNB       01H,KEY4_OUT
DO_ZSXT:         
         LCALL     RELL
         MOV       A,5CH
         CJNE      A,#01H,DO_ZSXT1
         MOV       2BH,#30
         MOV       5CH,#00H
DO_ZSXT1:           
         MOV       A,2BH
         CJNE      A,#01H,XT_NXUNF
         MOV       2BH,#60
         LJMP      XT_OEND
XT_NXUNF:         
         DEC       2BH
XT_OEND:         
         MOV       2CH,2BH
         LCALL     WRITEZS
         LCALL     DISPLAY

KEY4_OUT:  
         LCALL     KEYOUT
         RET

KEY_ZHIXING:
         JNB       07H,DO_ZHIXING
         LJMP      KEY5_OUT
DO_ZHIXING:         
         CLR       05H
         CLR       02H
         JB        04H,DO_ZX1
         MOV       53H,#00H
         SETB      04H
DO_ZX1:         
         MOV       A,53H
         CJNE      A,#05H,DO_ZXKZ1
         MOV       53H,#0
         LJMP      DO_ZX2 
DO_ZXKZ1:CJNE      A,#06H,DO_ZXKZ2
         MOV       53H,#0       
         LJMP      DO_ZX2 
DO_ZXKZ2:CJNE      A,#07H,DO_ZXKZ3
         MOV       53H,#0
         LJMP      DO_ZX2 
DO_ZXKZ3:CJNE      A,#08H,DO_ZX2
         MOV       53H,#0
         LJMP      DO_ZX2 
DO_ZX2:
         INC       53H
         MOV       A,53H
         CLR       01H
         MOV       36H,#0ABH
         MOV       A,53H
         MOV       DPTR,#TAB1      
         MOVC      A,@A+DPTR
         MOV       35H,A
         MOV       34H,#0EDH
         MOV       33H,#0FDH
         MOV       32H,#0eDH
         MOV       31H,#0EDH
         MOV       30H,#0EDH
         LCALL     DISPLAY
         
         SETB      EA
         LCALL     RELL
         SETB      06H
         
         SETB      ET0
         MOV       TH1,#0FCH
         MOV       TL1,#01AH
         MOV       28H,#3
         CLR       03H
         MOV       TL0,#0FFH
         MOV       TH0,#0FFH
         SETB      TR0

KEY5_OUT:  
         LCALL      KEYOUT         
         RET

KEY_CHAXUN:
         
         JB        07H,KEY6_OUT
         JB        02H,KEY6_OUT
         LCALL     RELL
         JB        05H,DO_CX1
         MOV       53H,#00H
         SETB      05H
DO_CX1:         
         MOV       A,53H
         ADD       A,#01H
         MOV       53H,A
         MOV       A,53H
         CJNE      A,#06H,DO_CX2
         MOV       36H,#8DH; C
         MOV       35H,#0EBH;A
         MOV       34H,#00H
         MOV       53H,#6   ;=
         LCALL     CHAXUN_SUB
         LCALL     DISPLAY
         LJMP      KEY6_OUT
DO_CX2:         
         MOV       A,53H
         CJNE      A,#07H,DO_CX3
         MOV       36H,#43H ; N         
         MOV       35H,#06H ; =
         MOV       34H,#00H
         MOV       33H,#00H ;
         MOV       32H,#00H ;
         MOV       2CH,21H
         LCALL     WRITEZS
         LCALL     DISPLAY
         CLR       05H
         LJMP      KEY6_OUT
DO_CX3:         
         CLR       01H
         MOV       36H,#08DH
         MOV       A,53H
         MOV       DPTR,#TAB1      
         MOVC      A,@A+DPTR
         MOV       35H,A
         MOV       34H,#00H
         LCALL     CHAXUN_SUB
         LCALL     DISPLAY
KEY6_OUT:  
         LCALL     KEYOUT
         RET

KEY_ZHIJIAN:
         JB        07H,KEY7_OUT
         LCALL     RELL
DO_ZJ:         
         CLR       05H
         CLR       02H
         CLR       01H
         CLR       00H
         LCALL     KEY_GONGNENG
         LCALL     DELAY1S
         MOV       36H,#0CEH ;C 
         MOV       35H,#8DH  ;
         MOV       34H,#00H 
         MOV       33H,#0CDH ;
         MOV       32H,#47H  ;
         MOV       31H,#47H  ;
         MOV       30H,#67H  ;
         LCALL     DISPLAY
         LCALL     RELL
         LCALL     DELAY1S
         LCALL     WRITEP1
         LCALL     DISPLAY
         LCALL     RELL
         LCALL     DELAY1S

KEY7_OUT:  
         LCALL     KEYOUT         
         RET

KEY_FANHUI:
         CLR       EA
         SETB      03H
         CLR       TR0
         CLR       TR1
         LCALL     RELL
         SETB      P3.7
         CLR       07H
         MOV       A,20H
         ANL       A,#00000010B
         
         
         MOV       R0,#23H
CLRF01:         
         MOV       @R0,#00H
         INC       R0
         CJNE      R0,#7FH,CLRF01
         AJMP      FH_OUT

         
FH_OUT:
         LCALL     WRITEP1
         LCALL     DISPLAY
         LCALL     KEYOUT
         RET

KEYOUT:
WAIT_1:  JNB       P1.0,WAIT_1
WAIT_2:  JNB       P1.1,WAIT_2
WAIT_3:  JNB       P1.2,WAIT_3
WAIT_4:  JNB       P1.3,WAIT_4
WAIT_5:  JNB       P1.4,WAIT_5
WAIT_6:  JNB       P1.5,WAIT_6
WAIT_7:  JNB       P1.6,WAIT_7
WAIT_8:  JNB       P1.7,WAIT_8
         RET

;**********************************************

DISPLAY:
         MOV       R0,#30H
         CLR       P3.3
         CLR       P3.2
DISP1:   MOV       A,@R0
         MOV       R1,#8
DISP2:   RLC       A                 
         MOV       P3.5,C
         SETB      P3.2
         CLR       P3.2
         DJNZ      R1,DISP2
         INC       R0
         CJNE      R0,#37H,DISP1
         SETB      P3.3
         RET

;**********************************************
DELAY10MS:
         SETB      RS0
         MOV       R7,#04H
DEL11:   MOV       R6,#2FH
DEL10:   DJNZ      R6,DEL10
         DJNZ      R7,DEL11
         CLR       RS0
         RET

;**********************************************
DELAY1S:
         SETB      RS0
         MOV       R7,#03H
DEL22:   MOV       R6,#0FFH
DEL21:   MOV       R5,#0FFH
DEL20:   DJNZ      R5,DEL20
         DJNZ      R6,DEL21
         DJNZ      R7,DEL22
         CLR       RS0
         RET

;**********************************************
RELL:    
         SETB      RS0
         CLR       P3.1
         MOV       R0,#7FH
RELLH:   
         MOV       R1,#7FH
RELLH1:  DJNZ      R1,RELLH1
         DJNZ      R0,RELLH
         SETB      P3.1
         CLR       RS0
         RET

;**********************************************
WRITEP1:
         MOV       36H,#0ABH
         MOV       35H,#60H
         MOV       R0,#30H
MTLP1:         
         MOV       @R0,#02H
         INC       R0
         CJNE      R0,#35H,MTLP1
         RET

WRITEZS:
         MOV       A,2CH
         ADDC      A,2CH
         MOV       DPTR,#TAB3
         MOVC      A,@A+DPTR
         MOV       31H,A
         MOV       A,2CH
         ADDC      A,2CH
         INC       A
         MOVC      A,@A+DPTR
         MOV       30H,A
         RET
         
;**********************************************
T1_INTEND:
         RETI
T1_INT:         
         JB        03H,T1_INTEND
         JNB       07H,T1_DO1
         PUSH      ACC
         AJMP      T1_SUB
T1_DO1:         
         CLR       TR1
         PUSH      ACC
         PUSH      PSW
         SETB      RS1
         LCALL     SJ_CHULI
         MOV       R0,#24H
         MOV       R1,#6
CLR_SBUF:         
         MOV       @R0,#0
         INC       R0
         DJNZ      R1,CLR_SBUF
         CLR       RS1
         POP       PSW
         POP       ACC
         RETI

T1_SUB:         
         INC       29H
         MOV       A,29H
         CJNE      A,#10,WR_DIS
         MOV       29H,#0
         INC       28H
         MOV       A,28H 
         CJNE      A,#10,WR_DIS
         MOV       28H,#0
         INC       27H
         MOV       A,27H
         CJNE      A,#10,WR_DIS
         MOV       27H,#0
         INC       26H
         MOV       A,26H
         CJNE      A,#10,WR_DIS
         MOV       26H,#0
         INC       25H
         MOV       A,25H
         CJNE      A,#10,WR_DIS
         MOV       25H,#0
         INC       24H
         MOV       A,24H
         CJNE      A,#10,WR_DIS
         CLR       07H
         SETB      P3.7
         MOV       33H,#8BH  ;F
         MOV       32H,#6DH  ;U
         MOV       31H,#0DH  ;L
         MOV       30H,#0DH  ;L
	 MOV       34H,#00H
         LJMP      DISPLAY2
WR_DIS:
         mov       a,24h
         jnz       wr_dis1
         mov       a,25h
         MOV       DPTR,#TAB1
         MOV       A,29H
         MOVC      A,@A+DPTR
         MOV       30H,A
         MOV       A,28H
         MOVC      A,@A+DPTR
         MOV       31H,A
         MOV       A,27H
         MOVC      A,@A+DPTR
         MOV       32H,A
         MOV       A,25H
         MOVC      A,@A+DPTR
         MOV       34H,A
         MOV       DPTR,#TAB2
         MOV       A,26H
         MOVC      A,@A+DPTR
         MOV       33H,A
         ljmp      display2
wr_dis1:
         MOV       DPTR,#TAB1
         MOV       A,28H
         MOVC      A,@A+DPTR
         MOV       30H,A
         MOV       A,27H
         MOVC      A,@A+DPTR
         MOV       31H,A
         MOV       A,25H
         MOVC      A,@A+DPTR
         MOV       33H,A
         MOV       A,24H
         MOVC      A,@A+DPTR
         MOV       34H,A
         MOV       DPTR,#TAB2
         MOV       A,26H
         MOVC      A,@A+DPTR
         MOV       32H,A
       
DISPLAY2:         
         MOV       R0,#30H
         CLR       P3.3
         CLR       P3.2

⌨️ 快捷键说明

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