单片机原理编程题_第1页
单片机原理编程题_第2页
单片机原理编程题_第3页
单片机原理编程题_第4页
单片机原理编程题_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 试编一程序,分别统计在内部RAM的30H50

2、H单元的数据区中奇数和偶数的个数,并将奇数和偶数的个数分别存放在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亮,周而复始。请编制程序。参考程序:ORG

3、 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 DPTRCJNE A,#0,L

4、1INC 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 A,R0ANL A,#0F

5、0H ;取高位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,R0ANL A,#0FH

6、MOV 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,#0FHMOV R2,A SJMP

7、$ ;等待 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 30HVARDATA 30HFUNCD

8、ATA 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)=(A)+(DPTR) B

9、RTAB: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 0030H MOV A, 20H

10、 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

11、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 R2,LOOP ;

12、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。 10.

13、 程序解释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 ;被加数送A AD

14、DC 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=0转PR

15、G0,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)与(MAX

16、)比较,不等去NEXTNEXT1: JC NEXT ;C=1 去NEXT MOV MAX,ANEXT: INC R0 ;R0内容加1 DJNZ LEN,LOOP SJMP $ END该程序的作用是:内部RAM中ADDR(30H)开始的x个数据的比较,将最大的数字送MAX单元。x由LEN(20H)单元给出。 15. 程序解释 MOV A,R0ANL A,#0FH ;0FH与A相与,结果送A MOV DPTR,#ASCTABMOVC A,A+DPTR ;查表 MOV R0,A ; 查表结果存入R0 SJMP $ASCTAB:DB 0, 1, 2, 3, 4 DB5, 6, 7, 8, 9 DB A

17、, B, C, D, E , F END该程序的作用是:将R0中低4位的0F的十六进制数据转换成ASCTAB中的编码存放到R0中。16. 程序解释 ORG 100HMERG:MOVX A,R0 ; 读片外RAM第一字节ANL A,#0FHSWAP A ;高低4位相互交换 MOV B,A INC R0MOVX A,R0 ANL A,#0FHORL A,B ;A或B, 结果送A DEC R0 MOVX R0,A SJMP $ END该程序的作用是:将R0指向的两个字节的低4位和并为一个字节,保存到原R0指向的存储单元。 17. 程序解释START:MOV DPTR,#DTATABMOVA,R4 ;

18、(R4)A ADD A,DPL ;(DPL)+(A)A MOVDPL,ACLR A ;清AADDCA,DPHMOVDPH,A CLR A MOVCA,A+DPTR MOVR5,A RETDTATAB: DB ;元素表格,高字节在前 DB END该程序的作用是:根据R4中的内容(元素序号)在DTATAB表格中查表,将查表得到的数据存入R5中。18. 程序解释START:MOV A, R0ACALL SQR ;调用子程SQR MOV R2,AMOV A, R1 ACALL SQRADD A,R2 ;(R2)+(A)A MOV R2,A SJMP $SQR: ADD A,#01HMOVC A,A+P

19、C ;查平方表 RETSQRTAB:DB 0,1,4,9,16 ;平方表 DB 25,36,49,64,81 END该程序的作用是:将R0和R1中的两个个位数进行平方元算,然后相加,和存入R2中。19. 程序解释MOV R2,#0AHMOV R0,#50HCLR ALOOP: MOV R0,A ;(A)(R0) INC R0DJNZ R2,LOOP ;(R2)-1不等于0,跳转 RET ;子程序返回 END 该程序的作用是: 将50H59H单元置0 20. 程序解释CONT:MOV R0, #10 ;10送R0 MOV 31H,#00HMOV R1,#01HCLOP:MOV A,R1CLR C

20、RLC A ;乘2 ADD A,31H ;(A)+(31H)结果送A MOV 31H,A INC R1 DJNZ R0,CLOPRETEND该程序的作用是: 将110十个数乘2后再累加,结果送31H单元。 21. 程序解释DLAY:MOV R7,#02H ;02H送R7 DL:MOVR6,#0FFHDL1:DJNZ R6,DL1 ;(R6)-1不为零转移。DJNZ R7,DL RETEND ;程序结束伪指令 该程序的作用是:利用R6,R7实现双循环延时子程序22. 程序解释MATH DATA 1000H PASS DATA 20HNOPASS DATA 21H MOV PASS,#00HMOV

21、 NOPASS,#00H MOV R2,#0C8HMOV DPTR,#MATHLOOP:MOVX A, DPTR ;片外单元(DPTR)ACJNE A,#60,LOOP1 ;(A)不等于60转移 LOOP1: JNC NEXT1NEXT: INC NOPASS SJMP NEXT2NEXT1: INC PASS ;PASS单元内容加1 NEXT2: INC DPTR DJNZ R2,LOOP RET END该程序的作用是:完成1000H开始的200(C8H)个数的过滤统计,在60及以上的统计到PASS,<60的到NOPASS。 23. 程序解释CLEAN:MOV DPTR,#1000H

22、; 设置数据区首地址 MOVR2,#51HCLR ACLOOP:MOVX DPTR, A ; 0 (DPTR)INC DPTR DJNZR2,CLOOP ; R2-1不为零转移 RET END该程序的作用是:将外部RAM1000H1050H单元的内容清零。24. 程序解释DMOV:MOV DPTR,#2000HMOV R2,#00HDLOOP:MOVX A,DPTR ;设置源数据区首地址MOV DPH,#30H ;置目的数据区高8位地址 MOVX DPTR,A MOV DPH,#20HINC DPTR ;指向下一个数据单元 DJNZ R2,DLOOP END该程序的作用是:将2000H20FF

23、H的数据块传送到3000H30FFH单元 25. 程序解释LOK1:MOV21H,0MOVR2,#08H;置统计次数MOVA,20HLOOP:RLC A;A的内容带进位作循环JNCLP1INC 21HLP1:DJNZR2,LOOP;次数未完继续RET该程序的作用是:求20H单元数据中”1”的个数,并将统计结果存入21H。 26. 程序解释SUM DATA31HBLOCK DATA33H CLR ACLRCMOV SUM,AMOVSUM+1,AMOVR2,#10MOVR1,#BLOCK ;33H送R1LOOP:MOV A,SUMADD A,R1 ;(A)+(R1)AMOV SUM,AMOV A,

24、SUM+1ADDCA,0 ;加进位位到高字节MOV SUM+1,AINC R1DJNZ R2,LOOPSJMP $END该程序的作用是:完成BLOCK开始的10个字节数据的累加,结果(双字节)保存到(SUM+1)(SUM)。27. 程序解释ORG 0000HSJMP MAIN;跳转到MAINORG 0003H. ORG 0030HMain:;主程序SUBINT0: RETI;INT0中断返回SUB_T0: SUB_INT1: SUB_T1: SUB_UART: 该程序的作用是:8031/8051系统程序框架,包括主程序及全部中断服务程序框架。28. 程序解释TB:MOVA,R2ADDA,R2M

25、OVR3,AADDA,#6MOVCA,A+PC;查第一字节XCHA,R3;交换A,R3内容,保存在R3ADDA,#3MOVCA,A+PCMOVR4,ARETTAB:DW1520,3721,DW该程序的作用是:根据R2内容为索引,在TAB检索数据,检索结果存放到R3R4中。(TAB中内容为双字节数据) 29. 程序解释DATLEN DATA 21HSEACH:MOV R0,#30H ;30H送R0 MOV 20H,#0FFHSLOP: MOV A,R0CJNEA,20H,NEXT ;A与20H单元内容比较 NEXT: JNCSLP1 ;(A)大,跳转 MOV 20H,ASLP1: INC R0D

26、JNZ DATLEN,SLOP RET END该程序的作用是:将30H开始的DATLEN个数据中最小的数搜出,保存到20H单元。30. 程序解释 ORG 100HDATAX DATA 10HDATAY DATA 11HCLR C ;清C MOV A,DATAXRLC A ;A左循环 JNC POSICLR A SJMP DONEPOSI: MOVA,#01HDONE:MOV DATAY,A ;(A)送DATAY SJMP $ END该程序的作用是: 判断10H单元的内容,结果送11单元,大于等于零时送1,小于零时送零。 31. 程序解释ORG100HMOVA,R0CJNEA,#3AH,NEXT

27、1;(A)与3AH比较JNCERRCJNE A,#30HJCERR;有借位,跳转CLRCSUBBA,#30H;转换ASCII码为十进制数字SJMPDONEERR:MOVA,#0FFHDONE:MOVR0,ASJMP$END该程序的作用是:完成将R0中十进制数字09的ASCII码值转换为十进制值,结果存放到R0。32. 程序解释CONP:MOVDPTR,#8000H ;置外RAM数据区首地址MOVR0,#20HCLOP: MOVA,R0 JB ACC.0,LP1 ;判奇偶,奇数,转判下一个MOVXDPTR,AINC DPTRLP1: INC R0CJNE R0,#30H,CLOP ;判循环,未完

28、继续 RET该程序的作用是: 完成对202FH单元中的数据判断,如果数据为偶数,将被写入外部RAM中8000H开始的存储单元。五、综合设计题()1、设计一串行通信接收程序,将接收的16个数据存入片内50H5FH中,串行口为方式1,波特率为1200bps,SMOD=0,fosc6MHz。参考答案T1工作方式2:,x243f3hMOVTMOD,#00100000BMOVSCON,#01010000BMOVPCON,#00HMOVTH1,#0F3HMOVTL1,#0F3HCLRESMOVR7,#16MOVR0,#50HSETBTR1WAIT:JNBRI,WAITCLRRIMOVR0,SBUFINCR

29、0DJNZR7,WAIT2.试编程要求用T1定时器控制P1.7引脚输出周期为40ms、占空比为50的矩形脉冲。要求主程序入口地址0050H及中断服务子程序入口地址2000H。fosc=6MHz(15)方式1:(216x)×220000,xdbf0hORG000HLJMPMAINORG001BHLJMPT1_INTORG0050HMAIN:MOVTMOD,#00010000BMOVTH1,#0D8HMOVTL1,#0F0HSETBEASETBET1SETBTR1SJMP$ORG2000HT1_INT:CPLP1.7MOVTH1,#0D8HMOVTL1,#0F0HRETI3、试编制程序,

30、使T0每计满500个外部输入脉冲后,由T1定时,在P1.0输出一个脉宽10ms的正脉冲(假设在10ms内外部输入脉冲少于500个),fosc12MHz。(15)计算过程如下:(216-x1)*1us=10000us x1=b8f0h216-x0=500us x0=fe0chorg000hljmpmainorg00bhljmpt0_intorg01bhljmpt1_intorg100hmain:movsp,#60hmovtmod,#00010101bmovie,#10001010bmovth0,0fehmovtl0,0chclrp1.0setbtr0sjmp$t0_int:movth0,0feh

31、movtl0,0chmovth1,#0b8hmovtl1,#0f0hsetbp1.0setbtr1retit1_int:clrp1.0clrtr1reti4.如下图示,甲乙两机进行通信,要求甲机能读取8个按键的状态(0或1)并将读到的状态发送给乙机,乙机接收到后将数据通过8个发光二极管显示,要求编写甲乙两机的通信程序。(20)T1工作在方式2:波特率1200T1初值:甲机:MAIN:MOVTMOD,#00100000BMOVSCON,#01000000BMOVPCON,#00HMOVTH1,#0F3HMOVTL1,#0F3HCLRESSETBTR1MOVP1,#0FFHLOOP:MOVA,P1

32、MOVSBUF,AJNBTI,$CLRTISJMPLOOP乙机:ORG000HLJMPMAINORG0023HLJMPI_ESORG050HMAIN:MOVTMOD,#00100000BMOVSCON,#01010000BMOVPCON,#00HMOVTH1,#0F3HMOVTL1,#0F3HCLRESSETBTR1SJMP$I_ES:MOVA,SBUFCLRRIMOVP1,ARETI5.使用定时/计数器0以工作方式2实现定时,在P1.0输出周期为200s的连续方波。已知晶振频率fosc=6MH。求计数初值,方式控制字,编制相应程序.(中断方式)TMOD格式:解:(2分)计数初值X=256-5

33、0=206=CEH(2分)TMOD=02H(6分)主程序:MOVTMOD#02HMOVTH0,#0CEHMOVTL0,#0CEHSETBEASETBET0LOOP:SETBTR0HERE:S JMP$中断服务程序:CPLP1.0RETI6、试编写程序,查找在内部RAM的30H60H单元中出现“0FFH”这一数据的次数。并将查找到的结果存入61H单元。答:START: MOV 61H,#0MOV R0,#30HMOV R2,#30HLOOP: MOV A,R0CJNE A,#0FFH,NEXTINC 61HNEXT: INC R0DJNZ R2,LOOPRET7、编写程序,将外部数据存储器中的4

34、000H40FFH单元全部置“1”。ORG 0000HMAIN: MOV A,#0FFH ;送预置数给AMOV R0,#0FFH ;设置循环次数MOV DPTR,#4000H ;设置数据指针的初值LOOP: MOVX DPTR,A ;当前单元清零INC DPTR ;指向下一个单元DJNZ R0,LOOP ;是否结束END8.、试编写程序,查找在内部RAM的40H60H单元中是否有0FFH这一数据。若有,则将51H单元置为“00H”;若未找到,则将51H单元置为“01H”。(5分)START: MOV R0,#40HMOV R2,#20HLOOP: MOV A,R0CJNE A,#0FFH,NE

35、XTMOV 51H,#00HLJMP EXITNEXT: INC R0DJNZ R2,LOOPMOV 51H,#01HEXIT: RET9、编写一段程序,功能要求为:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。(15分)答:将P1.1的输入脉冲接入T0,即使用T0计数器完成对P1.1口的脉冲计数。编写程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: JNB P1.0,MAINMOV TMOD,#05H ;定时器/计数器T0为计数方式1SETB

36、TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断WAIT: JB P1.2,WAITCLR EACLR TR0MOV R1,TH0MOV R0,TL0AJMP $IT0P: INC R2 ;在电平负跳变前,如果计数器溢出,则进位存入R2RETI11. 编程将片内RAM20H2FH 单元开始的16个数传送到片外RAM 3000H300FH 开始的单元中。(12分)MOV R0,#20HMOV DPTR,#3000HMOV R7,#10H (6分)LOOP: MOV A,R0MOVX DPTR,AINC R0INC DPTRDJNZ R7,LOOPNOPE

37、ND (6分)12.将存放在单片机片内数据存储器30H,31H,32H三个单元中不同的数据按从小到大的顺序排序,并将结果存放在片内RAM的30H32H中。(10分)MOV SP,#52HMOV A,30HCLR C SUBB A,31HJC LP1MOV A,31HXCH A,30HMOV 31H,A (3分)LP1: MOV A,30HCLR CSUBB A,32HJC LP2MOV A,32HXCH A,30HXCH A,31HMOV 32H,ASJMP LP3 (3分)LP2: MOV A,31HCLR CSUBB A,32HJC LP3MOV A,31HXCH A,32HMOV 31H

38、,ASJMP LP3LP3: NOP (4分)SJMP $13、使用定时器中断方式编程实现从P1.0引脚上输出一个周期为1s的方波。(系统时钟为6MHz)解:使用定时器T0产生50ms的定时,然后在计数10次,从而500ms的定时。 (5分)ORG 0000HAJMP MAINORG 000BHLJMP TMR0_INTORG 0030HMAIN: MOV TMOD,#01HMOV TH0,#9EHMOV TL0,#58HMOV R7,#10SETB ET0SETB EASETB TR0SJMP $TMR0_INT: CLR TR0DJNZ R7,LOOPMOV R7,#10CPL P1.0L

39、OOP: MOV TH0,#9EHMOV TL0,#58HSETB TR0RETI (10分)14.已知一MCS51单片机系统的片内RAM 20H单元存放了一个8位无符号数7AH,片外扩展RAM的8000H存放了一个8位无符号数86H,试编程完成以上两个单元中的无符号数相加,并将和值送往片外RAM的01H、00H单元中,同时将所编写程序运行完成后的数据和状态添入下表中给出的PSW的有关位以及寄存器A、DPTR和RAM单元中。CY A DPTR 片外01H 片外00H 片外8000H 参考答案CY A DPTR 片外01H 片外00H 片外8000H 0 01H 8000H 0lH 00H 86H MOV DPTR,#8000H ;加数单元地址送DPTR MOVX A,DPTR ;取加数之一ADD A,20H ;两数相加MOV R0,#00H ;和值的低位送片外00H单元MOVx R0,A INC R0 CLR A ;计算和值的高位ADDC A,#00H MOVXR0,A ;高位送片外01H单元RET 编程要考虑将进位位的值作为结果的一部分取出来。采用其他编程方式也可以,但结果是不会改变的,和值100H 六、简答题1请将片外RAM 20H25H单元清零MoV R0,#20H MOV R7,#06H CL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论