📄 1.txt
字号:
Disasm51 Version 3.02 Copyright (c) 2000,2003 Xi'an XXX Co. HotPower
;Binfile_name :[Att51.bin]
;Binfile_length:[4153...1039H]
;-----------------------------------------------------------------------
;“超级反汇编”标号说明
;以L打头的标号为(子)程序运行地址(LABEL) 例L00BB:
;以S打头的标号为子程序运行地址(SUB) 例S0121:
;以D打头的标号为数据区装载地址(DATA) 例D0542:
;以W打头的标号为散转程序隐藏地址(WORD) 例W09C0:
;-----------------------------------------------------------------------
ORG 0000H
RESET: LJMP MAIN;跳入主程序
;-------注意,硬件有鬼!地址多了8000H----------------------------
;此君在编程时,处处设防,表现了“对社会的强烈不满”
;可惜HotPower不在场,否则,一定将他“扒的精光”!
;-------让我看硬件后,再给你个“正版”--------------------------
;请注意P2:P0硬件
; MOV DPTR,#0FF00H;
; MOV DPTR,#0FF03H;?MOVC
; MOV DPTR,#0FF05H;?MOVX
; MOV DPTR,#0FF07H;?MOVC,MOVX
; MOV DPTR,#0FF08H;?MOVC,MOVX
; MOV DPTR,#0FF09H;?MOVC
; MOV DPTR,#0FF0AH;?MOVC,MOVX
; MOV DPTR,#0FF0BH;?MOVC
; MOV DPTR,#0FF0CH;?MOVC
; MOV DPTR,#0FF0DH;?MOVC,MOVX
; MOV DPTR,#0FF0EH;?MOVC
; MOV DPTR,#0FF0FH;?MOVC
; MOV DPTR,#0FF10H;?MOVC
; MOV DPTR,#0FF11H;?MOVX
; MOV DPTR,#0FF7BH;?
; MOV DPTR,#0FF80H;?MOVC
; MOV DPTR,#0FF81H;?MOVC
; MOV DPTR,#0FFC3H;?
;----------------------------------------------------------------
ORG 0003H
EXTI0: LJMP EXTI0;原为LJMP EXTI0+8000H
ORG 000BH
TIMER0: LJMP TIMER0;原为LJMP TIMER0+8000H
ORG 0013H
EXTI1: LJMP EXTI1;原为LJMP EXTI1+8000H
ORG 001BH
TIMER1: LJMP TIMER1;原为LJMP TIMER1+8000H
ORG 0023H
SINT: LJMP L0B7C;实际有2套串口中断入口地址
ORG 002BH
;-------以下全为“瞎折腾”---------------------------------------
TIMER2:
LJMP 002BH;原为LJMP 002BH+8000H
ORG 0033H
LJMP 0033H;原为LJMP 0033H+8000H
ORG 003BH
LJMP 003BH;原为LJMP 003BH+8000H
ORG 0043H
LJMP 0043H;原为LJMP 0043H+8000H
ORG 004BH
LJMP 004BH;原为LJMP 004BH+8000H
ORG 0053H
LJMP 0053H;原为LJMP 0053H+8000H
ORG 005BH
LJMP 005BH;原为LJMP 005BH+8000H
ORG 0063H
LJMP 0063H;原为LJMP 0063H+8000H
ORG 006BH
LJMP 006BH;原为LJMP 006BH+8000H
ORG 0073H
LJMP 0073H;原为LJMP 0073H+8000H
ORG 007BH
LJMP 007BH;原为LJMP 007BH+8000H
ORG 0083H
LJMP 0083H;原为LJMP 0083H+8000H
ORG 008BH
LJMP 008BH;原为LJMP 008BH+8000H
ORG 0093H
LJMP 0093H;原为LJMP 0093H+8000H
ORG 009BH
LJMP 009BH;原为LJMP 009BH+8000H
ORG 00A3H
LJMP 00A3H;原为LJMP 00A3H+8000H
ORG 00ABH
LJMP 00ABH;原为LJMP 00ABH+8000H
MAIN:
;-------波特率自动校准参数初始化-----------------------------
CLR A
MOV RCAP2H,A
MOV RCAP2L,A
MOV TL2,A;
MOV TH2,A;
MOV T2MOD,A
MOV T2CON,A
;-------串口在一定时间内有2个脉冲信号才能运行本程序---------
;开机必须撞大运!!!此君我服也!!!
;HotPower认为开机“密码”为F5H,不知此君能否给我“大奖”
;2个脉冲信号是否可认为:
;51开机串口(高电平1)
;结束起始位(低电平0)
;数据流10101111B(数据为F5H)停止位(高电平1)
;这样脉冲信号流为10101111111B
;我猜你在应用“波特率自动校准技术”!!!
;此君高人也,HotPower自叹不如!!!
;HotPower一直自称为“魔”,看来要“让位”了。。。
;但在“让位”前,我敢说此君的“散转技术”必我差点(别拍砖)
;看来此君的P89C51RX2的BootROM中的ISP精神领会的很深!!!
;HotPower这几天在此玩反汇编绝非“捣蛋”!!!
;我想给大家展示此君的“风采”
;-----------------------------------------------------------
;无首脉冲信号在此死机!!!
L00BB: JB RXD,$;等待串口低电平(首脉冲信号)
L00BE: JNB RXD,$;等待串口高电平(结束起始位D0=1)
;-------有首脉冲信号(起始位)才有资格撞大运--------------------
SETB TR2;打开定时器2,开始计时,现在测D0(1)
L00C3: JNB RXD,L00C9;测试次脉冲信号(D1=0)
JNB TF2,L00C3;等待定时时间到(无次脉冲信号)
L00C9: JNB RXD,$;等待串口高电平D2=1,测D1(0)
;-------D0D1已测完---------------------------------
L00CC: JNB RXD,L00D2;有次脉冲信号(D3=0)
JNB TF2,L00CC;等待定时时间到
;-------定时时间到,手气不好----------------------
;数据不能为0FFH,数据估计为F5H(11110101B)
L00D2: JNB RXD,$;等待串口高电平D4=1(8位数据和停止位)
;-------D4=D5=D6=D7=STOPBIT=1-------------------
CLR TR2;立即关闭定时器,用于校准波特率
JB TF2,MAIN;定时时间到,重新撞大运!!!
;-------多次撞上大运才能运行----------------------
;请看此君的“波特率自动校准技术”!!!
;-------------------------------------------------
MOV R7,TL2;保存实际测试的波特率低8位
MOV R6,TH2;保存实际测试的波特率高8位
;-------波特率自动校准技术------------------------
;从以下程序分析,此君的开机数据可能不是55H,是F5H吗?
;此君真是“做鬼也风流”呀!!!佩服!!!
;-------------------------------------------------
;2个脉冲信号必须除2,此君对吗???
;------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -