rf.asm.bak

来自「一个简单单片机教程」· BAK 代码 · 共 173 行

BAK
173
字号
		   EN   EQU  P1.7
        	DOUT EQU  P1.6
        	CLK  EQU  P1.3
        	DOT  EQU  30H
        	D_1  EQU  31H
        	D_2  EQU  32H
        	D_3  EQU  33H
        	D_4  EQU  34H
        	D_5  EQU  35H
        	D_6  EQU  36H
        	ID   EQU  37H
        	BZ   EQU  38H
		   ORG 0000H
		   AJMP START
		   ORG 000BH
		   AJMP MAIN_PRO_0
START:             
MOV ID,#01H
	MOV BZ,#00H
	MOV DOT,#00H
	MOV D_1,#00H
	MOV D_2,#00H
	MOV D_3,#00H
	MOV D_4,#00H
	MOV D_5,#00H
	MOV D_6,#00H
	
	ACALL TS_LED
			MOV   5CH,#00H                 
                   MOV   5DH,#00H
                   MOV   62H,#00H
                   MOV   63H,#00H          ;数据5CH,5DH,62H,63H区清零 
                   MOV   TMOD,#06H         ;T0工作于计数模式;方式2:自动装载;1 TO 0            
                   MOV   TH0,#0FFH                    
                   MOV   TL0,#0FFH
                  
                                 
                   SETB  EA                          
                   SETB  ET0               ;允许T0中断              
                   SETB  TR0               ;T0运行  
                   
MAIN:              JBC   TF0,MAIN_PRO_0    ;检测T0是否溢出         
                   SJMP  MAIN                        
                 ;  SJMP  MAIN                       
MAIN_PRO_0:        MOV   R6,#08H                      
PROCESS_0:         ACALL DL0MS                        
                   JB    P3.4,PRO_END      ;P3.4=1跳出         
                   DJNZ  R6,PROCESS_0      ;P3.4=0的时间是否=0.887*8           
                   JNB   P3.4,$            ;时间满足后,当P3.4=0,等待          
                   ACALL DL5MS                        
                   MOV   R1,#5CH                     
                   MOV   R2,#02H                      
MAIN_PRO_1:        MOV   R3,#08H                     
PROCESS_1:         JNB   P3.4,$            ;当P3.4=0,等待            
                   LCALL DL0MS                       
                   MOV   C,P3.4                       
                   JNC   PROCESS_2         ;P3.4=0(即C=0),去处理           
                   LCALL DL1MS             ;P3.4=1(即C=1),延时1.005MS           
PROCESS_2:         MOV   A,@R1             ;处理程序           
                   RRC   A                           
                   MOV   @R1,A                        
                   DJNZ  R3,PROCESS_1                     
                   INC   R1                          
                   LCALL DL5MS                        
                   DJNZ  R2,MAIN_PRO_1                     
                   MOV   63H,5DH            ;                             
                   MOV   62H,5CH
                   MOV   R0,#62H
                   MOV   A,@R0
                   CJNE  A,#0C4H,PRO_END   ;判断是否是键盘按下 
                   
                   ;CLR   EA                ;是,就发送串口
                   MOV   R0,#63H
                   MOV   A,@R0
						 CJNE  A,#20H,LOOP1
						 AJMP  MAIN
LOOP1:
						 JC    LOOP2
						 AJMP  MAIN
LOOP2:
                   ANL   A,#0FH
                   MOV   D_1,A
                   MOV   A,@R0
                   SWAP  A
                   ANL   A,#0FH
                   MOV   D_2,A
                   MOV   D_3,#04H
                   MOV   D_4,#0CH
                   ACALL TS_LED
                   ;MOV   SBUF,A
                   ;JNB   TI,$ 
                   ;ACALL DL                     
PRO_END:           ;SETB  EA                           
                   LJMP  MAIN                       
;==========================================================================
DL0MS:             MOV   R4,#13H           ;延时0.887MS
DL0LP:             MOV   R5,#14H                      
                   DJNZ  R5,$                         
                   DJNZ  R4,DL0LP                     
                   RET                                
;==========================================================================
DL5MS:             MOV   R4,#0AH           ;延时4.743MS
DL5LP:             MOV   R5,#0D9H                     
                   DJNZ  R5,$                         
                   DJNZ  R4,DL5LP                    
                   RET                                
;==========================================================================
DL1MS:             MOV   R4,#02H           ;延时1.005MS
DL1LP:             MOV   R5,#0E6H                    
                   DJNZ  R5,$                         
                   DJNZ  R4,DL1LP                    
                   RET
;==========================================================================
DL:
		   MOV   R7,#03H             ;延时425.843MS
DL0:
		   MOV   R6,#0FFH
DL1:
		   MOV   R5,#0FFH
		   DJNZ  R5,$
		   DJNZ  R6,DL1
		   DJNZ  R7,DL0
		   RET 
TS_LED:
	MOV R1,#30H
	MOV R2,#09H 
	CLR CLK
	CLR EN
        NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
TS_LOOP1:
	MOV A,@R1
        SWAP A
	MOV R3,#04H
TS_LOOP2:
	SETB CLK
	RLC A
        MOV DOUT,C
        CLR C
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR CLK
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DJNZ R3,TS_LOOP2
	INC R1
	DJNZ R2,TS_LOOP1
	SETB EN
	RET                              
                   END

⌨️ 快捷键说明

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