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

📄 szj.asm

📁 甩脂机程序
💻 ASM
字号:
;甩脂机程序
;--------------------------
BBM BIT P3.7         ;
G   BIT P3.4
RCK BIT P3.5
OUTPWM BIT P1.0       ;PWM送出
WKEY BIT 20H.0       ;键盘位
WG   BIT 20H.1       ;G 使能位
WPWM BIT 20H.2       ;PWM状态位
MI   BIT 20H.3       ;1mS信号送出
WSTAR BIT 20H.4      ;启动标志位 0为启动
WSZ   BIT 20H.5      ;设置位 0为设置过
SUO   BIT 20H.6      ;闪烁控制位,0  闪烁
WMSTOP BIT 20H.7     ;PWM 关断  0  开

MODE  EQU  37H        ;模式
JS0    EQU  38H
PWML   EQU  39H
PWMH   EQU  3AH
KEY    EQU  3BH
DAW    EQU  3CH      ;挡位
TM    EQU  3DH      ;时间
MJS   EQU  3EH     ;0.1秒计数
;--------------------------
            ORG 0000H
            AJMP MAIN
            ORG 0003H
            LJMP TIM0
            ORG 0013H
            LJMP PWM
            ORG 0030H
MAIN:
           MOV SP,#60H
           MOV P1,#0FFH
           MOV P3,#0FFH
           MOV TMOD,#11H
           MOV TL0,#0FEH            ;显示扫描
           MOV TH0,#0FEH
           MOV TL1,#7EH
           MOV TH1,#0FFH
           MOV IE,#00001000B        ;设PWM中断优先
           SETB  EA
           SETB ET0
           SETB ET1

           MOV MODE,#00H
           SETB WKEY
           MOV 30H,#7FH              ;8
           MOV 31H,#7FH              ;8
           MOV 32H,#3FH              ;0
           MOV 33H,#3FH
           MOV 34H,#3FH
           MOV 35H,#3FH
           MOV 36H,#3FH

           MOV JS0,#0FFH
           CLR WG
           SETB MI
           SETB TR0
           LCALL DI
           MOV JS0,#00H
           MOV MJS,#100             ;0.1S计数
;----------------------------
MAIN0:
          JNB P1.1,MAIN1
          DJNZ JS0,MAIN2
          SETB WG
          MOV 30H,#70H  ;显示 1-   出错
          MOV 31H,#70H
          LCALL GSTOP
          LJMP MAIN2

MAIN1:    MOV JS0,#00H
          CLR  WG
          SETB WMSTOP
MAIN2:
          MOV A,MODE
          MOV B,#03H
          MUL AB
          MOV DPTR,#TABMODE
          JMP @A+DPTR
TABMODE:  LJMP M88D
          LJMP MP1
          LJMP MP2
          LJMP MP3
          LJMP M1D
;-------------------------------
M88D:
          JB SUO,RSUO



RSUO:
;-------------------------------
MP1:
MP2:
MP3:
M1D:
          LJMP MAIN0
;****************************
TIM0:      PUSH 00H
           PUSH 01H
           PUSH 02H
           PUSH A
           PUSH B
           LCALL XIANS     ;显示扫描
           LCALL RDKEY     ;键盘扫描
           MOV TL0,#0CFH
           MOV TH0,#0BEH
           POP B
           POP A
           POP 02H
           POP 01H
           POP 00H
           RETI
;-----------------------------------
;显示
XIANS:
            MOV R0,#30H
            MOV R2,#02H
            CLR A
            CLR B
            LCALL WIT595
            CLR G
            CLR RCK
            NOP
            NOP
            SETB RCK
            NOP
            SETB G

XIANS0:     MOV A,@R0
            MOV B,R2
            LCALL WIT595
            CLR G
            CLR RCK
            NOP
            NOP
            SETB RCK
            NOP
            SETB G
            LCALL YANS
            CLR C
            MOV A,R2
            RLC A
            MOV R2,A
            INC R0
            CJNE R0,#37H,XIANS0
            CLR A
            CLR B
            LCALL WIT595
            CLR G
            CLR RCK
            NOP
            NOP
            SETB RCK
            NOP
            SETB G
            RET
;-----------------------------
;写74HC595
WIT595:     MOV SBUF,A
            NOP
            JNB TI,$
            CLR TI
            MOV SBUF,B
            NOP
            JNB TI,$
            CLR TI
            RET
;-----------------------------------
;读键盘
RDKEY:
            MOV P1,#0FFH
            NOP
            MOV A,P1
            ORL A,#03H
            CJNE A,#0FFH,RDKEY0         ;无键
            SETB WKEY
HRDKEY:     LJMP RRDKEY
RDKEY0:
            MOV B,A
            MOV P1,#0FFH
            LCALL YANS
            MOV A,P1
            ORL A,#03H
            CJNE A,B,HRDKEY             ;无键
            JNB WKEY,HRDKEY             ;键没有放开,不做出来
            JNB ACC.2,STOP
            JNB ACC.3,STAR
            JNB ACC.4,QEHN
            JNB ACC.5,TIMINC
            JNB ACC.6,KEYINC
            JNB ACC.7,KEYDEC
            AJMP HRDKEY

KEYDEC:     LJMP HRDKEY

STOP:       MOV KEY,#01H                     ;停止
            CLR TR1

            CLR WKEY
            LJMP HRDKEY
     ;-------------------------
STAR:
            MOV KEY,#02H                      ;开始
            JB WG,STAR2                       ;判断G是否正常
            MOV A,MODE
            CJNE A,#00H,STAR0                 ;M1
            CLR WSTAR                         ;启动位
            JB WSZ,YSHEZ                      ;有无设置 1为设置过
            MOV DAW,#01H                      ;默认状态
            MOV TM,#0AH
YSHEZ:      LCALL JISPWM                   ;调PWM计算程序
            CLR OUTPWM
            SETB TR1                       ;启动PWM
            LJMP STAR2
      ;-----------------------
STAR0:      CJNE A,#04H,STAR1              ;"1"
            LJMP STAR2
      ;--------------------------
STAR1:      LCALL MPD                      ;调P模式处理程序
            CLR WSTAR
            CLR OUTPWM
            SETB TR1
;-----------------------------------
STAR2:      CLR WKEY                       ;键盘位
            LJMP RRDKEY
 ;**********************************************88
QEHN:       ;MOV KEY,#03H                      ;模式切换
            JNB WSTAR,QEHN0                   ;在启动状态下,无效
            INC MODE
            MOV A,MODE
            CJNE  A,#05H,QEHN0
            MOV MODE,#00H
QEHN0:      CLR WKEY
            LJMP RRDKEY
 ;*************************************************
TIMINC:    ; MOV KEY,#04H                      ;时间加
            MOV A,MODE
            CJNE A,#04H,TIMINC0
            ;-----                                  ;计算程序

TIMINC0:    CJNE A,#00H,TIMINC1
            CLR WSZ
            AJMP TIMC
                                    ;设置过标志位
TIMINC1:    JNB WSTAR,TIMC0         ;在P模式下,启动,不能设置
TIMC:       CLR SUO                 ;闪烁标志
            INC TM
            MOV A,TM
            CJNE A,#0BH,TIMC0
            MOV TM,#01H
TIMC0:
           CLR WKEY
           LJMP RRDKEY
   ;----------------------------
KEYINC:    ;MOV KEY,#05H                       ;加键
           MOV A,MODE
           CJNE A,#00H,KEYINC0
           SETB WSZ
           INC DAW
           MOV A,DAW
           CJNE A,#21,KINC0
           MOV DAW,#01H
   KINC0:  LCALL JISPWM
KEYINC0:   CJNE A,#04H,KEYINC1
           ;------    ;计算程序
KEYINC1:
           CLR WKEY
           LJMP RRDKEY
     ;-----------------------------
HKEYDEC:     ;MOV KEY,#06H                      ;减键
            MOV A,MODE
            CJNE A,#00H,KEYDEC0
            SETB WSZ
            DEC DAW
            MOV A,DAW
            CJNE A,#00H,KDEC0
            MOV DAW,#20
     KDEC0:LCALL JISPWM
KEYDEC0:     CJNE A,#04H,KEYDEC1
          ;------    ;计算程序
KEYDEC1:
            CLR WKEY
            LJMP RRDKEY
     ;------------------------------
NRDKEY:     MOV KEY,#00H
RRDKEY:
            RET
;------------------------------------
YANS:     PUSH A
          MOV A,#0FFH
   YANS0: NOP
          DEC A
          JZ YANS0
          POP A
          RET
;************************************
PWM:    PUSH A
        PUSH PSW
        JNB WPWM,TPL
        JNB WMSTOP,PWM0         ;WMSTOP="0",关PWM
        CLR TR1
        LJMP RRR
PWM0:
        SETB OUTPWM
        MOV A,PWML      ;1MS - PWM
        CLR C
        SUBB A,#18H
        MOV TL1,A
        MOV A,PWMH
        SUBB A,#0FCH
        MOV TH1,A
        CLR C
        CLR A
        SUBB A,TL0
        MOV TL0,A
        CLR A
        SUBB A,TH0
        MOV TH0,A
        AJMP RRR
TPL:                     ;0输出状态
        CLR OUTPWM
        DJNZ MJS,TPL0
        CLR MI           ;0.1S
        MOV MJS,#64H
TPL0:
        MOV TL1,PWML
        MOV TH1,PWMH
RRR:    POP PSW
        POP A
        RETI
;-----------------------------------
JISPWM: MOV A,DAW            ;挡位计算
        MOV B,#42
        MUL AB
        CLR C
        MOV R1,A
        MOV A,#0A8H
        SUBB A,R1
        MOV PWML,A
        MOV A,#0FFH
        SUBB A,B
        MOV PWMH,A
        RET
;-----------------------------------
MPD:    MOV A,MODE             ;P 模式档位计算
        CJNE A,#01H,MPD0
        MOV DPTR,#TBP1
        AJMP MPD3
MPD0:   CJNE A,#02H,MPD1
        MOV DPTR,#TBP2
        AJMP MPD3
MPD1:   CJNE A,#03H,RMPD
        MOV DPTR,#TBP3
MPD3:   MOV A,TM
        MOVC A,@A+DPTR
        MOV DAW,A     ;挡位显示
        LCALL JISPWM
RMPD:   RET
TBP1:  DB 06H,06H,0AH,10H,0EH,0CH,0AH,08H,06H,04H,02H
TBP2:  DB 06H,06H,08H,0AH,0EH,06H,05H,04H,03H,02H,01H
TBP3:  DB 0AH,0AH,04H,10H,04H,10H,04H,0AH,04H,0AH,04H
;-----------------------------------
GSTOP:        ;出错停止程序
         CLR WMSTOP

         RET

;------------------------------------
DI:     SETB BBM             ;滴---
        MOV R2,#0FH
DI0:    LCALL YANS
        DJNZ R2,DI0
        CLR BBM
        RET
;-----------------------------------
            END
;------------------------------------

⌨️ 快捷键说明

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