单片机原理编程题(共29页)

上传人:des****85 文档编号:214665379 上传时间:2021-11-23 格式:DOC 页数:29 大小:218.50KB
返回 下载 相关 举报
单片机原理编程题(共29页)_第1页
第1页 / 共29页
单片机原理编程题(共29页)_第2页
第2页 / 共29页
单片机原理编程题(共29页)_第3页
第3页 / 共29页
单片机原理编程题(共29页)_第4页
第4页 / 共29页
单片机原理编程题(共29页)_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《单片机原理编程题(共29页)》由会员分享,可在线阅读,更多相关《单片机原理编程题(共29页)(29页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上一 编程题 (每小题8分,共16分)1. 设在内RAM 40H开始的存储区有若干个字符和数字,已知最后一个为字符“$“(并且只有一个,试统计这些字符数字的个数,结果存入30H单元中。参考程序:ORG 0000HSTART:MOV R1,#40H;R1作为地址指针CLR A;A作为计数器LOOP:CJNE R1,#24H,NEXT;与“$”号比较,不等转移SJMP NEXT1;找到“$“结束循环NEXT:INC A;计数器加1INC R1;指针加1SJMP LOOP;循环NEXT1:INC A;再加入”$”这个字符MOV 30H,A;存结果END2. 试编一程序,分别统

2、计在内部RAM的30H50H单元的数据区中奇数和偶数的个数,并将奇数和偶数的个数分别存放在51H和52H单元中。参考程序:ORG 0000HMOV 51H ,#0HMOV 52# ,#0HMOV R1 ,#30HMOV R0 ,#20HMOV A,R1INC R1ANL A , #01HJZ LOOP1INC 51HSJMP LOOP2LOOP1:INC 52HLOOP2:DJNZ R0 , LOOP3RET3用8XX51的P1口接8个LED发光二极管,由INT0接一消抖按键开关,开始P1.0的LED亮,以后由INT0按键每中断一次,下一个LED亮,顺序下移,且每次只一个LED亮,周而复始。请

3、编制程序。参考程序:ORG 0000H AJMP MAINORG 0003HRL A ;中断服务MOV P1,ARETIMAIN:MOV A,#0FFHMOV P1,A ;第一灯亮SETB EASETB EX0 ;允许INT0外部中断SETB IT0 ;中断触发方式为下降沿触发SJMP $ ;等待中断4.设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数并分别存放在30H、31H、32H单元中。MOV 30H,#0MOV 31H,#0MOV 32H,#0MOV DPTR ,#2000HMOV R1,#100L4:MOVX A,DPTRINC DP

4、TRCJNE A,#0,L1INC 32HSJMP L2L2:JC L3INC 30HSJMP L2L3:INC 31HL2:DJNZ R1,L4SJMP $5.编程将内部数据存储器20H24H单元压缩的BCD码转换成ASC存放在于25H开始的单元。参考程序:注意压缩的BCD码为一个字节占两位BCD码。ORG 0000HMOV R7,#05H ;R7为转换字节数MOV R0,#20H ;R0为源操作数地址MOV R1,#25H ;R1为目的操作数地址NE:MOV A,R0ANL A,#0FH ;先取低位BCD码ADD A,#30H ;将BCD码转换成ASC码MOV R1,AINC R1MOV

5、A,R0ANL A,#0F0H ;取高位BCD码SWAP A ;半字节交换ADD A,#30H ;将高位BCD码转换成ASC码MOV R1,AINC R0 INC R1DJNZ R7,NESJMP $END编程题,另外加上第4章课件上的例子。三、程序解释(每小题5分,共10分)1ORG 0200HMOV DPTR,#1000H MOV R0,#20H LOOP:MOVX A,DPTRMOV R0,AINC DPTRINC R0CJNE R0,#71H,LOOP SJMP $程序功能:把片外数据存储器1000H1050H中的内容传送到片内数据存储器 20H70H中。2ORG 0200HMOV A

6、,R0ANL A,#0FHMOV DPTR,#TABMOVC A,A+DPTRMOV R0,ASJMP $TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H; 09的ASC码DB 41H,42H,43H,44H,45H,46H ;AF的ASC码程序功能:利用查表的方法实现RO中的十六进制数转换为ASC码对每小题程序中划线的指令含义(或指令作用)进行解释,并说明程序的作用。*1. 程序解释 ORG 100HMOV A,R0 ;R0的内容送A ANL A,#0FHMOV R1,A MOV A,R0SWAP A ;A的内容高低4位交换 ANL A,#0FHM

7、OV R2,A SJMP $ ;等待 END该程序的作用是:将原R0中数据按照高低4位分成两个字节,低位字节保存在R1中,高位字节保存到R2中。2. 程序解释 ORG 30HMOV R0,#data1 ; data1送R0 MOV R1,#data2MOVR2,#2CLR CLOOP: MOVA,R0SUBB A,R1 ;(A)-(C)-(R1)A MOV R0,AINC R0INC R1DJNZR2,LOOP ;(R2)-1不等于零,跳LOOP处SJMP $END该程序的作用是:将data1中的双字节数据减去data2中的双字节数据,结果保存到data1中3. 程序解释 ORG 30HVAR

8、DATA 30HFUNCDATA 31HMOV A,VAR ;30单元的内容送AJZ DONE ;A为零转移JNB ACC.7,POSI ;A的最高位为0(正数)转移MOV A,#0FFH ;提示:0FFH表示-1SJMP DONEPOSI:MOV A, #01HDONE:MOV FUNC,ASJMP $END该程序的作用是:判断30H单元中的内容,结果放在31H单元中。大于0放1,小于0放-1,等于零放0。 4. 程序解释 ORG 100HMOV A, R3 RL A ;A左循环一位(即乘2)MOV DPTR,#BRTAB ;绝对转移地址表起始地址送DPTR JMP A+DPTR ;(PC)

9、=(A)+(DPTR) BRTAB:AJMPROUT000AJMPROUT001AJMPROUT002AJMPROUT127END该程序的作用是:本程序完成128分支转移操作,根据R3中的数值转移到相应的128个分支程序中。5. 程序解释 ORG 0030H MOV R0, #22H ; 立即数22H送R0 MOV R0, #00H INC R0 ; R0中的内容加1 MOV R0, #01H INC R0MOV R0, #02H ; 02H送24H单元 SJMP $END该程序的作用是:向单片机内部RAM的22H,23H,24H单元分别送数据00,01,02。 6. 程序解释 ORG 003

10、0H MOV A, 20H MOV B, 21H DIV AB ; A除以B MOV 31H, A ; 商送30H单元 IMOV 31H,B ; 余数送31H单元SJMP$END该程序的作用是:将20H单元中有一个二进制数除以21H单元中二进制数,商保存到30H单元,余数保存到31H。7. 程序解释CHENGJIDATA 1000HGRADADATA20HGRADB DATA 21H MOVGRADA,#00HMOV GRADB,#00H MOVR2,#100 MOVDPTR,#CHENGJI ;1000H送DPTR LOOP:MOVXA,DPTRCJNEA,#60,LOOP1 LOOP1: JNC NEXT1INC GRADB ;21H单元的内容加1 SJMP NEXTNEXT1: INC GRADANEXT: INC DPTRDJNZ R2,LOOP ;(R2)-1R2 不为零,转移 SJMP $END该程序的作用是 本程序完成对100个数(如100个学生成绩)的过滤统计,成绩在60以上的学生统计到GRADA,60的学生统计到GRADB。8. 程序解释LEN DATA 20HSUM DATA 21H BLOCK DAT

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号