单片机原理编程题(共29页).doc
《单片机原理编程题(共29页).doc》由会员分享,可在线阅读,更多相关《单片机原理编程题(共29页).doc(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:
11、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 DATA 22HCLRA ;A清0 MOV R2,LEN MOV R1,#BLOCK LOOP:ADDA,R1 ;(A)+(R1)A INC R1CHECK:DJNZ
12、R2,LOOP ;LEN个单元未加完,继续 MOV SUM,A SJMP $ END该程序的作用是:完成BLOCK单元开始的LEN单元中数据个数的累加,累加结果保存到SUM单元中。 9. 程序解释XXDATA 40HYY DATA41HMOVA,XX JZ DONE MOVR0,#0FFH ;提示:0FFH表示-1 JNB ACC.7,NEG ;若A 0,则转向NEGMOVR0,#01H ; 01送R0 NEG:MOV A, R0DONE:MOV YY,A ;(A)送41H单元 SJMP$ END该程序的作用是:判断40H单元中的内容,结果放在41H单元中。大于0放1,小于0放-1,等于0放0
13、。 10. 程序解释ONEDATA 30HTWO DATA 31H;TWO地址定义为31HMAXDATA 32HCLRC;C清零MOV A,ONESUBB A,TWO;(A)-(31H)结果送AJNC XMAXYMAX:MOVA,TWOSJMPDONEXMAX:MOVA,ONEDONE:MOVMAX,A该程序的作用是:本程序完成ONE和TWO的两个单元中的数的比较,大数存入MAX单元中。 11. 程序解释BLOCK1 DATA 20HBLOCK2 DATA 40H MOV R0,#BLOCK1 MOV R1,#BLOCK2 MOV R2,#03 CLR CLOOP: MOV A,R0 ;被加数
14、送A ADDC A,R1 ;带进位加法 MOV R0,A ;和送(R0) INC R0 INC R1 DJNZ R2,LOOP1 SJMP $ END该程序的作用是:内部RAM中BLOCK1(20H)开始的三字节数与BLOCK2(40H)开始的两个三字节数相加,和数存放到BLOCK1开始的单元。 12. 程序解释SHIFT:MOV DPTR,#TABJMOV A,R2RL A ;A乘2ADD A,R2JMP A+DPTR;跳转到(A)+(DPTR)PCTABJ:LJMP PRG0;跳转到PRG0 LJMP PRG1LJMP PRGN该程序的作用是:根据内部RAM中R2数据转向不同的子程序,R2
15、=0转PRG0,R2=1转PRG1, R2=N转PRGN 13. 程序解释START:CLR AMOV R2,#10 MOV R1,#21H ;21H送R1 NEXT: ADD A,R1 ;(A)+(R1)A INC R1 DJNZ R2,NEXT ;未加完,跳转 MOV22H,A SJMP $ END该程序的作用是:完成21H单元开始的10个数据块的累加,结果保存到22H单元。14. 程序解释LEN DATA 20HMAX DATA 21H ADDR DATA 30H MOV MAX,#00H MOV R0,#ADDR LOOP: MOV A,R0 CJNE A,MAX,NEXT1 ;(A)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 编程 29
限制150内