motor1.asm

来自「C5402汇编编写的对直流电机和步进电机进行控制的程序。」· 汇编 代码 · 共 84 行

ASM
84
字号
	.mmregs
	
SPSA1 	.set  0x0048
SPSD1	.set  0x0049

SPCR1   .set  0x0000
SPCR2   .set  0x0001
PCR     .set  0x000e

	.global _c_int00
	.def   _Motor_init
	.def   _DCM_CNRTL
    .ref   _DCM_flag
    
    .def   DcSpeed
    .def   DcSpeedSave
    .def   DcBase
    .def   DcBaseSave
    
    .data 
DcDir           .word 0
DcSpeed         .word 0
DcSpeedSave     .word 0
DcBase          .word 0x0010
DcBaseSave      .word 0x0010
	
	.text
_DCM_CNRTL:
       		CMPM    *(_DCM_flag),#0
       		BC      #_DC_ZERO,TC
       		STM     #PCR,SPSA1
       		CMPM    *(DcDir),#0x00
       		BC      #_DC_STOP,TC
       		CMPM    *(DcDir),#0x03
       		BC      #_DC_HALT,TC
       		CMPM    *(DcDir),#0x02
       		BC      #_DC_NEG,TC
       		
       		;直流电机正转
       		ORM     #0x0001,*(SPSD1)
       		NOP
       		NOP
       		B       #_DC_RET
_DC_NEG:    
			;直流电机反转
			ORM     #0x0002,*(SPSD1)
			NOP
			NOP
			B       #_DC_RET
_DC_STOP:
			;直流电机停止
			ANDM    #0xfffc,*(SPSD1)
			NOP
			NOP
			B       #_DC_RET
_DC_HALT:
			;直流电机停止
			ORM    #0x0003,*(SPSD1)
			NOP
			NOP
			B       #_DC_RET
_DC_ZERO:
			;根据标志,设置低脉冲
		    STM     #PCR,SPSA1
			ANDM    #0xfffc,*(SPSD1)
			NOP
			NOP
_DC_RET:
			RET

;配置直流电机各种动作			
_Motor_init:
			LD		#2,A
			STL     A,*(DcDir)
			LD      #8,A
			STL     A,*(DcSpeed)
			STL     A,*(DcSpeedSave)
			LD      #10,A
			STL     A,*(DcBase)
			STL     A,*(DcBaseSave)
			RET
			.end

⌨️ 快捷键说明

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