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

📄 fasong.sdi

📁 多个仿真例子
💻 SDI
字号:
,,,;一个以89C51为核心构成的数据采集系统,要求每分钟向上位机发送32字节的采集数据
,,,;通讯波特率9600波特,系统晶振11.0592MHz,数据采用校验和方式进行校验。
,,,;当接收方接收的数据出错时,向发送方发送ASCII码"E",否则发送"R"。
,,,;若发现接收错误,发送方应该重发数据。
,,,S_END   BIT     00H
,,,ACK     BIT     01H
,,,OK      BIT     02H
,,,MIN     BIT     03H
,,,CR2     EQU     0AH
,,,CR3     EQU     0BH     ;1区R2,R3
,,,BR0     EQU     10H
,,,BR2     EQU     12H     ;2区R0,R2
,,,LEN     EQU     32      ;数据块长度
,,,ADDR1   EQU     30H     ;数据块首地址
,,,        ORG     0
0000,02 00 30,,        LJMP    START
,,,        ORG     0BH
000B,02 00 A3,,        LJMP    TS
,,,        ORG     23H
0023,02 00 C0,,        LJMP    TR
,,,        ORG     30H
0030,75 81 60,START,START:  MOV     SP,#60H
,,,;===============================
,,,;向发送数据缓冲区赋值
,,,;===============================
0033,78 30,,        MOV     R0,#ADDR1
0035,7A 1A,,        MOV     R2,#26
0037,74 41,,        MOV     A,#'A'
0039,F6,LL1,LL1:    MOV     @R0,A
003A,04,,        INC     A
003B,08,,        INC     R0
003C,DA FB,,        DJNZ    R2,LL1
003E,7A 04,,        MOV     R2,#4
0040,74 30,,        MOV     A,#'0'
0042,F6,LL2,LL2:    MOV     @R0,A
0043,04,,        INC     A
0044,08,,        INC     R0
0045,DA FB,,        DJNZ    R2,LL2
0047,76 0A,,        MOV     @R0,#0AH        ;存换行符
0049,08,,        INC     R0
004A,76 0D,,        MOV     @R0,#0DH        ;存回车符
,,,;=================================
004C,75 89 21,,        MOV     TMOD,#21H
004F,75 8C 4C,,        MOV     TH0,#4CH
0052,75 8A 00,,        MOV     TL0,#0
0055,75 8D FD,,        MOV     TH1,#0FDH
0058,75 8B FD,,        MOV     TL1,#0FDH
005B,D2 B9,,        SETB    PT0
005D,D2 A9,,        SETB    ET0
005F,53 87 7F,,        ANL     PCON,#7FH       ;SMOD=0
0062,75 98 50,,        MOV     SCON,#50H
0065,D2 AC,,        SETB    ES
0067,D2 AF,,        SETB    EA
0069,D2 8C,,        SETB    TR0
006B,D2 8E,,        SETB    TR1
006D,75 0A 14,,        MOV     CR2,#20
0070,75 0B 3C,,        MOV     CR3,#60
0073,C2 00,,        CLR     S_END
0075,C2 01,,        CLR     ACK
0077,C2 02,,        CLR     OK
0079,C2 03,,        CLR     MIN
007B,30 03 FD,LOOP,LOOP:   JNB     MIN,$
007E,C2 03,,        CLR     MIN
0080,7A 20,,        MOV     R2,#LEN
0082,78 30,,        MOV     R0,#ADDR1
0084,E4,,        CLR     A
0085,26,L1,L1:     ADD     A,@R0
0086,08,,        INC     R0
0087,DA FC,,        DJNZ    R2,L1
0089,F6,,        MOV     @R0,A   ;存检查和
008A,75 12 21,L2,L2:     MOV     BR2,#LEN+1
008D,75 10 30,,        MOV     BR0,#ADDR1
0090,E5 30,,        MOV     A,ADDR1
0092,F5 99,,        MOV     SBUF,A  ;发送第一个字节
0094,30 00 FD,,        JNB     S_END,$ ;没有发送完毕就等待
0097,C2 00,,        CLR     S_END
0099,30 01 FD,,        JNB     ACK,$   ;没有应答则等待
009C,C2 01,,        CLR     ACK
009E,30 02 E9,,        JNB     OK,L2   ;接收方返回错误代码则重发
00A1,80 D8,,        SJMP    LOOP
00A3,C0 D0,TS,TS:     PUSH    PSW
00A5,D2 D3,,        SETB    RS0
00A7,C2 D4,,        CLR     RS1     ;选择1区R寄存器
00A9,C2 8C,,        CLR     TR0
00AB,75 8C 4C,,        MOV     TH0,#4CH
00AE,75 8A 00,,        MOV     TL0,#0
00B1,D2 8C,,        SETB    TR0
00B3,DA 08,,        DJNZ    R2,TS1
00B5,7A 14,,        MOV     R2,#20
00B7,DB 04,,        DJNZ    R3,TS1
00B9,7B 3C,,        MOV     R3,#60
00BB,D2 03,,        SETB    MIN     ;一分钟到,置MIN标志
00BD,D0 D0,TS1,TS1:    POP     PSW
00BF,32,,        RETI
00C0,C0 D0,TR,TR:     PUSH    PSW
00C2,C0 E0,,        PUSH    ACC
00C4,C2 D3,,        CLR     RS0
00C6,D2 D4,,        SETB    RS1     ;选2区R寄存器
00C8,30 99 0E,,        JNB     TI,SR2
00CB,C2 99,,        CLR     TI
00CD,DA 04,,        DJNZ    R2,SR1
00CF,D2 00,,        SETB    S_END
00D1,80 06,,        SJMP    SR2
00D3,08,SR1,SR1:    INC     R0
00D4,E6,,        MOV     A,@R0
00D5,F5 99,,        MOV     SBUF,A
00D7,80 12,,        SJMP    SR4
00D9,30 98 0F,SR2,SR2:    JNB     RI,SR4
00DC,C2 98,,        CLR     RI
00DE,D2 01,,        SETB    ACK
00E0,E5 99,,        MOV     A,SBUF
00E2,B4 52 04,,        CJNE    A,#'R',SR3
00E5,D2 02,,        SETB    OK
00E7,80 02,,        SJMP    SR4
00E9,C2 02,SR3,SR3:    CLR     OK
00EB,D0 E0,SR4,SR4:    POP     ACC
00ED,D0 D0,,        POP     PSW
00EF,32,,        RETI
000E,,,        END
,,,
,,,
,,,
,,,

⌨️ 快捷键说明

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