单片机 c语言 trd,单片机原理编程题-20210402062628.docx-原创力文档

专业

专业.专注

专业

专业.专注

编程题(每小题8分,共16分)

设在内RAM 40H开始的存储区有若干个字符和数字,已知最后一个为 字符$ “并且只有一个,试统计这些字符数字的个数,结果存入30H单元 中。

参考程序:

ORG 0000H

;R1

;R1作为地址指针

;A作为计数器

;与“号比较,不等转移

;找到$结束循环

;计数器加1

;指针加1

;循环

;再加入”这个字符

;存结果

CLR A

LOOP: CJNE @R1,#24H,NEXT

SJMP NEXT1

NEXT: INC A

INC R1

SJMP LOOP

NEXT1: INC A

MOV 30H,A

END

试编一程序,分别统计在内部RAM的30H~50H单元的数据区中奇数和偶数的个数,并将奇数和偶数的个数分别存放在 51H和52H单元中。

参考程序:

ORG 0000H

MOV 51H,#0H

MOV 52#,#0H

MOV R1 ,#30H

MOV R0 ,#20H

MOV A,@R1

INC R1

ANL A , #01H

JZ LOOP1

INC 51H

SJMP LOOP2

LOOP1: INC 52H

LOOP2: DJNZ R0 , LOOP3

RET

用8XX51的P1 口接8个LED发光二极管,由INT0接一消抖按键开 关,开始P1.0的LED亮,以后由INT0按键每中断一次,下一个LED亮,顺序 下移,且每次只一个LED亮,周而复始。请编制程序。

参考程序:

ORG 0000H

AJMP MAIN

ORG 0003H

RL A ;中断服务

MOV P1,A

RETI

MAIN: MOV A,#0FFH

MOV P1,A ;第一灯亮

SETB EA

SETB EX0 ;允许INT0外部中断

SETB IT0 ;中断触发方式为下降沿触发

SJMP $ ;等待中断

设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编 程统计其中正数、负数、零的个数并分别存放在30H、31H、32H单元中。

MOV 30H,#0

MOV 31H,#0

MOV 32H,#0

MOV DPTR ,#2000H

MOV R1,#100

L4: MOVX A,@DPTR

INC DPTR

CJNE A,#0,L1

INC 32H

SJMP L2

L2:JC L3

INC 30H

SJMP L2

L3:INC 31H

L2:DJNZ R1,L4

SJMP $

编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCH存放在 于25H开始的单元。

参考程序:注意压缩的BCD码为一个字节占两位BCD码。

ORG 0000H

MOV R7,#05HMOV R0,#20HMOV R1,#25H;

MOV R7,#05H

MOV R0,#20H

MOV R1,#25H

;R0为源操作数地址

;R1为目的操作数地址

NE:MOV A,@R0

ANL A,#0FH ;先取低位BCD码

ADD A,#30H;将BCD码转换成 ASCU码

MOV @R1,A

INC R1

MOV A,@R0

ANL A,#0F0H ;取高位 BCD 码

SWAP A ;半字节交换

ADD A,#30H;将高位BCD码转换成ASCU码

MOV @R1,A

INC R0

INC R1

DJNZ R7,NE

SJMP $

END

编程题,另外加上第4章课件上的例子。

三、程序解释(每小题5分,共10分)

1.

ORG 0200H

MOV DPTR,#1000H

MOV R0,#20H

LOOP: MOVX A,@DPTR

MOV @R0,A

INC DPTR

INC R0

CJNE R0,#71H ,L OOP

SJMP $

程序功能:把片外数据存储器1000H~1050H中的内容传送到片内数据存储 器 20H~70H 中。

ORG 0200H

MOV A , R0

ANL A , #0FH

MOV DPTR , #TAB

MOVC A , @A+DPTR

MOV R0,A

SJMP $

TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H;0~9 的

ASCU码

DB 41H,42H,43H,44H,45H,46H ;A~F 的 ASC U 码

程序功能:利用查表的方法实现R0中的十六进制数转换为ASCU码

对每/—(或指令作用)进行解释,并说明程序的作用。

*********************************

程序解释

ORG100H

MOV

A,R0

;R0的内容送

A

ANL

A,#0FH

MOV

R1,A

MOV

A,R0

SWAP

A

;A的内容咼低

4位交换

ANL

A,#0FH

MO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值