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

📄 电磁铁测试3led.asm

📁 本程序为电磁铁测试程序
💻 ASM
字号:
;4*6行列扫描查键
;P3.2:__1__|__4__|__7__|__.__|打印_|__PH_|__ //P3.2~P3.5接上拉电阻
;P3.3:__2__|__5__|__8__|__0__|平值_|__PL_|__ //P2.0~P2.5为扫描输入口
;P3.4:__3__|__6__|__9__|支数_|清除_|__<__|__
;P3.5:马值_|线度_|纤维_|成熟_|确定_|__>__|__
;           |     |     |     |     |     |        
;         P2.0  P2.1  P2.2  P2.3  P2.4  P2.5                   
;
; ___   ___   ___  
;|___| |___| |___|                      
;|___|.|___|.|___|.                            
; 高     中    低  
;  ____ 10_ 18_   _   _   _   _   __
; |    |_| |_| |_| |_| |_| |_| |_|
;脉宽可调   小脉冲宽10MS低的部分16MS         
;/////////////////////////////////////////
COUNT0  EQU  25H       ;周期低位	用于脉冲周期调整的变量
COUNT1  EQU  26H	;周期高位
COUNT2  EQU  27H	;脉冲低位
COUNT3	EQU  28H	;脉冲高位
COUNT4  EQU  29H	;周期低位	用于存放脉冲周期调整变量值的暂存RAM
COUNT5  EQU  2AH	;周期高位
COUNT6  EQU  2BH	;脉冲低位
COUNT7  EQU  2CH	;脉冲高位
KEYWORD  EQU  2DH       ;储存键盘值
LEDZJBL  EQU  2EH       ;LED中间变量
JIANZHI  EQU  2FH       ;键值
LEDMCDW  EQU  30H       ;LED显示值,脉冲中低位
LEDMCGW  EQU  31H	;LED显示值,脉冲高位
LEDZQDW  EQU  32H	;LED显示值,周期中低位
LEDZQGW  EQU  33H	;LED显示值,周期高位
BUF0	 EQU  34H	;保存安键延时的值,开始为20既20MS
BUF1     EQU  35H	;
TEPBIT	 EQU  36H
KEYL	 BIT  00H	;周期调整键,为1时,周期清零,周期进入调整状态
KEYLL	 BIT  01H	;周期调整状态位,1,周期在调整中。0,周期调整结束
KEYR	 BIT  02H	;脉冲调整键,为1时,脉冲清零,脉冲进入调整状态
KEYRR	 BIT  03H	;脉冲调整状态位,1,脉冲在调整中。0,脉冲调整结束
ENTER	 BIT  04H	;确定键,周期调整好或脉冲调整好以后,只有在按下此键后才能生效

ORG 0000H
	LJMP   MAIN
ORG 0003H
	RETI
ORG 000BH
	RETI         ;定时器0中断
ORG 0013H
	RETI
ORG 001BH
	RETI
ORG 0023H
	RETI
ORG 002BH
	RETI
ORG 0030H
MAIN:
        CLR    ENTER
	SETB	P1.0	;7406	
        MOV SP,#6FH
        MOV 20h,#00H
	MOV R0,#20H
	MOV R1,#10H
QINGLIN:
	MOV @R0,#00H
	INC R0
	DJNZ R1,QINGLIN
	MOV LEDMCDW,#20H
	MOV LEDMCGW,#00H
	MOV TEPBIT,#04H
;//显示LED部分调式用
;	MOV LEDZQGW,#01H
;	MOV LEDZQDW,#23H
;	MOV LEDMCGW,#04H
;	MOV LEDMCDW,#56H
;//显示LED调试结束
LOOP:	
	;LCALL KEYWORKON
	MOV BUF0,LEDMCDW
	MOV BUF1,LEDMCGW
	LCALL DISPLAY
	NOP
        JNB       P1.1,KEY0   ;读P0.0口,若为0转KEY0
	JNB	  P1.3,KEY1	;
        JNB       P1.2,$+6   ;读P0.1口,若为0转KEY1
        LJMP       LOOP    
        LJMP       KEY2            
;功能0键处理程?
KEY0:
      LCALL      DL10MS      ;延时10毫秒消抖
      JB         P1.1,OUT0   ;P0.0为1,子程序返回(干扰)
      JNB	P1.1,$
;      MOV BUF0,LEDMCDW
;      MOV BUF1,LEDMCGW
;	CLR	ENTER		;按键标志位
;     MOV TEPBIT,#04H		;按键恢复到第一个
     MOV  A,BUF0
     CJNE A,#00H,$+11
     MOV A,BUF1
     CJNE A,#00H,$+6
     LJMP LPOUT
     CLR       P1.0        ;7406 P1.0位置1
TEP0:
     LCALL      DL1MS
     MOV  A,BUF0        ;16进制与十进制转换
     ANL  A,#0FH
     CJNE A,#00H,LP0	;周期的低四位自减,当为零后,高四位减1,同时低四位加9
     MOV  A,BUF0
     CJNE A,#00H,LP1
     MOV  A,BUF1
     CJNE A,#00H,LP2
     LJMP LPOUT
LP2:
     DJNZ BUF1,$+3
     MOV BUF0,#99H
     LJMP TEP0
LP1:
     MOV A,BUF0
     CLR C
     SUBB A,#10H
     ADD A,#09H
     MOV BUF0,A
     LJMP  TEP0
LP0:
     DJNZ BUF0,TEP0 
     MOV  A,BUF1
     CJNE A,#00H,LP2
LPOUT:
     SETB        P1.0        ;7406 20H.2位清0
     LCALL	DL30US
;     LJMP   LOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;无延时;;;;;;;;;;;;;;;;;;;;;;;;;;
     MOV	R0,#0D2H	;#0D2H
     MOV	R1,#0a0H	;#0A0H
TEP:
     CLR	P1.0	;7406
     LCALL	DL20US
     SETB	P1.0	;7406
     LCALL	DL30US
     DJNZ	R0,TEP	
     MOV	R0,#0D2H
     DJNZ	R1,TEP
OUT0:
     LJMP    LOOP   
;切换LED数码管
KEY1:
	LCALL      DL10MS      ;延时10毫秒消抖
        JB         P1.3,OUT0   ;P0.0为1,子程序返回(干扰)
        JNB	P1.3,$
;	JB	ENTER,KEY1LP0
;	SETB	ENTER
;KEY1LP1:
;	MOV	TEPBIT,#01H
;	LJMP	LOOP	
	MOV	A,TEPBIT
	RL	A
	CJNE	A,#20H,$+5
	MOV	A,#04H
	MOV	TEPBIT,A
	XRL	A,#1FH
	MOV	P2,A
	LJMP	LOOP
;KEY2调整数据
KEY2:
	LCALL      DL10MS      ;延时10毫秒消抖
        JB         P1.2,OUT0   ;P0.0为1,子程序返回(干扰)
        JNB	P1.2,$
	MOV	R6,TEPBIT
	CJNE	R6,#04H,KEY2LP1
	MOV	A,LEDMCDW
	ANL	A,#0FH
    	ADD  	A,#01H	
	CJNE	A,#0AH,KEY2LPX0
	ANL	LEDMCDW,#0F0H
	LJMP	LOOP
KEY2LPX0:
	ANL	LEDMCDW,#0F0H
	ORL	LEDMCDW,A
	LJMP	LOOP
KEY2LP1:	
	CJNE	R6,#08H,KEY2LP2
	MOV	A,LEDMCDW
	ANL	A,#0F0H
	ADD	A,#10H
	CJNE	A,#0A0H,KEY2LPX1
	ANL	LEDMCDW,#0FH
	LJMP LOOP
KEY2LPX1:
	ANL	LEDMCDW,#0FH
	ORL	LEDMCDW,A
LPX:	LJMP	LOOP	
KEY2LP2:
	CJNE	R6,#10H,LPX
	MOV	A,LEDMCGW
	ANL	A,#0FH
	ADD	A,#01H
	CJNE	A,#0AH,KEY2LPX2
	MOV	LEDMCGW,#00H
	LJMP	LOOP
KEY2LPX2:
	MOV	LEDMCGW,A
	LJMP	LOOP

DISPLAY:
	MOV R1,#LEDMCGW
DISLOOP:      
	MOV A,@R1
	ANL A,#0FH
	MOV DPTR,#DISTAB
	MOVC A,@A+DPTR
	MOV P0,A
	MOV P2,#9FH
	LCALL DL1MS
	DEC R1
        MOV A,@R1
        MOV B,A
        SWAP A
        ANL A,#0FH
        MOVC A,@A+DPTR
        MOV P0,A
        MOV P2,#5FH
        LCALL DL1MS
        MOV A,B
        ANL A,#0FH
        MOVC A,@A+DPTR
        MOV P0,A
	MOV P2,#3FH
        LCALL DL1MS
DISOUT:
	MOV P0,#00H
	MOV A,TEPBIT
	XRL A,#1FH
	MOV P2,A
	RET

DISTAB:	DB  0A0H,0F9H,0C4H,0D0H,99H,92H,82H,0F8H,80H,90H,00H	;5FH,06H,3BH,2FH,66H,6DH,7DH,07H,7FH,6FH,0FFH

           
;21:56 2006-1-1
;************;
;  延时程序  ;
;************;
;20US延时 
DL20US: MOV	COUNT0,#05H	;#05H
	NOP
LOP0:   DJNZ	COUNT0,LOP0
	RET
;30US延时子程序,执行一次时间为513微秒
DL30US: MOV       COUNT1,#09H	;#09H
LOP1: DJNZ     COUNT1,LOP1
       RET
;
;1毫秒延时子程序(调用20次0.5毫秒延时子程序)
DL1MS :MOV      COUNT2,#30H 	;#30H
LOP2: LCALL    DL20US
       DJNZ    COUNT2,LOP2
       RET
 ;5MS延时      
DL5MS: MOV      COUNT3,#05H	;#05H
LOP3:  LCALL     DL1MS
        DJNZ     COUNT3,LOP3
        RET
;6MS延时 
DL6MS: MOV      COUNT4,#06H       ;#06H
LOP4:  LCALL    DL1MS
       DJNZ     COUNT4,LOP4
       RET
;10MS延时子程序
DL10MS: MOV      COUNT5,#15H       ;#0AH
LOP5:  LCALL    DL1MS
       DJNZ     COUNT5,LOP5
       RET
;12MS延时 
DL12MS: MOV      COUNT6,#0CH       ;#0CH
LOP6:  LCALL    DL1MS
       DJNZ     COUNT6,LOP6
       RET
;18MS延时 
DL18MS: MOV      COUNT7,#12H       ;#12H
LOP7:  LCALL    DL1MS
       DJNZ     COUNT7,LOP7
       RET
END                       ;程序结束

⌨️ 快捷键说明

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