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

上传人:b****5 文档编号:11809639 上传时间:2023-04-02 格式:DOCX 页数:10 大小:45.37KB
下载 相关 举报
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.docx_第1页
第1页 / 共10页
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.docx_第2页
第2页 / 共10页
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.docx_第3页
第3页 / 共10页
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.docx_第4页
第4页 / 共10页
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

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

《1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.docx》由会员分享,可在线阅读,更多相关《1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去.docx(10页珍藏版)》请在冰豆网上搜索。

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

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

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

 解:

STRAT:

MOVR0,#30H

MOVR7,#0FH

MOVDPTR,#3000H

LOOP:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR7,LOOP

RET

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

   解 ADDIO:

MOVR0,30H

MOVR7,#9

MOVA,@R0

LOOP:

INCR0

ADDA,@R0

DJNZR7,LOOP

MOV30H,A

RET

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

解START:

MOVR0,#40H;数据块首地址送R0

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

        MOVA,@R0;取数送A

  LOOP:

INCR0

MOV30H,@R0;取数送30H

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

NEXT:

JNCBIE1(A)≥(30H)转BIR1

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

   BIE1:

DJNZR7,LOOP;比较次数减1,不为0,继续比较

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

        RET

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

解:

START:

MOVTMOD,#20H;定时器T1工作于模式2

MOVTH1,#0E8H;设置波特率为1200b/s

MOVTL1,#0E8H

SETBTR1;启动T1

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

L1:

JNBRI,L1;等待接收数据,末接收到数据,继续等待

CLRRI;接收到数据,清RI

MOVA,SBUF;接收到数据送A

RET

9编制一个循环闪烁灯的程序。

有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。

画出电路图。

P1.0

8013

P1.7

D0Q0

74LS240

D7Q7

5V

本程序的硬件连接如图所示。

当P1.0输出高电平时,LED灯亮,否则不亮。

其程序如下:

MOVA,#01H;灯亮初值

SHIFT:

LCAILFLASH;调闪亮10次子程序

RRA;右移一位

SJMPSHIFT;循环

FLASH:

MOVR2,#0AH闪烁10次计数

FLASH1;MOVP1,A;点亮

LCALLDELAY;延时

MOVP1,#00H;熄灭

LCALLDELAY;延时

DJNZR2,FLASH1;循环

RET

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

解:

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

5*100000=250*200*10

(2)ORG1000H

TIME:

MOVR7,#10

T3:

MOVR6,#200

T2:

MOVR6,#250

T1:

DJNZR5,T1

DJNZR6,T2

DJNZR7,T3

RET

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

ORG0030H

MOVR0,#60

LOOP:

LCALLTIME

DJNZR0,LOOP

RET

2.请编制串行通信的数据发送程序,发送片内RAM50H~5FH的16B数据,串行接口设定为方式2,采用偶校验方式。

设晶振频率为6MHz。

解:

查询方式发送程序如下

MOVSCON,#8OH

MOVPCON,#80H

MOVR0,#50H

MOVR7,#16H

LOOP:

MOVA,@R0

MOVC,P

MOVTB8,C

MOVSBUF,A

JNBT1,$

CLRT1

INCR0

DJNZR7,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

ORG3000H

START:

MOVTMOD,#01H

MOVTL0,#OCH

MOVTHO,#OFEH

SETBTR0

LOOP:

JBCTFO,DONE

SJMPLOOP

DONE:

MOVTL0,#OCH

MOVTHO,#OFEH

CPLP1.0

SJMPLOOP

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

编出汇编语言程序。

解:

ORG0100H

ABC:

SETBP1.0

SETBP1.7

JBPI.7,$

JNBP1.7,$

CLRP1.0

MOVR2,#0

DAY:

NOP

NOP

DJNZR2,DAY

SJMPABC

7、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。

解:

ORG0100H

MOVA,#08H

MOVR2,#01H

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVP1,A

NEXT:

MOVA,R2

MOVP3,A

ACALLDAY

JBACC.4,LPD

RLA

MOVR2,A

AJMPNEXT

LPD:

RET

TAB:

DB

END

11.设计89C51和ADC0809的接口,采集2通道10个数据,存入内部RAM的50H~59H单元,画出电路图,编出:

(2)查询方式;

解:

IN2的地址为7FFAH,P1.0查询转换结束信号,查询程序如下:

ORG0100H

MOVR7,#0AH

MOVR0,#50H

MOVDPTR,#7FFAH

NEXT:

MOVX@DPTR,A

JBP1.0,$

MOVXA,@DPTR

MOV@R0,A

INCR0

DJNZNEXT

SJMP$

12、扫描子程序:

KEY1:

ACALLKS1;调用判断有无键按下子程序

JNZLK1;有键按下,转LK1

AJMPKEY1;无键按下,返回

LK1:

ACALLT12MS;调延时12ms子程序

ACALLKS1;查有无键按下

JNZLK2;若有,则为键确实按下,转逐列扫描

AJMPKEY1;无键按下,返回

LK2:

MOVR4,#00H;首列号R4

MOVR2,#FEH;首列扫描字R2

LK4:

MOVA,R2;列扫描字P1口

MOVP1,A;使第一列线为0

MOVA,P1;读入行状态

JBACC.0,LONE;第0行无键按下,转查第一行

MOVA,#00H;第0行有键按下,该行首键号#00HA

AJMPLKP;转求键号

LONE:

JBACC.1,NEXT;第一行无键按下,转查下一列

MOVA,#02;第一行有键按下,该行首键号#02A

LKP:

ADDA,R4;键号=首行号+列号

PUSHACC;键号进栈保护

LK3:

ACALLKS1;等待键释放

JNZLK3;未释放,等待

POPAC;键释放,键号A

RET;键扫描结束

NEXT:

INCR4;列号加1,指向下一列

MOVA,R2;列扫描字A

JNBACC.1,KND;判断2列全扫描完?

扫描完,转KND

RLA;没扫描完,扫描字左移一位,形成下一列扫描字

MOVR2,A;扫描字R2

AJMPLK4;扫描下一列

AJMPKEY1;全扫描完,返回

MOVA,#FCH;全扫描字11111100BA

MOVP1,A;全扫描字所有行

MOVA,P1;读取列值

CPLA;取正逻辑,高电平表示有键按下

ANLA,#0C0H;屏蔽低6位,取高2位

RET;出口状态(A)!

=0,有键按下

2、如图所示,要求按下S1~S4中的任意一个键,则对应的(S1-D3、S2-D4、S3-D5、S4-D6)发光二极管亮,松开键对应的发光二极管灭。

解答:

ORG      0000H

LJMP    MAIN

ORG      0030H

MAIN:

   MOV    

P3,#0FFH

LOOP:

   MOV     A,P3

MOV     P1,A

LJMP     LOOP

END

1、试编程采用软件延时的方法来延时5分钟。

(系统时钟为6MHZ)(10分)

                          ORG      1000H

                                  MOV     R3,#05H

                           LP3:

MOV      R2,#78H

                           LP2:

MOV     R1,#0FAH

                           LP1:

MOV      R0,#0FAH

                           LP:

 NOP

                                  NOP

DJNZ     R0,LP

                                  DJNZ     R1,LP1

                                  DJNZ     R2,LP2

                                  DJNZ     R3,LP3

                                  END

3、使用74ls164的并行输出端接8个发光二极管,利用它的串入并出的功能,把发光二极管从左到右轮流点亮一个灯,并反复循环。

(即流水灯效果)

             ORG      0000H

             LJMP     MAIN

             ORG      0030H

MAIN:

   MOV     SCON    #00H    

             CLR       ES

             MOV     A    #80H

DELR:

    CLR       P1.0

             MOV     SBUF,A

             JNB       TI,$

             SETB     P1.0

             LCALL   DELAY

             CLR       TI

             RR         A    

             SJMP     DELR

DELAY:

MOV    R7,#10  

D1:

 MOV    R6,#50

D2:

 MOV    R5,#200

            DJNZ    R5,$      

            DJNZ    R6,D2   

            DJNZ    R7,D1   

            RET             

             END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1