1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。

解:STRAT:MOV R0,#30H

MOV R7,#0FH

MOV DPTR,#3000H

LOOP: MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R7,LOOP

RET

2 片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 ).

解ADDIO:MOV R0,30H

MOV R7,#9

MOV A,@R0

LOOP: INC R0

ADD A,@R0

DJNZ R7,LOOP

MOV 30H,A

RET

5 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.

解 START: MOV R0,#40H ;数据块首地址送R0

MOV R7,#09H ;比较次数送R7

MOV A,@R0 ;取数送A

LOOP: INC R0

MOV 30H,@R0 ;取数送30H

CJNE A,30H,NEHT ;(A)与(30H)相比

NEXT: JNC BIE1 (A)≥(30H)转BIR1

MOV A,30H ;(A)<(30H),大数送A

BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较

MOV 50H,A ;比较结束,大数送50H

RET

6 编一子程序,从串行接口接受一个字符.

解: START: MOV TMOD,#20H ;定时器T1工作于模式2

MOV TH1,#0E8H ;设置波特率为1 200b/s

MOV TL1,#0E8H

SETB TR1 ;启动T1

MOV SCON,#50H ;串行接口工作于方式1,充许接收

L1: JNB RI,L1 ;等待接收数据,末接收到数据,继续等待 CLR RI ;接收到数据,清RI

MOV A,SBUF ;接收到数据送A

RET

9 编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。

本程序的硬件连接如图所示。当P1.0输出高电平时,LED灯亮,否则不亮。

其程序如下:

MOV A,#01H ;灯亮初值

SHIFT: LCAIL FLASH ;调闪亮10次子程序

RR A ;右移一位

SJMP SHIFT ;循环

FLASH: MOV R2,#0AH 闪烁10次计数

FLASH1; MOV P1,A ;点亮

LCALL DELAY ;延时

MOV P1,#00H ;熄灭

LCALL DELAY ;延时

DJNZ R2,FLASH1 ;循环

RET

1.编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。

解:(1)1S=2US*5*100000

5*100000=250*200*10

(2)ORG 1000H

TIME:MOV R7,#10

T3: MOV R6,#200

T2: MOV R6,#250

T1: DJNZ R5,T1

DJNZ R6,T2

DJNZ R7,T3

RET

(2)1min=60,调用上面1s子程序60次

ORG 0030H

MOV R0,#60

LOOP:LCALL TIME

DJNZ R0,LOOP

RET

2.请编制串行通信的数据发送程序,发送片内RAM50H~5FH的16B数据,串行接口设

定为方式2,采用偶校验方式。设晶振频率为6MHz。

解:查询方式发送程序如下

MOV SCON,#8OH

M OV PCON,#80H

MOV R0,#50H

MOV R7,#16H

LOOP: MOV A,@R0

MOV C,P

MOV TB8,C

MOV SBUF,A

JNB T1,$

CLR T1

INC R0

DJNZ R7,LOOP

RET

4.应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。

请(1)计算时间常数X,应用公式X=216-t(f/12)

(2)写出程序清单

解:X=216-t(F/12)

=216-1*10-3*6*106/12

=OFEOCH

ORG 3000H

START:MOV TMOD,#01H

MOV TL0,#OCH

MOV THO,#OFEH

SETB TR0

LOOP: JBC TFO,DONE

SJMP LOOP

DONE: MOV TL0,#OCH

MOV THO,#OFEH

CPL P1.0

SJMP LOOP

6、用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。

编出汇编语言程序。

解: ORG 0100H

ABC:SETB P1.0

SETB P1.7

相关文档
最新文档