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

📄 hdasghd.asm

📁 That step-by-step electric motor the step-by-step electric motor assembler program , comparison have
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;放每次修改日期:---------2005-04-04-07-------------
;---------------------------
VDATA   BIT  P0.6  ;VRXD 数据线以替代 RXD,即P3.6
VCLK    BIT  P0.5  ;VTXD 时钟线以替代 TXD,即P3.7
S1      BIT P0.4
S2      BIT P0.3
S3      BIT P0.2
S4      BIT P0.1
S5      BIT P0.0
;---------------------------
FF1     BIT P1.0
FF2     BIT P1.1
FF3     BIT P1.2
SPEAK   BIT P1.3
LEDT1   BIT P1.4;
LEDT2   BIT P1.5;
LEDT3   BIT P1.6;
RUNK    BIT P0.7;
;-----------------------------
ADDK    BIT P2.0;
NEXTK   BIT P2.1;
SETK    BIT P2.2;
LOOKK   BIT P2.3;
RESK    BIT P2.4;
SELK    BIT P2.5;
STOPK   BIT P2.6;
CLRK    BIT P2.7;
;----------------------------------
;-----------------------------------
T100MS  DATA 08H   ;100MS单元
T1S     DATA 09H   ;1S单元;放计时时间值
T20     DATA 0AH   ;50ms*20=1s
DELA    DATA 0BH   ;供延时用寄存器
DELB    DATA 0CH   ;供延时用寄存器
DELC    DATA 0DH   ;供延时用寄存器
DTIMES  DATA 0EH   ;供延时20机器周期用
T10     DATA 0FH   ;T10单元进10 次
;-----------------------------------
;-------------------------------
BITDIF  DATA 20H
T1S50   BIT BITDIF.0;
PASS    BIT BITDIF.1;放PASS的值
FLAG    BIT BITDIF.2;
FLAGDT2 BIT BITDIF.3;状态2延时T4到否的标志
FLAGDT3 BIT BITDIF.4;状态2延时T2到否的标志
FLAGDT4 BIT BITDIF.5;状态2延时T2+T3到否的标志
FLAGF1  BIT BITDIF.6;放F1状态
FLAGF2  BIT BITDIF.7;放F1状态
;-----------------------------------
;------------------------------------
BITDISP DATA 21H
LED5    BIT BITDISP.2
LED4    BIT BITDISP.3
LED3    BIT BITDISP.4
LED2    BIT BITDISP.5
LED1    BIT BITDISP.6
LEDRUN  BIT BITDISP.7
;------------------------------------
;-------------------------------------
FLAGSRT   DATA 22H ;FLAG SECOND RUN TI
;ACK     BIT  FLAGSRT.0;I2C器件非应答信号;---此位以被占用----
FLAGSRT2  BIT FLAGSRT.3;状态2延时T2第一次标志
FLAGSRT3  BIT FLAGSRT.4;状态2延时T3第一次标志
FLAGSRT4  BIT FLAGSRT.5;状态2延时T4第一次标志
FLAGT500  BIT FLAGSRT.6;延时500MS反转标志
;------------------------------------------
;--------------I2C------------------
SLVADR  DATA 0A0H    ;为24C04地址,第一页256字节为A0,第二页256字节为A2
BITCNT  DATA 26H      ;数据位计数器
ADDR    DATA 27H      ;被控器单元地址,即写入24C04的地址(页内256byte)
SDA     BIT  P3.5     ;I2C器件的数据线
SCL     BIT  P3.4     ;I2C器件的时钟线
ACK     BIT  FLAGSRT.0;I2C器件非应答信号
;ACK    BIT  BITDIF.6;I2C器件非应答信号;---与FLAGF1  BIT BITDIF.6;放F1状态重合----
;-------------------------------------

;--------------LOOP,RUN中放BCD码-----------------------
FRUNNUML   DATA 30H
FRUNNUMM   DATA 31H
FRUNNUMH   DATA 32H
FLOOPNUML  DATA 33H
FLOOPNUMM  DATA 34H
FLOOPNUMH  DATA 35H
;------------------------
GUODU1   DATA 32H
GUODU2   DATA 33H
GUODU3   DATA 34H
GUODU4   DATA 35H
;------------------------
SRUNNUML   DATA 3AH
SRUNNUMM   DATA 3BH
SRUNNUMH   DATA 3CH
SLOOPNUML  DATA 3DH
SLOOPNUMM  DATA 3EH
SLOOPNUMH  DATA 3FH
;-----------放BCD码-----------------
LITH1L      DATA 41H
LITH1M      DATA 42H
LITH1H      DATA 43H
LITH2L      DATA 44H
LITH2M      DATA 45H
LITH2H      DATA 46H
LAGH1L      DATA 47H
LAGH1M      DATA 48H
LAGH1H      DATA 49H
LAGH2L      DATA 4AH
LAGH2M      DATA 4BH
LAGH2H      DATA 4CH
LAGKL       DATA 4DH
LAGKM       DATA 4EH
LAGKH       DATA 4FH
;-----------放BCD码----------------
LITHHL       DATA 50H
LITHHH       DATA 51H
LAGHHL       DATA 52H
LAGHHH       DATA 53H
LAGKKL       DATA 54H
LAGKKH       DATA 55H
LITHL1L      DATA 56H
LITHL1H      DATA 57H
LITHL2L      DATA 58H
LITHL2H      DATA 59H
LAGHL1L      DATA 5AH
LAGHL1H      DATA 5BH
LAGHL2L      DATA 5CH
LAGHL2H      DATA 5DH
KLL          DATA 5EH
KLH          DATA 5FH
;---------TI中放BCD码--------------------
FT1L     DATA 80H
FT1H     DATA 81H
FT2L     DATA 82H
FT2H     DATA 83H
FT3L     DATA 84H
FT3H     DATA 85H
FT4L     DATA 86H
FT4H     DATA 87H
FT5L     DATA 88H
FT5H     DATA 89H
FT6L     DATA 8AH
FT6H     DATA 8BH
FT7L     DATA 8CH
FT7H     DATA 8DH
FT8L     DATA 8EH
FT8H     DATA 8FH
;------------------------
;SLVADR  DATA 0A0H    ;为24C04地址,第一页256字节为A0,第二页256字节为A2
;-----------------------
ST1L     DATA 0A1H
ST1H     DATA 0A2H
ST2L     DATA 0A3H
ST2H     DATA 0A4H
ST3L     DATA 0A5H
ST3H     DATA 0A6H
ST4L     DATA 0A7H
ST4H     DATA 0A8H
ST5L     DATA 0A9H
ST5H     DATA 0AAH
ST6L     DATA 0ABH
ST6H     DATA 0ACH
ST7L     DATA 0ADH
ST7H     DATA 0AEH
ST8L     DATA 0AFH
ST8H     DATA 0B0H
ST9L     DATA 0B1H
ST9H     DATA 0B2H
STAL     DATA 0B3H
STAH     DATA 0B4H
;-----------------------
TT1L     DATA 0C0H
TT1H     DATA 0C1H
TT2L     DATA 0C2H
TT2H     DATA 0C3H
TT3L     DATA 0C4H
TT3H     DATA 0C5H
TT4L     DATA 0C6H
TT4H     DATA 0C7H
TT5L     DATA 0C8H
TT5H     DATA 0C9H
TT6L     DATA 0CAH
TT6H     DATA 0CBH
TT7L     DATA 0CCH
TT7H     DATA 0CDH
;----------------------
TTL      DATA 0CEH
TTH      DATA 0CFH
;---------------------------------------
;**************跳转到主程序*****************
       ORG 0000H
       JMP MAIN
       ORG 0003H
       JMP WI0
       ORG 001BH
       JMP T1
       
;*******************************************

;***************中断************************
       ORG 0050H
T1:    MOV   TH1 , #3CH   ;50MS
       MOV   TL1 , #0B0H  ;
       ;---------------
       DJNZ T10 , T1AA
       CPL  FLAGT500
       MOV T10 , #7;T10单元进5 次
T1AA:  NOP
       ;---------------
       CPL T1S50;反转标志位,0,1循环
       JB T1S50 , T1A
       INC T100MS   ;100MS计数单元,放100MS次数
T1A:   DJNZ T20 , T1B ;T20放20次循环数,减1不为零跳出
       MOV T100MS ,#00H
       INC T1S ;1S 计数单元
       MOV T20 , #20;T20单元进20 次
T1B:   RETI
;******************************************
WI0:   NOP
       RET

;****************主程序********************
        ORG 0100H
MAIN:   NOP
        MOV SP , #60H
        MOV T20 , #20
        MOV T10 , #7
        MOV T100MS , #00H
        MOV T1S , #00H
        LCALL SETUP
        NOP

MAINLOOP:   CALL FSTATE;跳到状态选择
            CALL SSTATE;
            CALL TSTATE;
            JMP  MAINLOOP;
;*****************************************
;###############初使化 ##################
SETUP:  MOV R0 , #00H
        MOV R1 , #00H
        MOV R2 , #00H
        MOV R3 , #00H
        MOV R4 , #00H
        MOV R5 , #00H
        MOV R6 , #00H
        MOV R7 , #00H

        MOV BITDISP , #00H ;小灯全灭
        CALL DISPLED
        SETB LEDT1;大灯全灭
        SETB LEDT2
        SETB LEDT3
        CLR PASS;PASSW清零
        ;----------------------
        CLR RS0 ;
        CLR RS1 ;
        ;--------------------
        ;SCON    SM0 SM1 SM2 REN TB8 RB8 TI RI
        MOV SCON , #00H        ; 串行控制
        ;TMOD   GATE C/-T M1 M0 GATE C/-T M1 M0
        MOV   TMOD, #11H       ;定时器T1工作于模式1
        ;THx TLx放定时/计数值
        MOV   TH1 , #3CH      ;50MS
        MOV   TL1 , #0B0H  ;
        ;TCON   TF1(定时器1益处中断标志) TR1(定时器运行控制位) TF0() TR0() IE1(请求标志位) IT1(外部中断请求0为下降沿1为低电平有效) IE0() IT0() (88H)
        SETB  TR1              ;启动T1记数
        ;IE   EA(开放禁止所有中断)  X  X  ES(开放禁止串行中断)  ET1(开放禁止定时器1益处中断)  EX1(开放禁止外部中断源1)  ET0  EX0
        MOV IE , #00H	       ;禁止其它中断
        SETB ET1               ;允许T1中断
        SETB EA                ;CPU开中断
        RET
;===每个数码管、指示灯依次闪亮0.2S,蜂鸣器短鸣2声0.3S==


;======================================================
;####################################################

;##########精确延时200MS##################R4=DELA;R5=DELB;R6=DELC;
DEL200: NOP                ;DELAY TIME=R6*R5*R4*2*E-6=100MS
        MOV DELC , #02H
        MOV DELB , #0BFH
        MOV DELA , #00H
DEL2001:  DJNZ DELA , $
        DJNZ DELB , DEL2001
        DJNZ DELC , DEL2001
        RET
;#########################################

;##########精确延时100MS##################
DEL100: NOP                ;DELAY TIME=R6*R5*R4*2*E-6=100MS
        MOV DELC , #1
        MOV DELB , #0BFH
        MOV DELA , #00
DEL1001:  DJNZ DELA , $
        DJNZ DELB , DEL1001
        DJNZ DELC , DEL1001
        RET
;#########################################

;##########精确延时50MS##################
DEL50: NOP                ;DELAY TIME=R6*R5*R4*2*E-6=100MS
        MOV DELC , #1
        MOV DELB , #0BFH
        MOV DELA , #00
DEL501:  DJNZ DELA , $
        DJNZ DELB , DEL501
        DJNZ DELC , DEL501
        RET
;#########################################

;##########精确延时10MS##################
DEL10: NOP                ;DELAY TIME=R6*R5*R4*2*E-6=10MS
        MOV DELC , #01H
        MOV DELB , #15H
        MOV DELA , #00H
DEL102:  DJNZ DELA , $
        DJNZ DELB , DEL102
        DJNZ DELC , DEL102
        RET
;#########################################

;##########精确延时5MS##################
DEL5: NOP                ;DELAY TIME=R6*R5*R4*2*E-6=10MS
        MOV DELC , #01H
        MOV DELB , #15H
        MOV DELA , #00H
DEL52:  DJNZ DELA , $
        DJNZ DELB , DEL52
        DJNZ DELC , DEL52
        RET
;#########################################

;##########精确延时1MS##################
DEL1: NOP                ;DELAY TIME=R6*R5*R4*2*E-6=10MS
        MOV DELC , #01H
        MOV DELB , #02H
        MOV DELA , #00H
DEL13:  DJNZ DELA , $
        DJNZ DELB , DEL13
        DJNZ DELC , DEL13
        RET
;#########################################

;*******************************I2C BUS;**************************************
;########### 发送数据程序################
;要发的数放于R0中,一次发一个,地址为:ADDR
SENDDATA:  LCALL  START
           MOV  A,#SLVADR ;为24C04地址,第一页256字节为A0,第二页256字节为A2
           LCALL SENTBYTE  ;字节数据发送子程序
           JB   F0,SENDRETURN
           MOV  A,ADDR  ;被控器单元地址,即写入24C04的地址(页内256byte)
           LCALL SENTBYTE  ;字节数据发送子程序
           JB   F0,SENDRETURN
 SENTNEXT: MOV  A,R0
           LCALL SENTBYTE
           JB   F0,SENDRETURN
           ACALL STOP
           CALL DEL10
SENDRETURN:RET

;#########################################################

;#################接收数据程序############################
;收到的数放于R0中,一次收一个,地址为:ADDR
RCVDATA:   ACALL  START
           MOV  A,#SLVADR ;为24C04地址,第一页256字节为A0,第二页256字节为A2
           ACALL SENTBYTE  ;字节数据发送子程序
           JB   F0,RCVRETURN
           MOV  A,ADDR  ;被控器单元地址,即写入24C04的地址(页内256byte)
           ACALL SENTBYTE  ;字节数据发送子程序
           JB   F0,RCVRETURN
           ACALL  START
           MOV  A,#SLVADR ;为24C04地址,第一页256字节为A0,第二页256字节为A2
           SETB ACC.0
           ACALL SENTBYTE  ;字节数据发送子程序
           JB   F0,RCVRETURN
RCVLAST:   SETB  ACK ;发非应答信号,接收完最后一个数据后发出非应答以停止接收数据
           ACALL RCVBYTE ;字节数据接收子程序
           MOV   R0,A
           ACALL STOP
RCVRETURN: RET
;#################################################
;NAME:START  起始条件
;--------------------------
 START:    SETB SDA
           NOP
           nop
           SETB SCL
           NOP
           NOP
           NOP
           NOP
           NOP
           CLR  SDA
           NOP
           NOP
           NOP
           NOP
           NOP
           CLR  SCL
           RET
;------------------------------
;NAME:STOP  停止条件
;-------------------------------
STOP:      CLR   SDA
           NOP
           nop
           SETB  SCL
           NOP
           NOP
           NOP
           NOP

           NOP
           SETB   SDA
           NOP
           NOP
           NOP

           NOP
           RET
;--------------------------------
;NAME:SENTBYTE ;字节数据发送子程序
;--------------------------------
SENTBYTE: MOV   BITCNT,#08H  ;数据位计数器
SENTB:     RLC    A
           JC     SENT1
           CLR    SDA
           SJMP   SENT
 SENT1:    SETB    SDA
           NOP
SENT:      nop

⌨️ 快捷键说明

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