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

📄 a_08_07.dt

📁 用义隆IC编写的一个玩具
💻 DT
📖 第 1 页 / 共 2 页
字号:
;*************************************************************
/*备注:1,MODE1,MODE2,MODE3 改变,与2462功能中的相应MODE一致
	;   2, 1.5S 关机 原来是0.9S 关机
	;   3, MODE5功能与客户样机不一致,原因0.1MS软件定时不准(偏慢),修改相应参数校准
	;   4,UP、DOWN 键功能相反,4脚(P63)为UP,7脚(P60)为DOWN
	;   5, 以上功能修改日期 2008年9月26日
		6,0E54
;P61 pull low in mode0 and pull high in other mode
;jason huang 
;AUG 05,08
*/
;*************************************************************
 IAR              ==    0x00
 TCC              ==    0x01
 PC               ==    0x02
 CONT             ==    0X03
 STATUS           ==    0x03
          Z       ==    0x02   
          C       ==    0x00   

 RSR              ==    0x04    
 PORT5            ==    0x05
 PORT6            ==    0x06
 ISR              ==    0x0F
          TCIF    ==     0

 P5CR             ==    0x05    ;
 P6CR             ==    0x06    ; 
 PCR              ==    0x0B    ; 
 ODCR             ==    0x0C
 PHCR             ==    0x0D    ; 
 IOCE             ==    0x0E
 IMR              ==    0x0F

;**************************************************************
 TEMP             ==    0x10
 ACC_BUF         ==    0x11
 R3_BUF           ==    0x12
 R4_BUF           ==    0x13
 SLEEPTIME        ==    0x14
 POWERDOWN1       ==    0X15
 POWERDOWN2       ==    0x16
 TEMP1            ==    0x17
 TEMP2            ==    0x18
 TEMP3            ==    0x19
 TEMP4            ==    0x1A
 DELAYON          ==    0x1B
 DELAYOFF         ==    0x1C
 DELAYTIME        ==    0x1D
 MODE             ==    0x1E
 MODE_BUF         ==    0x1F
 ;
 FLAG01           ==    0x20
 cnt1        	  ==    0x21
 cnt2             ==    0x22
; MODE            ==    0x23
 TIMEON           ==    0x24
 KEY_TIME         ==    0x25
 KEY_FLAG		  ==	0X26
  UP_FLAG		  ==	0
  DOWN_FLAG		  ==	1
 KEY_STATE		  ==	0X27
  UP_STATE		  ==	0
  DOWN_STATE	  ==	1
; FLAG_200US       ==    0x26
; TEMP1            ==    0x27
; TEMP2            ==    0x28
 ;DELAYTIME        ==    0x29
; TEMP3            ==    0x2A
 ;TEMP4            ==    0x2B
 ;DELAYON          ==    0x2C
; DELAYOFF         ==    0x2D
; R2E            ==    0x2E
; R2F            ==    0x2F
 
 ;********************************************
 ;PORT6
 UP_KEY         ==         3
 DOWN_KEY       ==         0
 DRIVERED       ==         2
 GREEN          ==         4
 RED            ==         5

 
 ;******************************************
 ;FLAG01
 ;UP_FLAG        ==          1
 ;UP_STATE       ==          2
 ;DOWN_FLAG      ==          3
 ;DOWN_STATE     ==          4
 ;*****************************************
 
 		ORG	    0000H
		NOP
		NOP
		NOP
		NOP
		nop
		nop
		nop
		JMP 	 POWERON
		ORG      0008H
		JMP      INT_IN
;********************************************************************
;-------------------DELAY 0.1MS-------------------           
DELAY:   
         MOV    A,DELAYTIME
         MOV    TEMP1,A
         MOV    A,@0X2F
         MOV    TEMP2,A
         
DELAY2:  
         WDTC
         DJZ    TEMP2
         JMP    DELAY2
         MOV    A,@0X2F
         MOV    TEMP2,A
         DJZ    TEMP1
         JMP    DELAY2
         RET 
         
;-------------------DELAY 0.1MS---------------------------------             
DELAY1MS:           
         MOV    A,DELAYTIME
         MOV    TEMP1,A
DELAY1MS2:
         WDTC
         MOV    A,@0X0A
         MOV    TEMP4,A
         MOV    A,@0X3D
         MOV    TEMP2,A
         
DELAY100US:  
         DJZ    TEMP2
         JMP    DELAY100US
         MOV    A,@0X3D
         MOV    TEMP2,A
         DJZ    TEMP4
         JMP    DELAY100US
         DJZ    TEMP1
         JMP    DELAY1MS2
         RET 	                
;********************************************************************      
INT_IN:
	    MOV		ACC_BUF,A			
 		SWAP	ACC_BUF
 		
 		SWAPA	STATUS
 		MOV		R3_BUF,A
	      
	    MOV      A,RSR            
	    MOV      R4_BUF,A

	    MOV		MODE,MODE
	    JBC		STATUS,Z
	    DEC     SLEEPTIME

 
	    JBS      ISR,TCIF       	  
		JMP      INT_EXIT

KEY_SCAN:
		 JBS 	 PORT6,0
		 JMP 	 DOWN_ON

		 	
DOWN_OFF:
		JBS		KEY_FLAG,DOWN_FLAG
		JMP		DOWN_OFF1
		BC		KEY_FLAG,DOWN_FLAG
		JMP		UP_TEST
		
DOWN_OFF1:
		JBS		KEY_STATE,DOWN_STATE
		JMP		UP_TEST
		BC		KEY_STATE,DOWN_STATE
		JMP		UP_TEST
		
DOWN_ON:
		JBC		KEY_FLAG,DOWN_FLAG
		JMP		DOWN_ON1
		BS		KEY_FLAG,DOWN_FLAG
		JMP		INT_EXIT
		
DOWN_ON1:
		JBC		KEY_STATE,DOWN_STATE
		JMP		DOWN_KEY_LONG
		BS		KEY_STATE,DOWN_STATE
		
DOWN_DO:
		MOV		A,@0X5A
		MOV		KEY_TIME,A		
		DEC		MODE		;7 mode
		JBS		MODE,7		;0 change to 0ff
		JMP		INT_EXIT
		MOV		A,@0X06
		MOV		MODE,A
		JMP		INT_EXIT

DOWN_KEY_LONG:
		DEC		KEY_TIME
		MOV		KEY_TIME,KEY_TIME
		JBS		STATUS,Z
		JMP		INT_EXIT
		CLR		MODE
		JMP		INT_EXIT
		
UP_TEST:
		JBS		PORT6,3
		JMP		UP_ON
		
UP_OFF:
		JBS		KEY_FLAG,UP_FLAG
		JMP		UP_OFF1
		BC		KEY_FLAG,UP_FLAG
		JMP		INT_EXIT
		
UP_OFF1:
		JBS		KEY_STATE,UP_STATE
		JMP		INT_EXIT
		BC		KEY_STATE,UP_STATE
		JMP		INT_EXIT
		
UP_ON:
		JBC		KEY_FLAG,UP_FLAG
		JMP		UP_ON1
		BS		KEY_FLAG,UP_FLAG
		JMP		INT_EXIT
		
UP_ON1:
		JBC		KEY_STATE,UP_STATE
		JMP		UP_KEY_LONG
		BS		KEY_STATE,UP_STATE
		
UP_DO:	
		MOV		A,@0X5A
		MOV		KEY_TIME,A
		INC		MODE
		MOV		A,@0X07
		SUB		A,MODE
		JBS		STATUS,C
		JMP		INT_EXIT
		CLR		MODE
		JMP		INT_EXIT
		
UP_KEY_LONG:
		DEC		KEY_TIME
		MOV		KEY_TIME,KEY_TIME
		JBS		STATUS,Z
		JMP		INT_EXIT
		CLR		MODE
		JMP		INT_EXIT
		
		
/*		
         JBS 	 PORT6,0
         JMP 	 DOWN_ON
DOWN_OFF:	
		 JBS 	 FLAG01,DOWN_FLAG		
		 JMP 	 DOWN_OFF1
		 BC  	 FLAG01,DOWN_FLAG
	     JMP     EXIT_INT

DOWN_OFF1:
		 JBS 	 FLAG01,DOWN_STATE
		 JMP      EXIT_INT	
		 BC  	 FLAG01,DOWN_STATE
		 JMP      EXIT_INT

DOWN_ON: 
       
	     JBC 	 FLAG01,DOWN_FLAG
	 	 JMP 	 DOWN_ON1	
		 BS  	 FLAG01,DOWN_FLAG
		 JMP      EXIT_INT
DOWN_ON1:
		 JBC 	 FLAG01,DOWN_STATE	
		 JMP      LONGPRESS	
		 BS  	 FLAG01,DOWN_STATE
	 	 JBS      PORT6,DOWN_KEY		;DOWN LOOP
		 JMP      $+7	
         DEC      MODE			
         
         JBS      MODE,7	              
         JMP      EXIT_INT
         MOV      A,@0X06
         MOV      MODE,A
         JMP      EXIT_INT
         
         
         INC      MODE			;UP LOOP
         MOV      A,@0X07
         SUB      A,MODE
         JBC      STATUS,C	             
         CLR      MODE
         JMP      EXIT_INT
LONGPRESS:

         INC      TIMEON              
         MOV      A,@0X80                      
         SUB      A,TIMEON
         JBS      STATUS,Z
         JMP      EXIT_INT
         CLR      TIMEON
         CLR      MODE	
         */	
;*************************************************************************************
INT_EXIT:
         MOV		A,@0X00
         MOV		0X0F,A
         CLR		0X0F
        ; BC		  ISR,TCIF
         ;BC       ISR,1          

	 	 MOV      A,R4_BUF
         MOV      RSR,A

         SWAPA		R3_BUF
		 MOV		STATUS,A
		 SWAPA		ACC_BUF  
		 
  	     RETI 
;*************************************************************************************
POWERON:
           DISI

⌨️ 快捷键说明

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