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

📄 tiaoshi1.asm

📁 步进电机控制程序:该控制软件所要实现的功能是通过控制压电陶瓷自动寻找两极间最佳放电间隙
💻 ASM
字号:
KeyValue          EQU   30H
DisplayCode       EQU   31H
ROW               EQU   32H
Column            EQU   33H
ScanCount         EQU   34H
ScanCode          EQU   35H
DisplayBuffer     EQU   36H

                  ORG    0
                  SJMP   Start

Start:
                  MOV    SP,#5FH                               ;初始化程序
                  MOV    KeyValue,#10H                         ;设定初始不显示
                  MOV    ScanCode,#0EFH                        ;设定扫描顺序
                  PUSH   ScanCode
                  MOV    ScanCount,#5
                  MOV    P3,#00H
                  MOV    R2,#00H
                  MOV    R3,#1
                  MOV    R6,#1
                  ;MOV    A,#3AH
                  ;PUSH   A
                  MOV    R1,#4                                ;缓存区清零
                  MOV    R0,#DisplayBuffer
 RegistLoop:
                  MOV    @R0,#00H
                  INC    R0
                  DJNZ   R1,RegistLoop
 Main:
              pop    ScanCode
              ;AJMP   ScanAndDisplay
  ScanAndDisplay:                                             ;键盘扫描程序

              MOV    A,ScanCode
              RR     A
              ORL    A,#0F0H
              MOV    ScanCode,A
              MOV    P3,#00H
             ;MOV    R2,A
              MOV    P1,A
              MOV    A,P1
              MOV    R5,A
              XRL    A,ScanCode
              JZ     NotKey
              ;MOV    A,R2
              ;RR     A
              ;MOV    ScanCode,A
              AJMP    HaveKey
  NotKey:                                                    ;若侦测到未有按键按下则继续扫描键盘
                ;AJMP   Delay2
                ;PUSH   ScanCode
                DJNZ   ScanCount,ScanAndDisplay
                MOV    ScanCount,#5
               ;MOV    A,#3AH
               ; PUSH   A
                MOV    ScanCode,#0EFH
                ;PUSH   ScanCode
                AJMP   ScanAndDisplay

   DECI:
                  ;pop    A
                  ;DEC    A
                  ;PUSH   A
                  MOV    R0,#35H
                  MOV    R4,#04H
                  ;PUSH   ScanCode
                  MOV    ScanCode,#0FFH
                  CLR    C
     LIU:         INC    R0
                  MOV    P3,@R0

                  MOV    A,ScanCode
                  RLC    A
                  MOV    ScanCode,A
                  MOV    P1,A
                  ;MOV   A,R2
                  ;RR    A
                  ;MOV   ScanCode,A
                  AJMP   Delay1
        PEN:      DJNZ   R4,LIU
                  POP    DisplayCode
                  PUSH   DisplayCode
                  MOV    A,DisplayCode
                  XRL    A,#77H
                  ;JZ     Main
                  JZ     DECI
                  ;AJMP   DECI
        FIJ:      DJNZ   R3,DECI
                  MOV    R3,#1
                  DJNZ   R6,FIJ
                  MOV    R6,#1
                  ;POP    DisplayCode
                  ;PUSH   DisplayCode
                  ;XRL    DisplayCode,#77H
                  ;JZ     DECI
                  AJMP   Main
HaveKey:

                  AJMP   FindKeyValue
 LOOP:            MOV    A,KeyValue
                  AJMP   Decode

 SHOW:
                  PUSH   DisplayCode
                  MOV    A,DisplayCode
                  XRL    A,#77H
                  JZ     DECI
                  POP    DisplayCode
                  MOV    DisplayBuffer,DisplayBuffer+1
                  MOV    DisplayBuffer+1,DisplayBuffer+2
                  MOV    DisplayBuffer+2,DisplayBuffer+3
                  MOV    DisplayBuffer+3,DisplayCode
                  PUSH   ScanCode
                  INC    R2
                  CJNE   R2,#3,DECI
                  ;MOV    R1,DisplayBuffer+3
                  ;MOV    A,@R1
                  MOV    A,DisplayCode
                  ADD    A,#80H
                  MOV    DisplayBuffer+3,A

                  AJMP   DECI
 FindKeyValue:
                  MOV     A,R5

 FindRow:
                   SWAP    A
                   ANL     A,#0FH
                   MOV     Row,#0
 NextRow:
                   RRC     A
                   JNC     FindColumn
                   INC     Row
                   JMP     NextRow
FindColumn:
                   MOV     A,R5
                   ANL     A,#0FH
                   MOV     Column,#0
NextColumn:
                   RRC     A
                   JNC     CalculateKeyValue
                   INC     Column
                   JMP     NextColumn
CalculateKeyValue:
                  MOV     A,Column
                  MOV     B,#4
                  MUL     AB
                  ADD     A,Row
                  MOV     KeyValue,A
                  AJMP    LOOP
Decode:
                  MOV     DPTR,#DisplayCodeTable
                  MOVC    A,@A+DPTR
                  MOV     DisplayCode,A
                  AJMP    SHOW
DisplayCodeTable:
                  DB      3FH                        ; 显示数字“0”
                  DB      06H                        ; 显示数字“1”
                  DB      5BH                        ; 显示数字“2”
                  DB      4FH                        ; 显示数字“3”
                  DB      66H                        ; 显示数字“4”
                  DB      6DH                        ; 显示数字“5”
                  DB      7DH                        ; 显示数字“6”
                  DB      07H                        ; 显示数字“7”
                  DB      7FH                        ; 显示数字“8”
                  DB      6FH                        ; 显示数字“9” 

⌨️ 快捷键说明

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