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

📄 xnew

📁 新的键盘控制步进电机精度高的程序
💻
字号:
;步进电机控制程序
;**************************************************************************
;主程序
             ORG 0000H
             LJMP MAIN
             ORG 0013H                    ;INT1的中断入口
             LJMP PINT1
             ORG 0100H
MAIN:        CLR F0                       ;清中断发生标志
             MOV SP,#60H
             MOV DPTR,#8FFFH              ;8279初始化清除命令
             MOV A,#0D1H
	     MOVX @DPTR,A
WAIT:        MOVX A,@DPTR                 ;等8279清除结束
             JB ACC.7,WAIT
	     MOV A,#00                    ;8279送方式命令
	     MOVX @DPTR,A
	     MOV A,#34H                   ;fosc=12Mhz时钟编程命令
	     MOVX @DPTR,A
	     SETB IT1                     ;外部中断,下降沿触发
	     SETB EA                      ;开总中断
	     SETB EX1                     ;允许外部中断1中断
LOOP:        JNB F0,LOOP                  ;判中断是否发生?
LOOP1:       MOV A,R0                     ;取出键值
             CJNE A,#00H,LOOP2            ;是正转键吗?非转LOOP2
LP0:         MOV R3,#00H
LP1:         MOV DPTR,#TABLE              ;控制字首地址
             MOV A,R3                     ;查表偏移量送A
             MOVC A,@A+DPTR               ;查表取控制字
             JZ LP0                       ;转完八拍
             MOV P1,A                     ;控制字送P1口
             ACALL DELAY                  ;延时
             INC R3                       ;偏移量+1(拍数加1)
             AJMP LP1
             RET
LOOP2:       MOV A, R0                    ;取出键值
             CJNE A,#01H,LOOP3            ;是反转键吗?非转LOOP3
LP2:         MOV R3,#00H
             MOV A,R3                     ;查表偏移量送A
             ADD A,#09H                   ;修正偏移量,查反向控制字
             MOV R3,A                     ;偏移量保存在R3中
             AJMP LP1	    
LOOP3:       MOV A, R0                    ;取出键值
             CJNE A,#02H,LOOP             ;是停止键吗?否转PINT1
	     MOV P1,#00H                  ;是则停转
	     CLR F0
             AJMP LOOP                     
DELAY:       MOV R7,#20H                  ;延时子程序
   D1:       MOV R6,#248
             DJNZ R6,$
	     DJNZ R7,D1
	     RET
;**************************键输入中断服务程序*********************************
PINT1:	     CLR EA                       ;关中断
             PUSH ACC
             ;PUSH PSW                     ;入栈保护
             ;PUSH DPH
             ;PUSH DPL
             MOV DPTR,#8FFFH              ;向命令口写入读键盘RAM
             MOV A,#40H                    
             MOVX @DPTR,A
             MOV DPTR,#8FFEH              ;读入键值
             MOVX A,@DPTR                 
             MOV R0,A                     ;键值暂存入R0  
PRI1:        ;POP DPL                      ;出栈恢复
             ;POP DPH
             ;POP PSW
             POP ACC
             SETB F0                      ;置中断标志
             SETB EA                      ;开中断
             RETI             
;/////////////////////////////////////////////////////////////////////////////
TABLE:       DB 10H,30H,20H,60H,40H,0C0H,80H,90H,00H  ;正转
             DB 10H,90H,80H,0C0H,40H,60H,20H,30H,00H  ;反转
	     END




⌨️ 快捷键说明

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