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

📄 tch0674.asm.txt

📁 关于单片机的实习程序 可用来进行相关移植
💻 TXT
字号:
;===========================================
;       MCS51-1.asm
;          2003.5.21
;         由田春华与傅传波共同完成
;===========================================
        WR273 EQU 0C000H
        RD244 EQU 0C000H




	ORG 0000H
	LJMP START
	ORG 001BH
	LJMP INT01
	ORG 0100H
START:  LCALL CLS
        
        LCALL HELLO
               
        LCALL KEY
        MOV A,7FH
START1: CJNE A,#0AH,START2 ;显示P001
        LCALL TESTKEY
        LJMP START
START2: CJNE A,#0BH,START3 ;串口输出
        LCALL OUTCOM
        LJMP START
START3: CJNE A,#0CH,START4  ;串口输入
        LCALL  INCOM
        LJMP START 
START4: CJNE A,#0EH,START5  ;时钟调用
        LCALL CLK
        LJMP START
START5: CJNE A,#0DH,START7 ;频率计
        LCALL  PINGLV             
START7: LJMP START
;===================
;键盘测试子程序
;===================
TESTKEY:MOV 70H,#41H
	MOV 71H,#30H
	MOV 72H,#30H
	MOV 73H,#31H
TESTK0:	LCALL PRINT
	LCALL KEY
	MOV A,7FH
	CLR C
	SUBB A,#30H
	JNC TESTK1
	RET
TESTK1: MOV 70H,71H
        MOV 71H,72H
        MOV 72H,73H
        MOV 73H,7FH
        LJMP TESTK0
;--------------------------
SET232: MOV SCON,#0DAH
	MOV TMOD,#20H
	MOV TH1,#0FDH
	MOV TL1,#0FDH
	SETB TR1
	RET
	
	
;----------------------------
INPUT:  JNB 98H,$
	CLR 98H
	MOV A,SBUF
	RET
;-----------------------------
OUTPUT: JNB 99H,$
	CLR 99H
	MOV SBUF,A
	LCALL TIM0
	RET  
;-----------------------------------
OUTCOM: LCALL SET232
	MOV 70H,#41H
	MOV 71H,#32H
	MOV 72H,#33H
	MOV 73H,#32H    ;PRINT"P232"
	LCALL PRINT
	LCALL KEY
	
	MOV 70H,#42H
	MOV 71H,#42H
	MOV 72H,#42H
	MOV 73H,#42H   ;PRINT"-----"
      
        
OUTCO1:	LCALL PRINT
	LCALL KEY
	MOV A,7FH
	CJNE A,#0FH,OUTCO3
	LJMP OUTCO2
OUTCO3:	CLR C
	SUBB A,#30H
	JC OUTCO1
	MOV 70H,71H
	MOV 71H,72H
	MOV 72H,73H
	MOV 73H,7FH
	SJMP OUTCO1
	
OUTCO2:	MOV A,70H
	LCALL OUTPUT
	MOV A,71H
	LCALL OUTPUT
	MOV A,72H
	LCALL OUTPUT
	MOV A,73H
	LCALL OUTPUT
	
	RET	
;------------------------------------
INCOM:  LCALL SET232
	MOV 70H,#32H
	MOV 71H,#33H
	MOV 72H,#32H
	MOV 73H,#3CH
	LCALL PRINT
        LCALL INPUT
	MOV 70H,A
	LCALL INPUT
	MOV 71H,A
	LCALL INPUT
	MOV 72H,A
	LCALL INPUT
	MOV 73H,A
	LCALL PRINT
	LCALL KEY
	RET	
	
;===========
;键盘子程序
;===========
KEY:    MOV R7,#00H
        MOV A,#00H
	MOV B,#0EH
KEY1:   NOP
	ORL A,B
	MOV DPTR,#WR273
	MOVX @DPTR,A
	NOP
	NOP
	NOP
	NOP
        MOV DPTR,#RD244
	MOVX A,@DPTR
	ANL A,#0FH
	CJNE A,#0FH,KEY2
	INC R7
	SETB C
	MOV A,B
	RLC A
	ANL A,#0FH
	CJNE A,#0FH,KEY0
	MOV A,#0EH
	MOV R7,#00H
KEY0:	MOV B,A
	SJMP KEY1
KEY2:   CPL A
	ANL A,#0FH
	JNB ACC.0,KEY6
	MOV A,#00H
	SJMP KEY9
KEY6:   JNB ACC.1,KEY7
	MOV A,#01H
	SJMP KEY9
KEY7:   JNB ACC.2,KEY8
	MOV A,#02H
	SJMP KEY9
KEY8:   MOV A,#03H
KEY9:   XCH A,R7
	MOV B,#04H
	MUL AB
	ADD A,R7
	MOV DPTR,#KTAB1
	MOVC A,@A+DPTR
	;MOV  DPTR,#KKKK
	;MOVX @DPTR,A
	MOV 7FH,A
	LCALL SOUND
KEYUP:  MOV DPTR,#RD244
	MOVX A,@DPTR
	ANL A,#0FH
	CJNE A,#0FH,KEYUP
	RET
KTAB1:	DB 34H,0FH,0DH,0EH
	DB 33H,0BH,0CH,0AH
	DB 32H,30H,39H,38H
	DB 31H,36H,37H,35H

;---------------------------------
KTAB0:	DB 00H,01H,02H,03H
	DB 04H,05H,06H,07H
	DB 08H,09H,0AH,0BH
	DB 0CH,0DH,0EH,0FH
;------------------------------------
;---------------------------------
TIM0:   MOV R7,#40H
TIME1:  MOV R6,#00H
TIME2:  NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
        NOP
        NOP
	DJNZ R6,TIME2
	DJNZ R7,TIME1
	RET
;--------------------------------------------
SOUND:  NOP
        LCALL TIM0
        RET    
;------------------------------------        
CLS:    MOV A,#0FFH
        MOV DPTR,#8000H
        MOVX @DPTR,A
        
        MOV DPTR,#9000H
        MOVX @DPTR,A
        
        MOV DPTR,#0A000H
        MOVX @DPTR,A
        
        MOV DPTR,#0B000H
        MOVX @DPTR,A
        RET
;------------------------------------
DISP:   MOV A,70H
	MOV DPTR,#8000H
	MOVX @DPTR,A
	
	MOV A,71H
	MOV DPTR,#9000H
	MOVX @DPTR,A
	
	MOV A,72H
	MOV DPTR,#0A000H
	MOVX @DPTR,A
	
	MOV A,73H
	MOV DPTR,#0B000H
	MOVX @DPTR,A
	RET
;=============
;显示子程序
;=============
PRINT:  MOV A,70H
        SUBB A,#30H
	MOV DPTR,#TABLED
	MOVC A,@A+DPTR
	MOV DPTR,#0B000H
	MOVX @DPTR,A
	
	MOV A,71H
        SUBB A,#30H
	MOV DPTR,#TABLED
	MOVC A,@A+DPTR
	MOV DPTR,#0A000H
	MOVX @DPTR,A
	
	MOV A,72H
        SUBB A,#30H
	MOV DPTR,#TABLED1
	MOVC A,@A+DPTR
	MOV DPTR,#9000H
	MOVX @DPTR,A
	
	MOV A,73H
        SUBB A,#30H
	MOV DPTR,#TABLED
	MOVC A,@A+DPTR
	MOV DPTR,#8000H
	MOVX @DPTR,A
	RET
TABLED:	DB 0C0H,0F9H,0A4H,0B0H, 99H,92H,82H,0F8H, 80H;0-8
        DB  90H, 88H, 83H,0C6H,0A1H,86H,84H,0FFH, 8CH;9 A B,C,D E F   P
        DB 0BFH                                       ;42:"-"
       ; 待
        DB 040H,79H,24H,30H, 19H,12H,02H,78H, 00H;0-8,
        DB  10H ;9; ADD A POT AT THE END OF EACH WORD
       
TABLED1: DB 0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H;0-8
         DB 58H,48H,43H,0C6H,61H,46H,4EH,0FFH,4CH;9 A B C D E F 
         DB 7FH;"- "   
         DB 80H,0B9H,24H,30H,19H,12H,02H,0B8H,00H,18H ;;;;;;;;;;;   21H                             
;-----------------------------------
HELLO:  MOV A,#89H
        MOV DPTR,#0B000H
        MOVX @DPTR,A
        
        MOV A,#86H
        MOV DPTR,#0A000H
        MOVX @DPTR,A
        
        MOV A,#0C7H
        MOV DPTR,#9000H
        MOVX @DPTR,A

        MOV A,#0C7H
        MOV DPTR,#8000H
        MOVX @DPTR,A
        RET	
;===================
;时钟子程序
;===================               
     	
CLK: 	NOP
	LCALL CLS 
   	MOV TMOD ,#10H
   	MOV TH1,#0DCH
   	MOV TL1,#06H
   	SETB EA
   	SETB ET1
   	LCALL SETTIME
   	MOV R0,#64H
   	SETB TR1
 HALT:	CLR C
 	LCALL PRINT
   	SJMP HALT
;=============
;T1中断子程序
;=============
INT01:
    DJNZ R0,NEXT
    LCALL TIMESKIP
    MOV R0,#64H
    
NEXT: MOV TH1,#0DCH
    MOV TL1,#06H
    RETI
;----------------------
;时钟设置子程序
;----------------------
SETTIME:
       LCALL KEY
       CLR C 
       MOV A,7FH
       SUBB A,#30H
       JC SETTIME
       MOV A,7FH
       SUBB A,#33H
       JNC SETTIME
       MOV 70H,7FH
       MOV 71H,#42H
       MOV 72H,#42H
       MOV 73H,#42H
       CLR C
       LCALL PRINT
    SET1:
       LCALL KEY
       CLR C 
       MOV A,7FH
       SUBB A,#30H
       JC SET1
       MOV A,70H
       CJNE A,#32H,NEXT1
       MOV A,7FH
       SUBB A,#34H
       JNC SET1
     NEXT1:
       MOV A,#13H
       ADD A,7FH
       MOV 71H,A
       LCALL PRINT 
     SET2:
       LCALL KEY
       CLR C
       MOV A,7FH
       SUBB A,#30H
       JC SET2
       MOV A,7FH
       SUBB A,#36H
       JNC SET2
       CLR C 
       MOV A,#13H
       ADD A,7FH
       MOV 72H,A
       LCALL PRINT
     SET3:
       LCALL KEY
       CLR C 
       MOV A,7FH
       SUBB A,#30H
       JC SET3
       MOV 73H,7FH
       LCALL PRINT
       MOV 75H,#30H
       MOV 74H,#30H
 RET
 ;----------------
 ;时钟跳动子程序
 ;----------------
TIMESKIP:
	 MOV A,#39H
     	SUBB A,75H 
     	JZ SKIP00
     	INC 75H
 	SJMP EXITOUT
   SKIP00:
   	MOV 75H,#30H 
        MOV A,#35H
   	SUBB A,74H
   	JZ SKIP01
   	INC 74H
   	SJMP EXITOUT
   SKIP01:
   	MOV 74H,#30H
   	MOV A,#39H
        SUBB A,73H
        JZ SKIP1
        INC 73H
        SJMP EXITOUT
    SKIP1: MOV 73H,#30H
            MOV A,#48H
       SUBB A, 72H
       JZ SKIP2
       INC 72H
       SJMP EXITOUT
     SKIP2: MOV 72H,#43H 
        MOV A,#32H
        CJNE A,70H,SKIP3
        MOV A,#46H
        SUBB A,71H
        JZ SKIP4
        
     SKIP3:
        MOV A,#4CH 
        SUBB A,71H
        JZ SKIP5
        INC 71H
        SJMP EXITOUT
     SKIP4: MOV 70H,#30H
        MOV 71H,#43H
        MOV 72H,#43H;;;;;;;
        MOV 73H,#30H
        SJMP EXITOUT
      SKIP5:
          MOV 71H,#43H
          MOV A,#32H
         SUBB A,70H
         JZ SKIP4
         INC 70H
         SJMP EXITOUT
      EXITOUT:
         RET
;-------------------
;频率计子程序
;------------------- 
PINGLV: 
        MOV TMOD,#05H
 TCH:   MOV TH0,#00H        
        MOV TL0,#00H      
        SETB EA
        SETB ET0
        MOV R1,#64H
        SETB TR0
  LOOP3:MOV R3,#0AH
  LOOP2:MOV R2,#64H	
  LOOP1:
        NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
        DJNZ R2,LOOP1
        NOP 
        NOP 
        NOP 
        NOP
        NOP
        NOP
        NOP 
        NOP
        NOP 
        NOP 
        NOP 
        NOP
        NOP 
        NOP 
        NOP 
        NOP 
        NOP 
        NOP   ;18    
        DJNZ R3,LOOP2
        NOP 
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP 
        NOP
        NOP ;12
        DJNZ R1,LOOP3
        CLR TR0 
        MOV R5,TH0
        MOV R4,TL0
        MOV R7,#03H
        MOV R6,#0E8H
        LCALL DV
        MOV 70H,R0
        MOV R7,#00H
        MOV R6,#64H
        LCALL DV
        MOV 71H,R0
        MOV R7,#00H
        MOV R6,#0AH
        LCALL DV
        MOV 72H,R0
        MOV R7,#00H
        MOV R6,#01H
        LCALL DV
        MOV 73H,R0
        CLR C
        LCALL PRINT
        SJMP TCH
      RET
;===========
;取位子程序
;===========
DV:  MOV R0,#30H
    LOOP:
      CLR C
      MOV A,R4
      SUBB A,R6
      MOV R2,A
      MOV A,R5
      SUBB A,R7
      JC EXIT
      INC R0
      MOV R5,A
      MOV A,R2
      MOV R4,A
      SJMP LOOP
    EXIT: 
       RET

     
END          
  

⌨️ 快捷键说明

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