📄 wxjm.src
字号:
; .\wxjm.SRC generated from: wxjm.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE wxjm.c BROWSE DEBUG OBJECTEXTEND SRC(.\wxjm.SRC)
$NOMOD51
NAME WXJM
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
T2 BIT 090H.0
EA BIT 0A8H.7
IE DATA 0A8H
LED_RED BIT 0A0H.1
LED_GRE BIT 0A0H.2
EXF2 BIT 0C8H.6
RD BIT 0B0H.7
SJA1000_CS BIT 0A0H.0
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
OV BIT 0D0H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
RCLK BIT 0C8H.5
TCLK BIT 0C8H.4
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
TF2 BIT 0C8H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
PT2 BIT 0B8H.5
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
EXEN2 BIT 0C8H.3
REN BIT 098H.4
T2CON DATA 0C8H
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
RFBIT BIT 0B0H.2
PSW DATA 0D0H
?PR?delay_ms?WXJM SEGMENT CODE
?PR?_delay_nms?WXJM SEGMENT CODE
?PR?decode?WXJM SEGMENT CODE
?DT?decode?WXJM SEGMENT DATA OVERLAYABLE
?PR?main?WXJM SEGMENT CODE
?C_INITSEG SEGMENT CODE
?CO?WXJM SEGMENT CODE
?DT?WXJM SEGMENT DATA
?BI?WXJM SEGMENT BIT
EXTRN CODE (?C?LMUL)
EXTRN CODE (?C_STARTUP)
PUBLIC TXD_flag
PUBLIC RXD_flag
PUBLIC TX_data
PUBLIC RX_data
PUBLIC Show_TX_Data
PUBLIC Show_RX_Data
PUBLIC led
PUBLIC main
PUBLIC decode
PUBLIC _delay_nms
PUBLIC delay_ms
RSEG ?DT?decode?WXJM
?decode?BYTE:
DATA?243: DS 4
count?244: DS 1
i?245: DS 1
RSEG ?DT?WXJM
Show_RX_Data: DS 1
Show_TX_Data: DS 1
RX_data: DS 1
TX_data: DS 1
RSEG ?BI?WXJM
RXD_flag: DBIT 1
TXD_flag: DBIT 1
RSEG ?CO?WXJM
led:
DB 0C0H
DB 0F9H
DB 0A4H
DB 0B0H
DB 099H
DB 092H
DB 082H
DB 0F8H
DB 080H
DB 090H
DB 0FFH
RSEG ?C_INITSEG
DB 0C1H, RXD_flag + 000H ; bit-init
DB 0C1H, TXD_flag + 000H ; bit-init
DB 001H
DB RX_data
DB 000H
DB 001H
DB TX_data
DB 000H
DB 001H
DB Show_TX_Data
DB 000H
DB 001H
DB Show_RX_Data
DB 000H
; #include <stc89c51rc.h>
; #include <rs232_def.h>
; #include <intrins.h>
;
; sbit RFBIT = P3^2;
;
; void delay_ms(void) //毫秒延时
RSEG ?PR?delay_ms?WXJM
delay_ms:
USING 0
; SOURCE LINE # 7
; {
; SOURCE LINE # 8
; unsigned int i;
; for (i=0;i<140;i++)
; SOURCE LINE # 10
;---- Variable 'i?040' assigned to Register 'R6/R7' ----
CLR A
MOV R7,A
MOV R6,A
?C0001:
; {
; SOURCE LINE # 11
; }
; SOURCE LINE # 12
INC R7
CJNE R7,#00H,?C0036
INC R6
?C0036:
MOV A,R7
XRL A,#08CH
ORL A,R6
JNZ ?C0001
; }
; SOURCE LINE # 13
?C0004:
RET
; END OF delay_ms
;
; void delay_nms(unsigned int n) //延时周期
RSEG ?PR?_delay_nms?WXJM
_delay_nms:
USING 0
; SOURCE LINE # 15
;---- Variable 'n?141' assigned to Register 'R4/R5' ----
MOV R5,AR7
MOV R4,AR6
; {
; SOURCE LINE # 16
; unsigned int i;
; for (i=0;i<n;i++)
; SOURCE LINE # 18
;---- Variable 'i?142' assigned to Register 'R2/R3' ----
CLR A
MOV R3,A
MOV R2,A
?C0005:
CLR C
MOV A,R3
SUBB A,R5
MOV A,R2
SUBB A,R4
JNC ?C0008
; {
; SOURCE LINE # 19
; delay_ms();
; SOURCE LINE # 20
LCALL delay_ms
; }
; SOURCE LINE # 21
INC R3
CJNE R3,#00H,?C0037
INC R2
?C0037:
SJMP ?C0005
; }
; SOURCE LINE # 22
?C0008:
RET
; END OF _delay_nms
;
; unsigned long decode(void) //无线解码
RSEG ?PR?decode?WXJM
decode:
USING 0
; SOURCE LINE # 24
; {
; SOURCE LINE # 25
; unsigned long DATA; //记录数据
; unsigned char count,i; //暂时计数
;
; /*一共接收三字节*/
;
; DATA=0; //
; SOURCE LINE # 31
CLR A
MOV DATA?243+03H,A
MOV DATA?243+02H,A
MOV DATA?243+01H,A
MOV DATA?243,A
; for (count=0;count<24;count++) //开始收集
; SOURCE LINE # 32
MOV count?244,A
?C0009:
; {
; SOURCE LINE # 33
;
; /*测量高电平宽度*/
;
; i=0; //宽度计数
; SOURCE LINE # 37
CLR A
MOV i?245,A
?C0012:
; while (RFBIT) //高位计数
; SOURCE LINE # 38
JNB RFBIT,?C0013
; {
; SOURCE LINE # 39
; #pragma asm
; nop;
nop;
; #pragma endasm
;
;
; i++; //计数增加
; SOURCE LINE # 45
INC i?245
;
; if (i>192) goto end; //限时解码
; SOURCE LINE # 47
MOV A,i?245
SETB C
SUBB A,#0C0H
JC ?C0012
LJMP ?decode?end
; }
; SOURCE LINE # 48
?C0013:
;
; /*分辨出电平高低*/
;
; DATA*=2; //数据左移
; SOURCE LINE # 52
MOV R7,DATA?243+03H
MOV R6,DATA?243+02H
MOV R5,DATA?243+01H
MOV R4,DATA?243
CLR A
MOV R3,#02H
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?LMUL
MOV DATA?243+03H,R7
MOV DATA?243+02H,R6
MOV DATA?243+01H,R5
MOV DATA?243,R4
;
; if (i<64) //分辨高低
; SOURCE LINE # 54
MOV A,i?245
CLR C
SUBB A,#040H
JNC ?C0016
; {
; SOURCE LINE # 55
; if (!((56>i)&(i>24))) goto end; //电平合法
; SOURCE LINE # 56
MOV A,i?245
SUBB A,#018H
JC ?C0018
MOV R7,#01H
SJMP ?C0019
?C0018:
MOV R7,#00H
?C0019:
MOV A,#038H
SETB C
SUBB A,i?245
JC ?C0020
MOV R6,#01H
SJMP ?C0021
?C0020:
MOV R6,#00H
?C0021:
MOV A,R6
ANL A,R7
JZ ?decode?end
?C0017:
; DATA+=0; //记低电平
; SOURCE LINE # 57
CLR A
ADD A,DATA?243+03H
; }
; SOURCE LINE # 58
SJMP ?C0038
?C0016:
;
; else
; {
; SOURCE LINE # 61
; if (!((168>i)&(i>72))) goto end; //电平合法
; SOURCE LINE # 62
MOV A,i?245
SETB C
SUBB A,#048H
JC ?C0024
MOV R7,#01H
SJMP ?C0025
?C0024:
MOV R7,#00H
?C0025:
MOV A,#0A8H
SETB C
SUBB A,i?245
JC ?C0026
MOV R6,#01H
SJMP ?C0027
?C0026:
MOV R6,#00H
?C0027:
MOV A,R6
ANL A,R7
JZ ?decode?end
?C0023:
; DATA+=1; //记高电平
; SOURCE LINE # 63
MOV A,DATA?243+03H
ADD A,#01H
?C0038:
MOV DATA?243+03H,A
CLR A
ADDC A,DATA?243+02H
MOV DATA?243+02H,A
CLR A
ADDC A,DATA?243+01H
MOV DATA?243+01H,A
CLR A
ADDC A,DATA?243
MOV DATA?243,A
; }
; SOURCE LINE # 64
?C0028:
;
; /*测量低电平宽度*/
;
; while (!(RFBIT)) //低位计数
; SOURCE LINE # 68
JB RFBIT,?C0029
; {
; SOURCE LINE # 69
; #pragma asm
; nop;
nop;
; #pragma endasm
;
;
; i++; //计数增加
; SOURCE LINE # 75
INC i?245
;
; if (i>224) goto end; //限时解码
; SOURCE LINE # 77
MOV A,i?245
SETB C
SUBB A,#0E0H
JC ?C0028
SJMP ?decode?end
; }
; SOURCE LINE # 78
?C0029:
;
; /*低电平是否过窄*/
;
; if (i<96) goto end; //对比宽度
; SOURCE LINE # 82
MOV A,i?245
CLR C
SUBB A,#060H
JC ?decode?end
; }
; SOURCE LINE # 83
?C0011:
INC count?244
MOV A,count?244
XRL A,#018H
JZ $ + 5H
LJMP ?C0009
?C0010:
;
; /*解码成功返结果*/
;
; return DATA; //成功返回
; SOURCE LINE # 87
MOV R7,DATA?243+03H
MOV R6,DATA?243+02H
MOV R5,DATA?243+01H
MOV R4,DATA?243
RET
;
; /*有误码结束解码*/
;
; end:
; SOURCE LINE # 91
?decode?end:
; return 0; //误码结束
; SOURCE LINE # 92
CLR A
MOV R7,A
MOV R6,A
MOV R5,A
MOV R4,A
; }
; SOURCE LINE # 93
?C0032:
RET
; END OF decode
;
; void main(void)
RSEG ?PR?main?WXJM
main:
; SOURCE LINE # 95
; {
; SOURCE LINE # 96
?C0033:
;
;
;
; while (1)
; SOURCE LINE # 100
; {
; SOURCE LINE # 101
; //DATA =decode(); //解码程序
;
; P3 = 0xff;
; SOURCE LINE # 104
MOV P3,#0FFH
; _nop_();
; SOURCE LINE # 105
NOP
; P3 = 0;
; SOURCE LINE # 106
CLR A
MOV P3,A
; _nop_();
; SOURCE LINE # 107
NOP
;
; }
; SOURCE LINE # 109
SJMP ?C0033
; END OF main
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -