📄 mc68hc08as20.asm
字号:
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 + -