- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理编程题
单片机原理编程题
PAGE / NUMPAGES
单片机原理编程题
一. 编程题 ( 每小题 8 分,共 16分)
设在内 RAM40H开始的存储区有若干个字符和数字,已知最后一个为字符“ $“(并且只有一个,试统计这些字符数字的个数,结果存入 30H单元中。
参考程序:
ORG 0000H
START:
MOV R1,#40H
;R1作为地址指针
CLR A
;A 作为计数器
LOOP: CJNE @R1,#24H,NEXT
;与“ $”号比较,
不等转移
SJMP NEXT1
;找到“
$“结束循
环
NEXT: INC A
;计数器加
1
INC R1
;指针加
1
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
3.用 8XX51的 P1 口接 8 个 LED发光二极管,由 INT0 接一消
抖按键开关,开始的 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
L2:
L3:
L2:
CJNE A,#0,L1
INC 32H
SJMP L2
JC L3
INC 30H
SJMP L2
INC 31H
DJNZ R1,L4
SJMP $
编程将内部数据存储器 20H~24H单元压缩的 BCD码转换成 ASC Ⅱ存放在于 25H开始的单元。
参考程序:注意压缩的 BCD码为一个字节占两位 BCD码。
ORG 0000H
MOV R7,#05H;R7为转换字节数
MOV R0,#20H;R0为源操作数地址
NE:
MOV R1,#25H;R1为目的操作数地址
MOV A,@R0
ANL A,#0FH ;先取低位
BCD码
ADD A,#30H ;将
BCD码转换成
ASCⅡ码
MOV @R1,A
INC R1
MOV A,@R0
ANL A,#0F0H ;取高位 BCD码
SWAP A;半字节交换
ADD A,#30H ;将高位 BCD码转换成 ASCⅡ码
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,LOOP
SJMP $
程序功能: 把片外数据存储器 1000H~1050H中的内容传送到片内数据存储器 20H~70H中。
2. 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 的 ASCⅡ码
DB 41H,42H,43H,44H,45H,46H ;A~F 的 ASCⅡ码
程序功能:利用查表的方法实现 RO中的十六进制数转换为 ASCⅡ
码
对每小题程序中划线的指令含义 ( 或指令作用 ) 进行解释,并说明程序的作用。
*****************
文档评论(0)