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

📄 mc68hc08as20.asm

📁 本程序实现了对MOTOROLA08AS20单片机EEPROM的访问
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        INC DPTR
        DJNZ R5,TX
        RET
input:  jb Qrxd,$          ;2                          1.5    1.5   1.5;;;;;;;;;;;;;;;;;;;;;16

;100 NOP
        SETB  PSW.2
        MOV   R1,#30
DEL10NS:

        DJNZ  R1,DEL10NS
        NOP
        CLR   PSW.2
        lcall delay             ;2                              1.5     1.5    1.5;;;;;;;;;;;;;;;;16
        mov r3,#8                                               ;1.5     1.5    1.5;;;;;;;;;;;;;;;8
inp:    mov c,Qrxd                                              ;1                                 1.5   1.5   1.5;;;;;;;;;;;;;;;;;;;8
        rrc a                ;1                                 3   3   3;;;;;;;;;;;;;;;;;;;;;;;;;4
        lcall delay          ;2                                 1.5   1.5   1.5;;;;;;;;;;;;;;;;;;;16
        djnz r3,inp                                      ;       2   2   2;;;;;;;;;;;;;;;;;;;;;;;;12
        jnb Qrxd,$                                           ;   1.5   1.5   1.5;;;;;;;;;;;;;;;;;;16
         ret                                                 ;     3   3   3;;;;;;;;;;;;;;;;;;;;;;;8

DELAY:
     MOV R7,#50               ;1   ///////  (1+2x+2)0.6us   50us    1.5 1.5;;;;;;;;;;;;;;;;;;;;8
     nop
     nop
MS:  DJNZ R7,MS            ;2                                     2   2   2;;;;;;;;;;;;;;;;;12
     nop
     nop
     RET                      ;2                                     3   3   3;;;;;;;;;;;;;;;;;8


OUTPUT:
       CLR C     ;1                                             3   3   3
       MOV Qtxd,C       ;2                                             3   3   3
       LCALL DELAY      ;2                                             1.5   1.5   1.5
       MOV R3,#8        ;1                                             1.5   1.5   1.5
OUT:   RRC A        ;1                                             3   3   3
       MOV Qtxd,C       ;2                                             3   3   3
       LCALL DELAY      ;2                                             1.5  1.5   1.5

       DJNZ R3,OUT      ;2                                             2   2   2
       nop
       SETB C           ;1                                             3   3   3
       MOV Qtxd,C       ;2                                             3   3   3
       LCALl DELAY      ;2                                             1.5   1.5   1.5
       RET              ;2                                             3   3   3

;**********************from wangqi txd rxd to pc end***********************



 ;*************************to motorola mcu p3.0 RXD P3.1 TXD****************

;向mcu发送一个字节BAUD
;TXDBAUD:  MOV    TMOD,#20H     ;定时器设定为方式2
;          MOV    TL1,36h      ;定时器初值
;          MOV    TH1,36h      ;8位重装值
;          SETB   TR1           ;启动定时器1
;          MOV    SCON,#40H     ;串口设为方式1,REN=1  不允许接收
;          MOV    PCON,#80H     ;波特率系数选择位是1 即SMOD=1
;          MOV    SBUF,A
;WAITBAUD: JBC    TI,CONTBAUD
;          AJMP   WAITBAUD
;
;CONTBAUD:     RET
;
;从MCU接收一个字节,BAUD
;RXDBAUD:  MOV    TMOD,#20H
;          MOV    TL1,36h
;          MOV    TH1,36h
;          SETB   TR1
;          MOV    SCON,#50H     ;串口设为方式1,REN=1,允许接收
;          MOV    PCON,#80H
;          SETB   REN
;WAITT:    JBC    RI,READ
;          AJMP   WAITT
;READ:     MOV    A,SBUF
;          RET


RXDBAUD:  jb rxd,$
           lcall  delay69us
           lcall  delay158us
           mov r3,#8     ;2
in1144:     mov c,rxd     ;2
           rrc a         ;1
           lcall delay158us ;4
           djnz r3,in1144       ;3
           jnb rxd,$        ;4
           lcall  delay158us
           ret               ;2

DELAY158US:  MOV  del1,#05H ;3个30.1us
D158us1:     MOV  R7,#67H
D158us2:     DJNZ R7,D158us2  ;3个机器周期
             DJNZ del1,D158us1
             RET

TXDBAUD:
            CLR C
            MOV txd,C
            LCALL DELAY158us

            MOV R3,#8      ;2
out1144:     RRC A           ;1
            MOV txd,C       ;2                                             3   3   3
            LCALL DELAY158us      ;4                                             1.5  1.5   1.5

            DJNZ R3,out1144      ;2                                             2   2   2
            nop
            SETB C           ;1                                             3   3   3
            MOV txd,C       ;2                                             3   3   3
            LCALl DELAY158us      ;2                                             1.5   1.5   1.5
            RET              ;2                                             3   3   3




;***********************************i/0 port is a txd and rxd port   *************************************************

;14400***************************************************************************************
rxd14400:  jb rxd,$
           lcall  delay35us
           lcall  delay69us
           LCALL DELAY69us
           mov r3,#8     ;2
in144:     mov c,rxd     ;2
           rrc a         ;1
           lcall delay69us ;4
           LCALL DELAY69us
           djnz r3,in144       ;3
           jnb rxd,$        ;4
           lcall  delay69us
           LCALL DELAY69us
           ret               ;2


delay35us:  MOV  R7,#62H
d35us:      DJNZ R7,d35us  ;3个机器周期
            RET
delay69us:  mov  r7,#0c8h
d69us:      djnz  r7,d69us
            ret

txd14400:
            CLR C
            MOV txd,C
            LCALL DELAY69us
            LCALL DELAY69us

            MOV R3,#8      ;2
out144:     RRC A           ;1
            MOV txd,C       ;2                                             3   3   3
            LCALL DELAY69us      ;4                                             1.5  1.5   1.5
            LCALL DELAY69us
            
            DJNZ R3,out144      ;2                                             2   2   2
            nop
            SETB C           ;1                                             3   3   3
            MOV txd,C       ;2                                             3   3   3
            LCALl DELAY69us      ;2                                             1.5   1.5   1.5
            LCALL DELAY69us
            RET              ;2                                             3   3   3



;28800***************************************************************************************
rxd28800:  jb rxd,$
           lcall  delay17us
           lcall  delay34us
           mov r3,#8     ;2
in288:     mov c,rxd     ;2
           rrc a         ;1
           lcall delay34us ;4
           djnz r3,in288       ;3
           jnb rxd,$        ;4
           lcall  delay34us
           ret               ;2


delay34us:  MOV  R7,#71H
d34us:      DJNZ R7,d34us  ;3个机器周期
            RET
delay17us:  mov  r7,#39h
d17us:      djnz  r7,d17us
            ret


txd28800:
            CLR C
            MOV txd,C
            LCALL DELAY34us
            MOV R3,#8      ;2
out288:     RRC A           ;1
            MOV txd,C       ;2                                             3   3   3
            LCALL DELAY34us      ;4                                             1.5  1.5   1.5
            DJNZ R3,out288      ;2                                             2   2   2
            nop
            SETB C           ;1                                             3   3   3
            MOV txd,C       ;2                                             3   3   3
            LCALl DELAY34us      ;2                                             1.5   1.5   1.5
            RET              ;2                                             3   3   3



;8861***************************************************************************************
rxd8861:   jb rxd,$
           lcall  delay56us
           ;lcall  delay113us
           LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP

           mov r3,#8     ;2
in88:      mov c,rxd     ;2
           rrc a         ;1
           ;lcall delay113us ;4
           LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           djnz r3,in88       ;3
           jnb rxd,$        ;4
           ;lcall  delay113us
           LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
            ret               ;2



delay56us:  mov  r7,#0d3h
d56us:      djnz  r7,d56us
            ret


txd8861:
            CLR C
            MOV txd,C
            ;LCALL DELAY113us
            LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
            MOV R3,#8      ;2
out88:      RRC A           ;1
            MOV txd,C       ;2                                             3   3   3

            ;LCALL DELAY113us      ;4                                             1.5  1.5   1.5
            LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP

            DJNZ R3,out88      ;2                                             2   2   2
            nop
            SETB C           ;1                                             3   3   3
            MOV txd,C       ;2                                             3   3   3
            ;LCALl DELAY113us      ;2                                             1.5   1.5   1.5
            LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
            RET              ;2                                             3   3   3


;4430***************************************************************************************
rxd4430:   jb rxd,$
           ;lcall  delay112us
           LCALL   DELAY56US
           LCALL   DELAY56US


           ;lcall  delay225us

           LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           LCALL   DELAY56US
           LCALL   DELAY56US
           mov r3,#8     ;2
in44:      mov c,rxd     ;2
           rrc a         ;1

           ;lcall delay225us ;4

            LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           LCALL   DELAY56US
           LCALL   DELAY56US
           djnz r3,in44       ;3
           jnb rxd,$        ;4
           ;lcall  delay225us
            LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           LCALL   DELAY56US
           LCALL   DELAY56US
           ret
txd4430:
            CLR C
            MOV txd,C
            ;LCALL DELAY225us
             LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           LCALL   DELAY56US
           LCALL   DELAY56US
           MOV R3,#8      ;2
out44:      RRC A           ;1
            MOV txd,C       ;2                                             3   3   3
            ;LCALL DELAY225us      ;4                                             1.5  1.5   1.5
           LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           LCALL   DELAY56US
           LCALL   DELAY56US
           DJNZ R3,out44      ;2                                             2   2   2
            nop
            SETB C           ;1                                             3   3   3
            MOV txd,C       ;2                                             3   3   3
            ;LCALl DELAY225us      ;2                                             1.5   1.5   1.5
             LCALL   DELAY56US
           LCALL   DELAY56US
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           NOP
           LCALL   DELAY56US
           LCALL   DELAY56US
           RET              ;2                                             3   3   3

;***************************************ALL  SUB PROGRAMMER END*******************************************************************


;begin of erase eeprom ******************************************************************************
;*******************************************ERASE**********************************************
;*****************************************************************************************************
erase:

           lcall pintest
           CLR   CTRLDIR
           lcall  delayms
           CLR    CTRL          ;适配器供电
           lcall  delayms

           ANL P4,#0FBH
           lcall  delayms



           mov dlct,#0ffh
redelay1:   lcall delay15ms
           djnz dlct,redelay1
;*******************用普通IO口模拟串口配置波特率*****************************88
            CLR   RST
            LCALL  DELAY15MS
            SETB  RST
            LCALL  DELAY6MS
            lcall  delayms

            MOV   A,#55H
            LCALL  TXD28800

            LCALL  RXD28800

            MOV    DATAS,A
            ;lcall  output
            MOV    A,DATAS
            XRL    A,#55H
            JNZ    E144
            LJMP   ERA28800
E144:       ORL P4,#04H ;中间的BUSY灭
            lcall delayms
            CLR   RST
            LCALL  DELAY15MS
            SETB  RST
            LCALL  DELAY6MS
            lcall  delayms

            ANL P4,#0FBH        ;中间的BUSY灯亮
            lcall  delayms


            MOV   A,#55H
            LCALL  TXD14400
            LCALL  RXD14400

            MOV    DATAS,A

            ;lcall  output
            mov    a,datas
            XRL    A,#55H
            JNZ    E88
            LJMP   ERA14400
E88:        ORL P4,#04H ;中间的BUSY灭
             lcall  delayms
            CLR   RST
            LCALL  DELAY15MS
            SETB  RST
            lcall  delay6ms
            lcall  delayms
            ANL P4,#0FBH        ;中间的BUSY灯亮
            lcall  delayms

            MOV   A,#55H
            LCALL  TXD8861

            LCALL  RXD8861

            MOV    DATAS,A

            ;LCALL  OUTPUT

            MOV    A,DATAS

            XRL    A,#55H
            JNZ    E44
            LJMP   ERA8861
E44:        ORL P4,#04H ;中间的BUSY灭
            lcall  delayms
            CLR   RST
            LCALL  DELAY15MS
            SETB  RST
            lcall   delay6ms
            lcall   delayms
            ANL P4,#0FBH        ;中间的BUSY灯亮
            lcall  delayms
            MOV   A,#55H
            LCALL  TXD4430

            LCALL  RXD4430
            MOV    DATAS,A

            ;LCALL  OUTPUT

            MOV    A,DATAS

            XRL    A,#55H
            JNZ    AUTOBAUDE

⌨️ 快捷键说明

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