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

📄 keysan.asm

📁 有速度pid的异步电机vf控制的dsp调试程序
💻 ASM
字号:
;===========================================================================
;(To use this Module, copy this section to main system file)
;		.ref	KEYSCAN
;		.ref	KEYSCAN_INIT			;function call
;       .ref    startflag             ;output
;===========================================================================
;Module definitions for external reference.
		.def		KEYSCAN		;function call
		.def     	KEYSCAN_INIT			;function call
		.def        startflag,onflag,stopflag
;===========================================================================
		.include	x24x_app.h
SCANPER .set 20000    ;8*20000*20NS=0.32MS
startflag	.usect "KEYSCAN",1
stopflag	.usect "KEYSCAN",1
onflag     .usect "KEYSCAN",1
outflag1    .usect  "KEYSCAN",1
outflag2    .usect  "KEYSCAN",1
count2	.usect "KEYSCAN",1
count1  .usect "KEYSCAN",1
;---------------------------------------------------------------------------
KEYSCAN_INIT:
     	POINT_PF2					;OCRA.6 - OCRA.11
		LACC	PBDATDIR
		AND	#1100111111001111b   ;SET IOPB4  INPUT MODUL
			;||||!!!!||||!!!!
			;5432109876543210
		SACL	PBDATDIR
       	LACC	PFDATDIR
		OR   #0000010000000000b
		AND  #1111111111111011b
		SACL PFDATDIR
        LDP #0EAh
		SPLK #SCANPER,T4PERB
		SPLK #1001011001000000b,T4CONB
        LDP #startflag
	    SPLK	#0h, startflag
        SPLK	#0h, stopflag
        SPLK	#0h, onflag 
        SPLK	#0h, outflag1
        SPLK	#0h, outflag2
        SPLK	#0h, count2 
		SPLK	#0h, count1
     
		RET
KEYSCAN:
      POINT_PF2
	  BIT PBDATDIR,BIT4;check t1pwm/iopb4 high or low
	  NOP
	  BCND  KEYSCAN1,tc	  ;if high,then check outflag1
	  B NEXT1             ;if low,means the key on
KEYSCAN1:
      ldp #outflag1
	  lacc outflag1   ;if outflag is 1,means start
	  BCND START,NEQ
      POINT_PF2
	  BIT PBDATDIR,BIT5 ;check t2pwm/iopb5 high or low
	  NOP
	  BCND  NEXT3,tc    ;if high,then check outflag2
	  B NEXT2             ;if low,means the key on
NEXT1:
	  LDP #onflag
	  LACC onflag
	  BCND  WATE1,NEQ ;if onflag is 1,means qu dou
	  LACC #1
	  SACL onflag  ;if onflag is 0 ,meas the key was on firsttime,then wait
	  RET
NEXT2:
	  LDP #onflag
	  LACC onflag
	  BCND  WATE2,NEQ  
	  LACC #1
	  SACL onflag  ;if onflag is 0 ,meas the key was on firsttime, then wait
	 
	   RET
NEXT3:
      LDP #outflag2
     lacc outflag2
     BCND STOP,NEQ 
	 RET

WATE1:
      LDP #outflag1   ;delay 8ms
	  splk #1,outflag1
	   RET
WATE2:
      LDP #outflag2   ;delay 8ms
	  splk #1,outflag2
	   RET    
STOP:
	  LDP #startflag 
	  SPLK	#0h, startflag
      SPLK	#1h, stopflag
	  SPLK	#0h, onflag
	  SPLK  #0h,outflag2
	   RET

START:

		POINT_PF2
       LACC	PFDATDIR
		AND  #1111111111111011b
		SACL PFDATDIR
      LDP #startflag
      SPLK	#1h, startflag
	  SPLK	#0h, stopflag
      SPLK	#0h, onflag
	  SPLK #0h,outflag1
	  LACC count1
	  ADD #1
	  SACL count1
      POINT_EV
	  SPLK	#0000011001100110b,ACTR 
	  SPLK	#0,T1CNT
	  POINT_PF2
	  LACC  PFDATDIR
	  OR    #0000000000000100b 
	     	;||||!!!!||||!!!!
			;5432109876543210
	    SACL  PFDATDIR 
		POINT_EV
		SPLK	#0000001000000001b,IMRA 

	  RET
 
    


   

		
      

⌨️ 快捷键说明

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