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

📄 cs_2.asm

📁 MCS-51单片机实验 39个实用实验和源码
💻 ASM
字号:
;FOR    EAT598
D0832   EQU 0F218H                                      ;0832数据口地址
D0809   EQU 0F230H                                      ;0809通道1地址
C8255   EQU 0F22BH                                      ;8255控制字口地址
D8255A  EQU 0F228H                                      ;8255 PA口地址
SPDTR   EQU 40H                                        ;速度控制值暂存器
SWITCH  EQU 44H                                        ;开关状态码暂存器
SPEED   EQU 45H                                        ;速度测量值暂存器
ZEROSPD EQU 00H                                        ;零速度对应的D/A转换数据

       ORG     0000H
       LJMP    START
       ORG     0100H
START:
       MOV     SP,#70H
       LCALL   INIT                                    ;调用初始化子程序
LPRUN:
       LCALL   CHKSWITCH                               ;调用开关状态检测子程序
       LCALL   CHKSPEED                                ;调用位置检测子程序
       SJMP    LPRUN
INIT:
       MOV     DPTR,#D0832                             ;直流电机停转
       MOV     A,#ZEROSPD
       MOVX    @DPTR,A
       MOV     SPDTR,#ZEROSPD
       MOV     DPTR,#C8255
       MOV     A,#90H
       MOVX    @DPTR,A                                  ;A口输入,C口输出
INITRET:
       RET                                              ;初始化子程序返回
CHKSWITCH:                                              ;开关状态检测子程序
       MOV     DPTR,#D8255A
       MOVX    A,@DPTR                                  ;读入开关状态
       ANL     A,#8FH                                   ;屏蔽无效位
       CJNE    A,SWITCH,$+6                             ;开关状态
       LJMP    SWITCHRET                                ;未改变则子程序返回
       MOV     SWITCH,A                                 ;保存新的开关状态值
       RLC     A                                        ;检测开关状态并作出相应处理
       JC      $+7
       MOV     DPTR,#MR
       SJMP    $+2
      
       RLC     A
       RLC     A
       RLC     A
       RLC     A
       JC      SPD4
       RLC     A
       JC      SPD3
       RLC     A
       JC      SPD2
       RLC     A
       JC      SPD1
       SJMP    SPD0
SPD4:
       MOV     A,#04H
       SJMP    DRIVE
SPD3:
       MOV     A,#03H
       SJMP    DRIVE
SPD2:
       MOV     A,#02H
       SJMP    DRIVE
SPD1:
       MOV     A,#01H
       SJMP    DRIVE
SPD0:
       MOV     A,#00H
       SJMP    DRIVE
DRIVE:
       MOVC    A,@A+DPTR
       MOV     DPTR,#D0832
       MOVX    @DPTR,A
SWITCHRET:
       RET
CHKSPEED:
       MOV     DPTR,#D0809
       MOVX    @DPTR,A                                 ;开始A/D转换
       LCALL   DELAY
       MOVX    A,@DPTR                                 ;读取转换结果
       MOV     SPEED,A                                 ;保存
       RET
DELAY:
       MOV     R2,#0FH
       MOV     R3,#0FFH
       DJNZ    R3,$
       DJNZ    R2,$-4
       RET
MR:  DB ZEROSPD,2FH,3FH,4FH,5FH
END

⌨️ 快捷键说明

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