微型计算机原理中MOD指令的含义,微机原理与接口技术

第21题[问答题]   难度系数(一般)

设有甲、乙两台单片机,编出两台单片机间实现如下串行通讯功能的程序。

甲机发送:将首址为ADDRT的128个字节的数据块顺序向乙机发送;

乙机接收:将接收的128个字节的数据,顺序存放在以首址为ADDRR的数据缓冲区中。

sad

参考答案:

发送程序如下;

ORG    0000H

LJMP MAINT                  ;跳至主程序入口

ORG   0023H

LJMP INTSE1                  ;转至串行中断服务程序

MAINT:   MOV  SCON,#01000000B ;置串行口工作方式1

MOV  TMOD,#20H         ;定时器1为工作方式2

MOV  TH1,#0D9H         ;产生400波特率的时间常数

MOV  TL1,#0D9H

SETB  TR1                  ;启动定时器1

SETB  EA                  ;开中断

SETB  ES                    ;串行口开中断

MOV  DPTR,#ADDRT      ;首址送DPTR

MOV  R0,#00H              ;传送字节数初值

MOVX       A,@DPTR       ;取第一个发送字节

MOV  SBUF,A               ;启动串行口发送

SJMP  $

;中断服务程序

INTSE1:    CLR      TI         ;将中断标志清零

CJNE   R0,#7FH,LOOP  ;判别128个字节都发送完没有

CLR     ES               ;全部发送完毕,禁止串行口中断

SJMP   ENDT             ;转中断返回

LOOP:    INC      R0          ;修改字节数指针

INC      DPTR        ;修改地址指针

MOVX  A,@DPTR ;取发送数据

MOV      SBUF,A      ;启动串行口

ENDT:    RETI                ;中断返回

END

接收程序如下:

ORG      0000H

LJMP     MAINR           ;转主程序

ORG      0023H

LJMP     INTSE2           ;转串行口中断服务程序

MAINR: MOV      SCON,#01010000B  ;串行口为接收口,在工作方式1

MOV      TMOD,#20H   ;定时器1为工作方式2

MOV      TH1,#0D9H     ;产生400波特率的时间常数

MOV      TL1,#0D9H

SETB     TR1          ;启动定时器1

SETB     EA           ;开中断

SETB     ES            ;串行口开中断

MOV      DPTR,#ADDRR      ;数据缓冲区首址送DPTR

MOV      R0,#128           ;置传送字节数初值

SJMP     $

;中断服务程序

INTSE2: CLR     RI          ;清中断标志

MOV    A,SBUF         ;取接收的数据

MOVX @DPTR,A     ;接收的数据送缓冲区

DJNZ   R0,LOOP     ;判别接收完没有。

CLR     TR1        ;全部接收完毕则关定时器1

CLR     ES          ;关串行口中断

SJMP   SEND

LOOP:   INC      DPTR            ;修改地址指针

SEND:    RETI

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值