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

📄 int_trs.sdi

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 SDI
字号:
,,,        ORG  0000H              ;主程序入口
0000,02 01 00,,        LJMP  MAIN
,,,        ORG  0023H              ;串行中断入口
0023,02 01 36,,        LJMP SERVE1
,,,        ORG  0100H
0100,75 81 60,MAIN,MAIN:   MOV SP,#60h
0103,78 40,,        MOV R0,#40H
0105,74 00,,        MOV A,#00
0107,7C 10,,        MOV R4,#10H
0109,F6,LP,LP:     MOV @R0,A
010A,08,,        INC R0
010B,04,,        INC A
010C,DC FB,,        DJNZ R4,LP
010E,75 89 20,,        MOV  TMOD, #20H         ;将T1设为工作方式2
0111,75 8D F3,,        MOV  TH1, #0F3H         ;fosc=6MHz时,BD=2400
0114,75 8B F3,,        MOV  TL1, #0F3H
0117,D2 8E,,        SETB  TR1               ;启动T1
0119,75 87 80,,        MOV  PCON, #80H         ;Smod=1
011C,75 98 D0,,        MOV  SCON, #0D0H        ;串行口设为工作方式3, 允许接收
011F,78 40,,        MOV  R0, #40H           ;数据块首地址
0121,7C 10,,        MOV R4,#10H             ;发送字节数
0123,D2 AC,,        SETB ES                 ;允许串行口中断
0125,D2 AF,,        SETB EA                 ;开中断
0127,E6,,        MOV A, @R0              ;取发送数据
0128,A2 D0,,        MOV  C, P
012A,92 9B,,        MOV TB8,C               ;奇偶标志送TB8
012C,F5 90,,        MOV P1,A
012E,12 01 6C,,        LCALL DELAY
0131,F5 99,,        MOV SBUF,A              ;发送数据
0133,1C,,        DEC R4
0134,80 FE,,        SJMP $                  ;等待中断
,,,
,,,;发送方单片机的中断服务程序:
0136,C0 E0,SERVE1,SERVE1: PUSH ACC
0138,C0 D0,,        PUSH PSW
013A,10 98 04,,        JBC  RI, LOOP           ;是接收中断,清零RI,转入接收应答信息
013D,C2 99,,        CLR  TI                 ;是发送中断,清零TI
013F,80 26,,        SJMP ENDT
0141,E5 99,LOOP,LOOP:   MOV  A, SBUF            ;取应答信息
0143,C3,,        CLR  C
0144,94 01,,        SUBB A,#01H             ;判断应答信息是#00H吗?
0146,40 0E,,        JC   LOOP1              ;是#00H,发送正确
0148,E6,,        MOV A, @R0              ;否则重发原来数据
0149,A2 D0,,        MOV  C, P
014B,92 9B,,        MOV  TB8, C
014D,F5 99,,        MOV  SBUF, A
014F,F5 90,,        MOV P1,A
0151,12 01 6C,,        LCALL DELAY
0154,80 11,,        SJMP ENDT
0156,08,LOOP1,LOOP1:  INC  R0                 ;修改地址指针,准备发送下一个数据
0157,E6,,        MOV A, @R0
0158,A2 D0,,        MOV  C, P
015A,92 9B,,        MOV  TB8, C
015C,F5 99,,        MOV  SBUF, A            ;发送数据
015E,F5 90,,        MOV P1,A
0160,12 01 6C,,        LCALL DELAY
0163,DC 02,,        DJNZ R4, ENDT           ;数据未发送完,继续
0165,C2 AC,,        CLR  ES                 ;数据全部发送完毕,禁止串行口中断
0167,D0 D0,ENDT,ENDT:   POP PSW
0169,D0 E0,,        POP ACC
016B,32,,        RETI                    ;中断返回
,,,
016C,7F 03,DELAY,DELAY:  MOV R7,#3
016E,7E FF,DD1,DD1:    MOV R6,#0FFH
0170,7D FF,DD2,DD2:    MOV R5,#0FFH
0172,DD FE,,        DJNZ R5,$
0174,DE FA,,        DJNZ R6,DD2
0176,DF F6,,        DJNZ R7,DD1
0178,22,,        RET
000E,,,        END

⌨️ 快捷键说明

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