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

📄 hdasghd.asm

📁 That step-by-step electric motor the step-by-step electric motor assembler program , comparison have
💻 ASM
📖 第 1 页 / 共 5 页
字号:
           NOP
           SETB    SCL
           NOP
           NOP
           NOP
           NOP
           NOP
           CLR     SCL
           DJNZ    BITCNT,SENTB  ;数据位计数器
           NOP
           NOP
           nop
           SETB   SDA
           NOP
           NOP
           nop
           SETB   SCL
           NOP
           NOP
           nop
           CLR    F0
           JNB    SDA,ACKEND
           SETB   F0
ACKEND:    NOP
           CLR    SCL
           nop
           RET
;--------------------
;NAME:RCVBYTE  ;字节数据接收子程序
;--------------------
RCVBYTE:   SETB  SDA
           MOV   BITCNT,#08H  ;数据位计数器
RCV:       nop
           NOP
           CLR   SCL
           NOP
           nop
           NOP
           NOP
           NOP
           NOP
           SETB  SCL
           NOP
           NOP
           nop
           CLR   C
           JNB   SDA,RCV0
           SETB  C
RCV0:      RLC   A
           NOP
           NOP
           nop
           DJNZ  BITCNT,RCV  ;数据位计数器
           CLR   SCL
           NOP
           NOP
           nop
           NOP
           CLR   SDA
           JNB   ACK,SENTACKB ;I2C器件非应答信号
           SETB  SDA
SENTACKB:  nop
           NOP
           NOP
           SETB  SCL
           NOP
           NOP
           NOP
           NOP
           NOP
           CLR   SCL
           CLR   ACK ;I2C器件非应答信号
           RET
;**********************************************************************

;*************************显示*************************************************************
;==========================================================
;BCDH功能:单字节BCD码整数转换成单字节十六进制整数
;入口条件:待转换的单字节BCD码整数在累加器A中。
;出口信息:转换后的单字节十六进制整数仍在累加器A中。
;影响资源:PSW、A、B、R4    堆栈需求:  2字节
BCDH:	MOV	B,#10H	;分离十位和个位
	DIV	AB
	MOV	R4,B	;暂存个位
	MOV	B,#10	;将十位转换成十六进制
	MUL	AB
	ADD	A,R4	;按十六进制加上个位
	RET
;==================================================================
;========================单字节十六进制整数转BCD==================
;标号:HBCD1  功能:单字节十六进制整数转换成单字节BCD码整数
;入口条件:待转换的单字节十六进制整数在累加器A中。
;出口信息:转换后的BCD码整数(十位和个位)仍在累加器A中,百位在R3中。
;影响资源:PSW、A、B、R3    堆栈需求:  2字节
HBCD1:	MOV	B,#100	;;分离出百位,存放在R3中
	DIV	AB
	MOV	R3,A
	MOV	A,#10	;;余数继续分离十位和个位
	XCH	A,B
	DIV	AB
	SWAP	A
	ORL	A,B	;;将十位和个位拼装成BCD码
	RET
;=========================================================================

;==========================================================
;标号:  BH2   功能:双字节BCD码整数转换成双字节十六进制整数
;入口条件:待转换的双字节BCD码整数在R2、R3中。
;出口信息:转换后的双字节十六进制整数仍在R2、R3中。
;影响资源:PSW、A、B、R2、R3、R4    堆栈需求:  4字节
BH2:	MOV	A,R3	;将低字节转换成十六进制
	LCALL	BCDH
	MOV	R3,A
	MOV	A,R2	;将高字节转换成十六进制
	LCALL	BCDH
	MOV	B,#100	;扩大一百倍
	MUL	AB
	ADD	A,R3	;和低字节按十六进制相加
	MOV	R3,A
	CLR	A
	ADDC	A,B
	MOV	R2,A
	RET
;===========================================================

;==============================显示2字节BCD数=====================
;DP2N,显示2字节BCD数,2字节BCD数直接以BCD码的方式存放在内存单元中
;入口条件:高字节在R4,低字节在R5
DP2N:   NOP
        ;-----------   ;十万位
        MOV A , #0FFH;全灭
        MOV SBUF , A
        CALL DEL20US
        ;-----------   ;万位
        MOV A , #0FFH;全灭
        MOV SBUF , A
        CALL DEL20US
        ;-----------   ;千位
        MOV A , #0FFH;全灭
        MOV SBUF , A
        CALL DEL20US
        ;-----------   ;百位
        MOV A , R4
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;---------      ;十位
        MOV A , R5
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;--------------  ;个位
        MOV A , R5
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;--------------
        RET
;===================================================================

;==============================显示3字节BCD数=====================
;3字节BCD数直接以BCD码的方式存放在内存单元中
;入口条件:高字节在R3,中字节在R4,低字节在R5
DP3N:   NOP
        ;-----------   ;十万位
        MOV A , R3
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;-----------   ;万位
        MOV A , R3
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;-----------   ;千位
        MOV A , R4
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;-----------   ;百位
        MOV A , R4
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;---------      ;十位
        MOV A , R5
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;--------------  ;个位
        MOV A , R5
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        ;--------------
        RET
;=============================================================

;=========================显示部分3字节BCD数=====================
;3字节BCD数直接以BCD码的方式存放在内存单元中
;入口条件:高字节在R3,中字节在R4,低字节在R5,不显示的位在R6中
DPBF3N: NOP
        CALL DFLB6
        CALL DFLB5
        CALL DFLB4
        CALL DFLB3
        CALL DFLB2
        CALL DFLB1
        RET
;====================================
DFLB6:  CJNE R6 , #6 , DFLB6A
        MOV A , #0FFH
        MOV SBUF , A
        CALL DEL20US
        RET
DFLB6A: NOP ;-----------   ;十万位
        MOV A , R3
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        RET
        ;----------------------------------
DFLB5:  CJNE R6 , #5 , DFLB5A
        MOV A , #0FFH
        MOV SBUF , A
        CALL DEL20US
        RET
DFLB5A: NOP
        ;-----------   ;万位
        MOV A , R3
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        RET
        ;---------------------------------

DFLB4:  CJNE R6 , #4 , DFLB4A
        MOV A , #0FFH
        MOV SBUF , A
        CALL DEL20US
        RET
DFLB4A: NOP
        ;-----------   ;千位
        MOV A , R4
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        RET
        ;----------------------------------

DFLB3:  CJNE R6 , #3 , DFLB3A
        MOV A , #0FFH
        MOV SBUF , A
        CALL DEL20US
        RET
DFLB3A: NOP
        ;-----------   ;百位
        MOV A , R4
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        RET
        ;----------------------------------
DFLB2:  CJNE R6 , #2 , DFLB2A
        MOV A , #0FFH
        MOV SBUF , A
        CALL DEL20US
        RET
DFLB2A: NOP
        ;---------      ;十位
        MOV A , R5
        ANL A , #11110000B
        SWAP A
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        RET
        ;------------------------------------
DFLB1:  CJNE R6 , #1 , DFLB1A
        MOV A , #0FFH
        MOV SBUF , A
        CALL DEL20US
        RET
DFLB1A: NOP
        ;--------------  ;个位
        MOV A , R5
        ANL A , #00001111B
        MOV DPTR , #DISPTAB
        MOVC A , @A+DPTR
        MOV SBUF , A
        CALL DEL20US
        RET
;=============================================================

;##################显示指示灯(6只小灯LRUN、L1~L5)##########
;3 移位寄存器方式串行发送时时钟高电平状态下进行数据发送准备在移位脉冲的下降沿将数据发送出去
;4 移位寄存器方式串行接收时在移位脉冲低电平检测串行数据线上的状态并接收该数
;VRXD 数据线以替代 RXD,即P3.6
;VTXD 时钟线以替代 TXD,即P3.5
;=========以下为发送显示指示灯的程序(发送字节数据入BITDISP中,占用R3,A)==========
DISPLED:MOV R3 , #08H		;一帧中的发送位数8
        MOV A , BITDISP
TSTA:	MOV C , ACC.0
	MOV VDATA , C 		;发送1/0
        NOP
	CLR VCLK
        NOP
        NOP
	SETB VCLK
        NOP
	RR A	 		;发送完一位指向下一位
	DJNZ R3 , TSTA 		;一帧发送完毕未完继续
	RET
;====================================================

;####################################################
;================DISPFSET======================
;显示TI及TI中内容,TIL放R3中,TIH放R4中 ,I放R5中,位放R6,TI放R7
DISPFSET:  CJNE R7,#00H,DISPFT1
;-----------显示循环数---------------
;入口信息:三字节的循环数BCD码数在R3、R4、R5中。
           MOV R3 , FLOOPNUMH;
           MOV R4 , FLOOPNUMM;
           MOV R5 , FLOOPNUML;
           JB FLAGT500 ,  DFL;DISP FIRST LOOP NUMBER
           CALL DPBF3N
           RET
DFL:       CALL DP3N ;调显示三字节十六进制数 ,显示状态1循环数
           RET
;-----------------------------
DISPFT1:   CJNE R7,#01H,DISPFT2
           MOV R5 , #01H;I放R5中
           MOV R0 , #FT1H
           MOV A , @R0
           MOV R4 , A
           MOV R0 , #FT1L
           MOV A , @R0
           MOV R3 , A
           JB FLAGT500 ,  DFT1
           CALL DBFTI
           RET
DFT1:      CALL DTI
           RET
DISPFT2:   CJNE R7,#02H,DISPFT3
           MOV R5 , #02H;显示TI及TI中内容,TIL放R3中,TIH放R4中 ,I放R5中,位放R6,TI放R7
           MOV R0 , #FT2H
           MOV A , @R0
           MOV R4 , A
           MOV R0 , #FT2L
           MOV A , @R0
           MOV R3 , A
           JB FLAGT500 ,  DFT2
           CALL DBFTI
           RET
DFT2:      CALL DTI
           RET
DISPFT3:   CJNE R7,#03H,DISPFT4
           MOV R5 , #03H;显示TI及TI中内容,TIL放R3中,TIH放R4中 ,I放R5中,位放R6,TI放R7
           MOV R0 , #FT3H
           MOV A , @R0
           MOV R4 , A
           MOV R0 , #FT3L
           MOV A , @R0
           MOV R3 , A
           JB FLAGT500 ,  DFT3
           CALL DBFTI
           RET
DFT3:      CALL DTI
           RET
DISPFT4:   CJNE R7,#04H,DISPFT5
           MOV R5 , #04H;显示TI及TI中内容,TIL放R3中,TIH放R4中 ,I放R5中,位放R6,TI放R7
           MOV R0 , #FT4H
           MOV A , @R0
           MOV R4 , A
           MOV R0 , #FT4L
           MOV A , @R0
           MOV R3 , A
           JB FLAGT500 ,  DFT4
           CALL DBFTI
           RET
DFT4:      CALL DTI
           RET
DISPFT5:   CJNE R7,#05H,DISPFT6
           MOV R5 , #05H;显示TI及TI中内容,TIL放R3中,TIH放R4中 ,I放R5中,位放R6,TI放R7
           MOV R0 , #FT5H
           MOV A , @R0
           MOV R4 , A
           MOV R0 , #FT5L
           MOV A , @R0
           MOV R3 , A
           JB FLAGT500 ,  DFT5
           CALL DBFTI
           RET
DFT5:      CALL DTI
           RET
DISPFT6:   CJNE R7,#06H,DISPFT7
           MOV R5 , #06H;显示TI及TI中内容,TIL放R3中,TIH放R4中 ,I放R5中,位放R6,TI放R7

⌨️ 快捷键说明

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