单片机作业+试卷程序汇总1

更新时间:2023-04-27 02:47:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

将外部RAM 4000H~401FH单元,共32字节传送到以40H为首址的内部RAM单元中。解:START: MOV DPTR , #4000H

MOV R0 ,#40H

MOV R5 ,#20H

LOOP1: MOVX A ,@DPTR

MOV @R0 , A

INC DPTR

INC R0

DJNZ R5 , LOOP1

RET

编程实现把8031片内以40H为首地址的16个单元内容送到以50H为首地址的扩展RAM 单元中。

MOV R0,#40H

MOV R3,#10H

MOV R1, #50H

LOOP: MOV A, @R0

MOVX @R1,A

INC R0

INC R1

DJNZ R3,LOOP

RET

1、内部RAM 20H单元开始存放8个8位无符号二进制数,找出其中的最大数的程序如下。阅读程序后,请给程序加上适当注释,并画出该程序的流程图。

ORG START

START:MOV R0,#20H ;首地址送R0

MOV R7,#08H ;指定长度计数器R7

MOV A,@R0;取第一个数送A

DEC R7;长度计数器内容减1

LOOP:INC R0;修改地址

MOV 2AH,@R0 ;取第二个数送2AH

CJNE A,2AH,CHK ;前后两个数比较

CHK:JNC LOOP1 ;前者大于后者去LOOP1

MOV A,@R0;前者小于后者,大数存A

LOOP1:DJNZ R7,LOOP ;8个数没比完去LOOP

MOV 2BH,A ;比完了大数存2BH

SJMP $ ;等待

END ;结束

流程图如下:

附:已知片内RAM 以ADDR 为起始地址的区域存放着24个无符号数,试编写程序找到最小值,并存入MIN 单元。

ORG START

START :MOV R 0,#20H ;首地址送R 0

MOV R 7,#08H ;指定长度计数器R 7

MOV A ,@R 0 ;取第一个数送A

DEC R 7 ;长度计数器内容减1

LOOP : INC R 0 ;修改地址

MOV 2AH ,@R 0 ;取第二个数送2AH

CJNE A ,2AH ,CHK ;前后两个数比较

CHK : JNC LOOP1 ;前者大于后者去LOOP1

MOV A ,@R 0 ;前者小于后者,大数存A

LOOP1:DJNZ R 7,LOOP ;8个数没比完去LOOP

MOV 2BH ,A ;比完了大数存2BH

SJMP $ ;等待

END ;结束 开始 数据区首地址送R 0 数据个数送R 7 读第一个数送A R 0-1送R 0 读下一个数送2AH (A )>(2AH ) A (2AH ) R 7-1=0 2BH A 结束 Y N N Y

1.设单片机8031系统的振荡频率为6MHz,试编程实现10mS的延时程序。

DELAY:MOV R6,#0AH

DELAY1:MOV R7,#0FAH

DELAY0:DJNZ R7,DELAY0

DJNZ R6,DELAY1

RET

附:已知MCS-51单片机系统fosc=6MHZ,编一段延时约20ms的子程序。

MOV R4, #014H

DL:MOV R5, #0FAH

DL1:DJNE R5, DL1

DJNE R4, DL

RET

2.设8031时钟频率f=12MHz,请编出利用定时器T0在P1.0引脚上输出周期为2秒的方波程序。

ANL TMOD,#0F0H

ORL TMOD,#01H

MOV TH0,#0D8H

MOV TL0,#0E6H

SETB TR0

SETB EA

SETB ET0

PL0:MOV R2,#10

PL1:MOV P1,#01H

CJNE R2,#0,PL1

CPL P1.0

SJMP PL0

TOINT:CLR TR0

DEC R2

MOV TH0,#0D8H

MOV TL0,#0E6H

SETB TR0

RETI

END

编写一个由P1.0口周期输出高低电平各2ms的方波信号的程序,系统采用12MHz晶振,由T0工作在方式2定时100μS,并采用中断响应方式实现2mS定时。提示:

TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TMOD GA TE C/T’M1 M0 GA TE C/T’M1 M0

IE EA —ET2 ES ET1 EX1 ET0 EX0

解:ORG 1000H

AJMP START

ORG 000BH

LJMP INTP

START::MOV SP ,#60H

ANL TMOD ,#0F0H

ORL TMOD , #02H

MOV TH0 ,#9CH

MOV TL0,#9CH

SETB TR0

MOV R5 ,#14H

SJMP $

INTP: DJNZ R5 , ENDP

CPL P1.0

MOV R5 , #14H

ENDP: RETI

END

3.8031通过8155对6位共阳极数码管LED接口的动态显示程序如下:ORG 2000H

DISPLY:MOV A,#06H ;给8155送控制字

MOV DPTR,#8000H

MOVX @DPTR,A

DISPLY1:MOV R0,#70H ;指向显示缓冲区

MOV R3,#0FEH ;

MOV A,R3

LD0:MOV DPTR,#8003H ;送8155C口地址

MOVX @DPTR,A ;扫描初值送8155C口

MOV DPTR,#8002H ;送8155B口地址

MOV A,@R0 ;取待显示数

ADD A,#13 ;加偏移量

MOVC A,@A+PC ;查段码表

MOVX @DPTR,A ;待显示字符送8155B口

ACALL DELAY ;调用延时子程序

INC R0 ;修改地址

MOV A,R3

JNB ACC.5, LD1 ;6位显示完了吗?

RL A ;没有,则下一位

MOV R3, A

AJMP LD0

LD1: RET ;6位显示完了返回主程 DTAB : DB 0C0H ,0F9H ,0A4H , 0B0H , 99H ;字符表

DB 92H , 82H , 0F8H , 80H , 90H

DB 88H , 83H , 0C6H , 0A1H , 86H

DB 8EH ,0FFH ,0CH ,89H , 7FH ,0BFH

DELAY : MOV R7,#02H ;延时子程序

DELAY1: MOV R6, #0FFH

DELAY2: DJNZ R6, DELAY2

DJNZ R7, DELAY1

RET

END

*待显示的数据放在始址为70H 的显示缓冲区。8155的命令字:

D7 D6 D5 D4 D3 D2 D1 D0

TM2,TM1,IEB ,IEA ,PC2,PC1,PB ,PA

要求:1).阅读程序,给程序加适当的注释;

2).根据所给程序,画出硬件连接图。要求详细画出8031与8155的连线,并

标注清楚,8155与显示器部分可简画;

3).指出指令“ADD A , #13”中的“13”为何意?

解:1)、注释见程序边

2)、8155与显示器部分的硬件连接图如下:

3)、指令ADD A ,#13中的13是查表指令到段码表间的偏移量

P 2.7 IO/M ALE ALE P 0 AD RD RD WR WR RST RST CE

8031 8155 6位显示器 PB

PC

4.试画出8031单片机和外部2片EPROM2732的连线图,规定采用三-八译码,通过8031的P2.6、P2.5、P2.4译码,指出各片的地址范围。

第1片2732的地址范围:P 2.7 P 2.6 P 2.5 P 2.4=0001——1001,即1000H ——1FFFH 或

9000H ——9FFFH

第2片2732的地址范围:P 2.7 P 2.6 P 2.5 P 2.4=0011——1011,即3000H ——3FFFH 或 B000H ——BFFFH

5.用线选法(限定用P2.7、P2.6、P2.5)完成下图MCS-51片外存储器扩展线路的连接,并指出各存储器芯片的地址范围(没用到的地址线设为1)。

ALE P 0.0-P 0.7 EA PSEN P 2.0-P 2.3 P 2.6 P 2.5 P 2.4

8031 G 373 AD 0-7 D 0-7 OE CE AD 8-11 2732(1) AD 0-7 D 0-7 OE CE AD 8-112732(2) 74LS 138 Y 3 Y 1 4

8

8 5 3

8

解:2764的地址范围:C000H~DFFFH

1# 6116的地址范围:B800H~BFFFH

2#6116的地址范围:7800H~7FFFH

6.利用8155扩展单片机I/O口驱动4位共阴极数码管,试完成扩展口连接,并编写程序显示字符“1234”,其中8155芯片控制口地址为7FF8H,待显示的字符“1234”已经放置于首地址为BLOCK的内部RAM空间中。提示:8155控制字为03H。

ORG 2000H

EQU BLOCK 40H

MOV DPTR ,#7FF8H

MOV A , #03H

MOVX @DPTR , A

MOV R0 ,#BLOCK

LOOP0:MOV R2 , #0FEH

LOOP1:MOV A , R2

MOV DPTR ,#7FFAH

MOVX @DPTR , A

MOV DPTR , #DSEG

MOV A , @R0

MOVC A, @A+DPTR

MOV DPTR , #7FF9H

MOVX @DPTR , A

MOV R3 , #0FAH

DLAY :DJNZ R3, DLAY

MOV A , R2

JNB ACC.3 , LOOP0

RL A

MOV R2 , A

INC R0

SJMP LOOP1

DSEG:DB 06H, 5BH, 4FH ,66H, 00H,

END

附:设某小型单片机系统有按键8个,通过调用按键程序KEYREAD,可读到键值分别为0-7中的一个,置于累加器A中。现要求编制一个程序,实现分支控制程序,即对不同的按键,分别转入相应的子程序K1-K8执行。

ORG 1000H

LCALL KEYREAD

RL A

MOV DPTR, #ADDR

SJMP @A+DPTR

ADDR::AJMP K1

AJMP K2

AJMP K3

AJMP K4

AJMP K5

AJMP K6

AJMP K7

AJMP K8

END

附2:DAC0832芯片与8051单片机相连的接口电路如下图所示,假设fOSC=12MHz。试编写程序,使得在输出端V0得到占空比为1:3、周期为9毫秒的方波信号输出(其中,高电平时间为3毫秒,低电平时间为6毫秒)。

解:ORG 2000H

LOP0:MOV R2,#03H

LOP1:MOV DPTR,#0BFFFH

MOV A,#0FFH

MOVX @DPTR,A

ACALL DELAY

DJNZ R2,LOP1

MOV R2,#06H

LOP2:MOV DPTR,#0BFFFH

MOV A,#00H

MOVX @DPTR,A

ACALL DELAY

DJNZ R2,LOP2

AJMP LOP0

…………

ORG 3000H

DELAY:MOV R6,#0F9H

DEL1:NOP

DJNZ R6,DEL1

NOP

RET

END

注:(4*249+4)*1us=1ms ,或用近似计算不加NOP指令

附3:下图给出了8031和ADC0809的接口,设在内部RAM始地址为20H处有一数据区,请写出对8路模拟电压连续采样并存入(或更新)这个数据区的程序。(没有使用的地址线均设为1)

解:

ORG 1000H

AJMP START

ORG 0003H

AJMP INT_0

ORG 1100H

START:MOV R0, #20H

MOV DPTR, #0F0FFH

MOV R6, #8H

SETB EA

SETB EX0

SETB IT0

MOVX @DPTR, A

SJMP $

………

INT_0:MOVX A, @DPTR

MOV @R0, A

INC DPH

INC R0

DJNZ R6, LOP

MOV R6, #8H

MOV DPTR, #0F0FFH

MOV R0, #20H

LOP:MOVX @DPTR, A

RETI

1.根据某要求编写的程序清单给出如下:

ORG 8000H

BEGIN:LJMP START

ORG 8003H

LJMP INT-P

ORG 8030H

START:SETB IT0 ;设置外部中断0为负边沿触发MOV A,#01H

MOV IE,#81H ;开外部中断

LOOP:MOV P1,A ;P1口计数方式输出

INC A

MOV R6,#0FFH ;延时

DEL:MOV R7,#0FFH

DEL1:DJNZ R7,DEL1

DJNZ R6,DEL

SJMP LOOP ;等待中断

INT-P:MOV DPTR,#0CFFFH ;中断服务,从外设读输入状态

MOVX A,@DPTR ;读开关状态

RETI

END

程序中CFFFH为外设74LS244的口地址。

要求:(1)阅读程序,给程序加适当的注释;

(2)依照该程序,编写符合以下要求的程序:

将8031的P1口作输入口,74LS377(地址为CFFFH)作输出口,8031的INT1接一单脉冲发生器,外部中断设置为边沿触发方式,累加器A作为计数器、复位的初态为1,每隔0.1秒计数器加1。计数器的值通过377输出到八位LED上显示出来。当INT1有单脉冲输入时产生一次中断,中断处理程序从P1口上读入新的值作为计数基值,以后在此值基础上计数(f osc=6MHZ) 。

ORG 8000H

BEGIN:LJMP START

ORG 8013H

LJMP INT-P

ORG 8030H

START:SETB IT1

MOV A,#01H

MOV IE,#84H

LOOP:MOV DPTR,#CFFFH

MOVX @DPTR, A

INC A

MOV R7,#64H

DEL:MOV R6,#F9H

DEL1:DJNZ R6,DEL1

DJNZ R7,DEL

SJMP LOOP

INT-P:MOV P1,#0FFH

MOV A,P1

RETI

END

2、设8155扩展芯片的Tin端输入脉冲频率为2MHZ,试编写程序,使得在Tout输出端输出周期为1ms的方波程序,假定8155命令状态口地址为100H。

解:8155定时器预置初值计算如下:

8155定时器为减一计数器,预置初值为N= T/Tj= 10--3/(0.5*10-6) =2000=07D0H 根据题意要求,定时器设置工作在方式1,则TC初值为47D0H, 编制程序为如下:ORG 1000H

MOV DPTR, #0100H

MOV A, #0C0H ; 送控制字

MOVX @DPTR, A

MOV DPTR, #0104H

MOV A, #0D0

MOVX @DPTR, A

INC DPTR

MOV A, #47H ;送定时器初值,启动定时器

MOVX @DPTR, A

……………

END

3、编程实现检索关键字“KEY”的子程序“SKWORD”。假定数据区首地址是内部RAM 20H,数据区长度为8,把关键字存放在2BH单元,检索成功的序号存放入2CH单元。

ORG 1000H

SKWORD: MOV R0,#20H

MOV R7,#08H

MOV R2,#00H

MOV 2BH,#KEY

MOV 2CH,#00H

MOV 2BH,#KEY

MOV 2CH,00H

NEXT: INC R2

MOV A,2BH

CLR C

SUBB A,@R0

JZ ENDP

INC R0

DJNZ R7,NEXT

MOV R2,#00H

ENDP:MOV 2CH,R2

RET

4、试画出8031和2片2764和两片6264存储器芯片的连线图,要求采用全译码方式,并写出各片的基本地址范围,如有重叠地址请一同列出。

解:

5、试以一片2764 和一片6264与8031单片机组成存储器扩展系统,要求采用

全译码的方法,请画出逻辑连接图,并说明各芯片的地址范围。

解:

P2.7 P2.6

P2.5 P2.4-P2.0 ALE

P0.7-P0.0 8031

EA PSEN RD

WR 2

-4

译码器 G

A

B 3 7 3 A0-A12 4# CE 2764 OE D7-D0 A0-A12 3# CE 2764 OE D7-D0 A0-A12 2# CE 6264 WE OE D7-D0 A0-A12 1# CE 6264 WE OE D7-D0

地址:4#:6000H-7FFFH ,3#:4000H-5FFFH ,2#:2000H-3FFFH ,1#:0000H-1FFFH

P2.7~P 2.5

P2.0~P2.4 ALE

P0 EA

PSEN RD

WR 8031 373 E

地址 译码器

A0~A7 A8~A12 CE

D0~D7 OE

2764 A8~A12 A0~A7

D0~D7 OE

WE

CE

6264

2764的地址范围:0000~1FFFH;6264的地址范围:2000H~3FFFH

3.8 编写一段程序:将30H-32H压缩的BCD码构成单字节BCD码存放到33H开始的单元中。

ORG 1000H

ADDR1 DA TA 0030H

ADDR2 EQU 33H

MOV DPTR ,#ADRR1

MOV R0,#ADDR2

NEXT:MOV A ,#DPTR

MOV B,A

ANL A,#0FH

MOV @R0,A

INC R0

MOV A,B

ANL A,#0F0H

SWAP A

MOV @R0,A

INC R0

INC DPTR

MOV R1,DPTR

DEC R1

CJNE R1,#32H,NEXT

SJMP $

END

3.10 试编写一段程序,其功能:将20H开始的10个单元中压缩的BCD码的高低位四位分别转换为ASC数据,存放到外部数据存储器的4000H开始的单元中。

ORG 1000H

LEN DA TA 0AH

ADDR1 DA TA 0020H

ADDR2 DA TA 4000H

MOV DPTR,#ADDR1

MOV R0,#ADDR2

MOV R1,LEN

NEXT: MOVX A, DPTR

MOV B,A

ANL A,#0FH

ORL A,#30H

MOV @R0,A

INC R0,

MOV A,B

ANL A ,#0F0H

SWAP A

ORL A,#30H

MOV @R0,A

DEC R1

INC R0

INC DPTR

CJNE R1,#00H,NEXT

SJMP $

END

4.4

设自变量X为一无符号数,存放在内部RAM的V AR单元,函数Y存放在FUNC单元。请编出满足如下关系的程序:当X≥50 ,Y=X; 当50>X≥20,Y=5X; 当X<20,Y=2X.

ORG 1000H

MOV A,V AR

CJNE A,#50 ,DSC

DSC:JNC,CUNN

CJNE A,#20,SM1

SM1:RL A

JNC MIN

SJMP CUNN

MIN:RL A

ADD A,V AR

CUNN:MOV FUNG ,A

RET

4.5

外部RAM的SOURCE(二进制8位)单元开始有一数据块,该数据块以”$”字符结尾。请编写一个程序,把它们传送到内部RAM起始地址为DIST的区域(“$”字符也要传送).

ORG 0000H

MOV R0 ,#SOURCE

MOV R1 ,#DIST

LOOP: MOVX A,@R0

MOV @R1, A

CJNE A, #18H ,LOOP1

SJMP EXIT

LOOP1:INC R0

INC R1

SJMP LOOP

EXIT: RET

4.6

在外部RAM的低256地址单元区,有始地址为SOURCE和长度在LEN单元的数据块。请编出一个能对他们进行奇偶校验的程序。凡满足奇校验(奇数个1)的数据均送至内部RAM 始地址为DIST.

ORG 1000H

MOV R0,#SOURCE

MOV R1,#DIST

MOV R2,LEN

LOOP: MOVX A,@R0

JB PSW.0,SEVE

SJMP LOOP1

SEVE: MOV @R1,A

LOOP1:INC R0

INC R1

DJNZ R2, LOOP

RET

4.8 编写一个能在内部RAM的BLOCK为起始地址的100个无符号数中找出最小值,并把它送入MIN单元的程序。

ORG 1000H

MOV R2,#99H

MOV R1,#BLOCK

MOV A,@R1

MOV R0,A

LOOP: MOV A,R0

INC R1

CLR C

SUBB A,@R1

JNC NEXT

DJNE R2,LOOP

NEXT:MOV A,@R1

MOV R0,A

DJNE R2,LOOP

MOV MIN,R0

SJMP $

END

4.10 在内部RAM中,BLOCK开始的存储区有10个双字节十进制数求和(和为4位BCD 数),编程求BCD数之和,并把它们存于SUM开始的连续单元。

ORG 1000H

MOV R4,#09H

MOV R3,#100H

MOV R1,#BLOCK

MOV R0,#BLOCK

INC R1

MOV A,@R1

SWAP A

ORL A,@R0

MOV R2,A

LOOP:INC R0

INC R0

INC R1

INC R1,

MOV A,@R1

ADD A,R2

ADD A,R2

MOV R2,A

MOV A,R3

ADDC A,#00H

MOV R3,A

CLR C

DJNZ R4,LOOP

MOV SUM,R2

MOV R5,#SUM

INC R5

MOV @R5,R3

SJMP $

END

4.12设R0内为一补码形式的带符号被除数,R1内为补码形式的带符号除数,编程完成除法,并把商置于R2内,余数置于R3内。

ORG 1000H

SBIT BIT (20H).0

SBIT1 BIT (20H).1

SBIT2 BIT (20H).2

MOV A,R0

RLC A

MOV SBIT1,C

MOV A,R1

RLC A

MOV SBIT2,C

ANL C,SBIT1

MOV SBIT, C

MOV C,SBIT1

ANL C, SBIT2

ORL C,SBIT

MOV SBIT,C

MOV SBIT,C

MOV A,R0

JNB SBIT1,NCH1

CPL A

INC A

NCH1:MOV B,A

MOV A,R1

JNB SBIT2,NCH2

CPL A

ADD A,#01H

NCH2:XCH A,B

DIV AB

JNB SBIT,NCH3

CPL A

ADD A,#01H

NCH3:MOV R2,A

MOV A,B

JNB SBIT,NCH4

CPL A

ADDC A,#00H

NCH4:MOV R3,A

SJMP $

END

INT为边沿触发方式的中断初始化程序

5.10试写出0

解:SETB EA

SETB EX0 ;开外部中断0

INT为高优先级

SETB PX0 ;令0

SETB IT0 ;边沿触发方式

5.15 请用中断法编出串行口方式1下的发送程序。设单片机主频为6MHz,波特率为600bit/s,发送数据缓冲器在外部RAM区,始址为RBLOCK,接收数据区长度不为0。

解:设R0存放了所要发送数据的长度,RI为中断触发标志

ORG 0000H

LJMP START

ORG 0100H

START:MOV TMOD,#20H ;T1为方式2

MOV TH1,#230

MOV TL1,#230

SETB TR1

MOV PCON,#00H

MOV SCON,#D0H

SETB EA

SETB ES

.

.

.

SJMP $

中断服务程序如下:

ORG 0023H

LJMP INTSV

ORG 0200H

INTSV:CLR RI ;清RI

PUSH ACC

PUSH PSW

MOV DPTR,#RBLOCK

LOOP:MOVX A,@DPTR

MOV SBUF,A ;发送数据

JNB TI,$

INC DPTR

DJNZ R0,LOOP

POP PSW

POP ACC

RETI

END

6.12图6-55所示为DAC0809与MCS-51的一种接口电路。设在内部RAM 20H 开始有一数据区,请写出对8路模拟电压连续采集并循环存入(或更新)这个数据区的程序。

解:ORG 0000H

SJMP START

ORG 0030H

START:MOV R0,#20H

MOV DPTR,#7FF8H ;指向通道IN0

SAMPLE:MOVX @DPTR,A

JB P3.3

MOVX A,@DPTR

MOV @R,A

CJNE R0,#0FFH,NEXT

MOV R0,#20H

SJMP CHN

NEXT:INC R0

CHN:CJNE DPTR,#7FFFH,AGAIN ;是否指向通道INT

MOV DPTR,#7FF8H

SJMP SAMPLE

AGAIN:INC DPTR

SJMP SAMPLE

END

6.14参考图6-71编写一个定时扫描键盘程序。将键号值保存在内部RAM 30H 单元中,同时置位标志内部RAM (20H).0位,并通知主程序对输入键进行处理。

解:设按键顺序(从左到右)为:第4行(接P1.0)0,1,2,3,

第3行(接P1.1)4,5,6,7,

依次类推。

设定时器T0工作在方式1,50ms 扫描1 次,得时间常数为40536,消除抖动时间为10ms

主程序:ORG 0000H

LJMP START

ORG 000BH

LJMP CLOCK

ORG 0030H

START:MOV DPTR,#40536

MOV TH0,DPH ;置时间常数

MOV TL0,DPL

MOV TMOD,#1

SETB EA

SETB ET0

SETB TR0 ;开中断

扫描程序:

CLOCK:CLR EA ;关中断

CLR TR0

MOV TH0,DPH

MOV TL0,DPL

MOV P1,#0FH

MOV A,P1

ORL A,#0F0H

CPL A

JZ INT_DONE ;没有按下键,返回

MOV R1,#20

DE:MOV R0,#0 ;消除抖动,延时10ms

DJNZ R0,$

DJNZ R1,DE

MOV P1,#0FH

ORL A,#0F0H

CPL A

JZ INT_DONE ;没有键按下,返回

MOV R0,#0EFH ;先扫描P1.4

MOV R1,#4

MOV R2,#0

MOV R3,#30H ;存键值于R3中

LOOP:MOV P1,R0

JB P1.0,ISP1.1 ;不是P1.0,跳转

MOV @R3,R2

SETB (20H).0

LJMP INT_DONE

ISP1_1:JB P1.1,ISP1_2

MOV A,R2

ADD A,#4

MOV @R3,A

SETB (20H).0

LJMP INT_DONE

ISP1_2:JB P1.2,ISP1_3

MOV A,R2

ADD A,#8

MOV @R3,A

SETB (20H).0

LJMP INT_DONE

ISP1_3:JB P1.3,NEXT ;第一列没有键按下,准备下一次扫描

MOV A,R2

ADD A,#12

MOV @R3,A

SETB (20H).0

LJMP INT_DONE

NEXT:MOV A,R0

JNB ACC.0,INT_DONE ;扫描完成,返回

RL A ;准备下一次扫描

INC R2

LJMP LOOP

INT_DONE:SETB TR0

MOV P1,#0FH

SETB EA

RETI

设有10个二进制码存于单片机8051内部RAM区首地址为BLOCK的存储区,编写程序,将该数据区数据按从小到大排序,并送到外部存储单元以BLOCK1为首地址的存储区中。ORG 1000H

MOV R2,#09H

MOV R3,#09H

BUBBLE:CLP 7FHH

MOV A,R3

MOV R2,A

MOV R0,#BLOCK

BULOOP:MOV 20H,@R0

本文来源:https://www.bwwdw.com/article/wdrq.html

Top