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

📄 matrixled.asm

📁 直流机控制代码 可以控制直流机的转速以及正反转
💻 ASM
字号:
;**********************************************************************************
;*                                                      			  *
;*      AAAA      CCCCCCCCCC  UU     UU  TTTTTTTTTTT    EEEEEEEEEEE   CCCCCCCCCC  *
;*     AA  AA    CCCC	      UU     UU       TT        EE	     CCC	  *
;*    AAAAAAAA    CCC	      UU     UU       TT	EEEEEEEEEEE CCC	 	  *
;*   AA      AA  CCCC	      UU     UU       TT	EE	     CCCC	  *
;*  AA        AA  CCCCCCCCCC   UUUUUUU        TT	EEEEEEEEEEE   CCCCCCCCCC  *  
;*                                                      			  *
;**********************************************************************************
;*										  *
;*	  User Name 	: ACUTEC Corporation					  *
;*										  *
;*	  System Name	:test board						  *
;*										  *
;*	  Function 	: Matrix led driving			  *
;*										  *
;*	  CPU		: uPD78F0547D	
;*
;*	Using system resource:P01-P04;P64-P67 ;    Timer H1				  *
;*										  *
;*	  Last Update	: 2005-12-19 10:45						  *
;*										  *
;*	  File Name	: MatrixLED.asm					  *
;*										  *
;*				 Copyright AcuTec Co. Ltd.			  *
;**********************************************************************************
;#include "init.h"
$IC (MatrixLED.H)	
		
						

;----------------------------------------------------------------------------------
Init_CSEG	CSEG	

;==================================================================================
;Function Module:PowerReset
;Input:
;Output:
;Internal Data:
;Fuction:(1)CPU init
;	 (2)PORT init
;	 (3)RAM and REGISTER init
;	 (4)Intterupt init
;	 (5)16-bit timer init;	 
; =================================================================================
Start:		
	NOP
	NOP
	NOP
	DI
		
	MOVW	AX,#M_stack			; Stack setup	
	MOVW	SP,AX	
	;+----------------------------------------------+
	;|	Primary Hardwear Setup	|
	;+----------------------------------------------+
	CALL	!CPU_init			; CPU  SETUP
	
Start00:
	BF RCM.7,$Start00
	CALL	!INT_init			; INT SETUP		
	;+----------------------------------------------+
	;|	RAM Initialize		|
	;+----------------------------------------------+

	CALL	!RAM_init		; Ram setup	
	CALL	!Port_init			; PORT SETUP	
	;+----------------------------------------------+
	;|	AD	Initialize		|
	;+----------------------------------------------+
	CALL 	!AD_init
	;+----------------------------------------------+
	;|	CSIA0 Initialize		|
	;+----------------------------------------------+
	CALL 	!CSIA0_INIT
	MOV 	A,#0
	MOV		SIOA0,A
	;+----------------------------------------------+
	;|	Timer Initialize		|
	;+----------------------------------------------+
	
	CALL	!TimerH1_init
	CALL	!TimerH1_start
	
	CALL 	!TimerH0_init
	EI

	;MOV	A,#0
	;MOV P7,A
	MOV	KEY_VALUE,#00H
	MOV KEY_IN,#00H;
	MOV KEY_OUT,#00H;
	
	
Main:	
	
	CALL	!KEY_SCAN;
	CALL    !LED_SHOW;



;==================================================================================
;Function Module:KEY_SCAN
;Input:
;Output:
;Internal Data:
;Fuction:count the puls,equ
; =================================================================================	
KEY_SCAN:
INITIAL:
	MOV A,#00000000B;
	MOV P5,A;
	MOV A,P7;
	CMP A,#11111111B;
	BZ $INITIAL;
	BR $SCAN_ROW1;
	
SCAN_ROW1:
	MOV A,#00001110B;
	MOV P5,A;
	MOV A,P7;
	CMP A,#11111111B;
	BZ $SCAN_ROW2;
	
	ROR A,1;
	BC $STEP_1;
	MOV KEY_VALUE,#_KD1;
	RET;
STEP_1:
	ROR A,1;
	BC $STEP_2;
	MOV KEY_VALUE,#_KD2;
	RET;
STEP_2:
	ROR A,1;
	BC $STEP_3;
	MOV KEY_VALUE,#_KD3;
	RET;
STEP_3:

	ROR A,1;
	BC $STEP_4;
	MOV KEY_VALUE,#_KD4;
	RET;
STEP_4:

	ROR A,1;
	BC $STEP_5;
	MOV KEY_VALUE,#_KD5;
	RET;
STEP_5:

	ROR A,1;
	BC $STEP_6;
	MOV KEY_VALUE,#_KD6;
	RET;
STEP_6:

	ROR A,1;
	BC $STEP_7;
	MOV KEY_VALUE,#_KD7;
	RET;
STEP_7:

	ROR A,1;
	BC $SCAN_ROW2;
	MOV KEY_VALUE,#_KD8;
	RET;


SCAN_ROW2:
	MOV A,#00001101B;
	MOV P5,A;
	MOV A,P7;
	CMP A,#11111111B;
	BZ $SCAN_ROW3;
	
	ROR A,1;
	BC $STEP_9;
	MOV KEY_VALUE,#_KD9;
	RET;
STEP_9:
	ROR A,1;
	BC $STEP_10;
	MOV KEY_VALUE,#_KD10;
	RET;
STEP_10:
	ROR A,1;
	BC $STEP_11;
	MOV KEY_VALUE,#_KD11;
	RET;
STEP_11:

	ROR A,1;
	BC $STEP_12;
	MOV KEY_VALUE,#_KD12;
	RET;
STEP_12:

	ROR A,1;
	BC $STEP_13;
	MOV KEY_VALUE,#_KD13;
	RET;
STEP_13:
	ROR A,1;
	BC $STEP_14;
	MOV KEY_VALUE,#_KD14;
	RET;
STEP_14:

	ROR A,1;
	BC $STEP_15;
	MOV KEY_VALUE,#_KD15;
	RET;
STEP_15:

	ROR A,1;
	BC $SCAN_ROW3;
	MOV KEY_VALUE,#_KD16;
	RET;


SCAN_ROW3:
	MOV A,#00001011B;
	MOV P5,A;
	MOV A,P7;
	CMP A,#11111111B;
	BZ $SCAN_ROW4;
	
	ROR A,1;
	BC $STEP_17;
	MOV KEY_VALUE,#_KD17;
	RET;
STEP_17:
	ROR A,1;
	BC $STEP_18;
	MOV KEY_VALUE,#_KD18;
	RET;
STEP_18:

	ROR A,1;
	BC $STEP_19;
	MOV KEY_VALUE,#_KD19;
	RET;
STEP_19:

	ROR A,1;
	BC $STEP_20;
	MOV KEY_VALUE,#_KD20;
	RET;
STEP_20:

	ROR A,1;
	BC $STEP_21;
	MOV KEY_VALUE,#_KD21;
	RET;
STEP_21:

	ROR A,1;
	BC $STEP_22;
	MOV KEY_VALUE,#_KD22;
	RET;
STEP_22:

	ROR A,1;
	BC $STEP_23;
	MOV KEY_VALUE,#_KD23;
	RET;
	
STEP_23:
	ROR A,1;
	BC $SCAN_ROW4;
	MOV KEY_VALUE,#_KD24;
	RET;
	


SCAN_ROW4:
	MOV A,#00000111B;
	MOV P5,A;
	MOV A,P7;
	CMP A,#11111111B;
	BZ $DISP_END;
	
	ROR A,1;
	BC $STEP_25;
	MOV KEY_VALUE,#_KD25;
	RET;
STEP_25:
	ROR A,1;
	BC $STEP_26;
	MOV KEY_VALUE,#_KD26;
	RET;
STEP_26:
	ROR A,1;
	BC $STEP_27;
	MOV KEY_VALUE,#_KD27;
	RET;
STEP_27:

	ROR A,1;
	BC $STEP_28;
	MOV KEY_VALUE,#_KD28;
	RET;
STEP_28:

	ROR A,1;
	BC $STEP_29;
	MOV KEY_VALUE,#_KD29;
	RET;
STEP_29:

	ROR A,1;
	BC $STEP_30;
	MOV KEY_VALUE,#_KD30;
	RET;
STEP_30:

	ROR A,1;
	BC $STEP_31;
	MOV KEY_VALUE,#_KD31;
	RET;
STEP_31:

	ROR A,1;
	BC $DISP_END;
	MOV KEY_VALUE,#_KD32;
	RET;

DISP_END:	
	RET
	
	
;==================================================================================
;Function Module:LED_SHOW
;Input:
;Output:
;Internal Data:
;Fuction:count the puls,equ
; =================================================================================	

LED_SHOW:
	MOV A,#00000000B;
	MOV P5,A;
	MOV P4,A;
	
	MOV A,KEY_VALUE;
	ADD A,#0;
	ADJBA ;
	MOV KEY_OUT,A;
	AND A,#00001111B;
	MOV KEY_IN,A;
	MOV A,KEY_OUT;
	ROR A,1;
	ROR A,1;
	ROR A,1;
	ROR A,1;
	AND A,#00001111B;
	MOV KEY_OUT,A;
	MOVW	HL,#LED_TABLE
CIRCLE:
	MOV A,#11101111B;
	MOV P5,A;
	MOV A,KEY_IN;
	MOV B,A;
	MOV A,[HL+B];
	MOV P4,A;
	MOV A,#0;
	MOV P4,A;
	MOV A,#11011111B;
	MOV P5,A;
	MOV A,KEY_OUT;
	MOV B,A;
	MOV A,[HL+B];
	MOV P4,A;
	MOV A,#0;
	MOV P4,A;
	
	BR  CIRCLE
LED_END:
	RET
;==================================================================================
;Function Module:LED_TABLE
;Input:
;Output:
;Internal Data:
;Fuction:count the puls,equ
; =================================================================================	

LED_TABLE:
    DB 03FH
    DB 006H
    DB 05BH
    DB 04FH
    DB 066H
    DB 06DH
    DB 07DH
    DB 007H
    DB 07FH
    DB 06FH

	

END

⌨️ 快捷键说明

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