单片机习题参考答案08-12.doc

上传人:scccc 文档编号:12046249 上传时间:2021-12-01 格式:DOC 页数:29 大小:885.50KB
返回 下载 相关 举报
单片机习题参考答案08-12.doc_第1页
第1页 / 共29页
单片机习题参考答案08-12.doc_第2页
第2页 / 共29页
单片机习题参考答案08-12.doc_第3页
第3页 / 共29页
单片机习题参考答案08-12.doc_第4页
第4页 / 共29页
单片机习题参考答案08-12.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《单片机习题参考答案08-12.doc》由会员分享,可在线阅读,更多相关《单片机习题参考答案08-12.doc(29页珍藏版)》请在三一文库上搜索。

1、单片机习题参考答案第四章 P97 6 ,7,9,10,12, 16,17,18,19,23,27,28,296.在 80C51 片内 RAM中,已知(30H)= 38H, ( 38H)= 40H, (40H)= 48H, (48H) = 90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式及 顺序执行每条指令后的结果。机器码 (H) 指令结果源操作数的寻址方式E540MOVA, 40H; A=(40H)=48H直接寻址F8MOVR0, A; R0=48H寄存器寻址7590F0MOVP1, #0F0H; P1=0F0H立即寻址A630MOVR,0 30H; (48H

2、)= 38H直接寻址901246MOVDPTR, #1246H; DPTR=1246H立即寻址853840MOV40H, 38H; (40H)=40H直接寻址A830MOVR0, 30H; R0=38H直接寻址8890MOV90H, R0; (90H)=38H寄存器寻址754830MOV48H, #30H; (48H)=30H立即寻址E6MOVA, RO; A=40H寄存器间接寻址8590A0MOVP2, P1; P2=P1=38H直接寻址7.试说明下列指令的作用,并将其翻译成机器码,执行最后一条指令对PSW有何影响A的终值为多少9 试编程将片外数据存储器60H中的内容传送到片内 RAM 54

3、H单元中。机器码 (H)指令结果(1) 7872MOVRO,#72H; RO=72HE8MOVA, RO; A=72H,P=O244BADDA,#4BH;A=BDH, CY=O, OV=1,AC=O,P=O(2) 74O2MOVA, #O2H; A=O2H,P=1F5FOMOVB,A;B=O2H74OAMOVA,#OAH;A=OAH,P=O25FOADDA,B;A=OCH, CY=O, OV=O,AC=O,P=OA4MULAB; A=18H, B=O, CY=O, OV=O, AC=O, P=O(3) 742OMOVA, #2OH; A=2OH,P=1F5FOMOVB,A;B=2OH25FOA

4、DDA,B;A=4OH, CY=O, OV=O,AC=O,P=1941OSUBBA,#1OH;A=3OH, CY=O, OV=O,AC=O,P=O84DIVAB; A=O1H, B=1OH,CY=O,OV=O, AC=O, P=1MOVDPTR, #0060HMOVXA, DPTRMOV54H, A(MOVP2,#0MOVR0, #60HMOVXA, R0MOV54H, A)10 .试编程将寄存器 R7内容传送到R1中去。MOVA,R7MOVR1, AR0中的内容是什么12.试说明下段程序中每条指令的作用,并分析当执行完指令后,MOVR0, #0A7H ; R0=A7HXCHA, R0; A=

5、A7H A 的内容暂存 R0SWAPA; A=7AHXCHA, R0;R0=7AH A的内容恢复16.试编程将片外 RAM中 30H和31H单元的内容相乘,结果存放在32H和33H单元中,高位存放在33H单元中。MOVP2,#0MOVDPTR, #30HMOVR0, #30HMOVXA, DPTRMOVAX,R0MOVB, AMOVB, AINCDPTRINCR0MOVXA, DPTRMOVAX,R0MULABMULABINCDPTRINCR0MOVXDPTR, AMOVXR0, AINCDPTRINCR0MOVA, BMOVA, BMOVXR0, AMOVXDPTR, A17.试用二种方法将

6、累加器A中无符号数乘2。(1)CLRCRLCA(2)MOVR0, AADDA,R0或ADDA,ACC(3)MOVB, #2MULAB18.请分析依次执行下面指令的结果:MOV30H, #0A4H; (30H)=A4HMOVA, #0D6H; A=D6H, P=1MOVR0, #30H; R0=30HMOVR2, #47H; R2=47HANLA, R2; A=46H, P=1ORLA R0; A=E6H, P=1SWAPA; A=6EH, P=1CPLA; A=91H, P=1XRLA, #0FFH; A=6EH, P=1ORL30H, A; (30H)=EEH19求执行下列指令后,累加器A及

7、PSW中进位位CY奇偶位P和溢出位OV的值。(1)当 A= 5BH 时;ADD A, #8CH0101 1011+) 1000 11001110 0111结果:A=E7H CY=Q OV=QP=0, AC=1(2)当 A= 5BH时;ANL A, #7AH0101 1011A) 0111 10100101 1010结果:A=5AH P=0(3)当 A= 5BH时;XRL A, #7FH0101 1011® ) 0111 11110010 0100结果:A=24H P=0(4)当 A= 5BH, CY= 1 时;SUBB A, #0E8H0101 1011或将减法转换成补码加法0101

8、 10111110 1000-E8H 的补码0001 1000-1 的补码 +) 1111 11110111 001010111 0010结果:A=72H, CY=1, OV=Q P=0, AC=023.执行下述程序后,SP= A= B=解释每一条指令的作用,并将其翻译成机器码。 地址(H)机器码(H) ORG 200H0200758140MOVSP, #40H;SP=40H02037430MOVA, #30H;A=30H0205120250LCALL250H;调用250H开始的子程序SP=42H;(42H)=02H, (41H)=08H02082410ADDA, #10H;此句没有执行020

9、AF5F0MOVB, A;B=30H020C80FEL1: SJMPL1;ORG 0250H025090020AMOVDPTR #20AH DPTR=020AH0253 882PUSHDPL;DPL进栈,SP=43H(43H)=0AH0255 883PUSHDPH;DPH进栈,SP=44H(44H)=02H025722RET;返回,此处是利用1RET将栈顶内PC=020AH SP=42H29执行程序后,SN 42H, A= 30H, B= 30H27.试编一程序将外部数据存储器2100H单元中的高4位置“1”其余位清” 0”MOV DPTR #2100HMOVXA,DPTRANLA, #0F0

10、HMOV A,#0F0HCRLA,#0F0HMOVXDPTR A28.试编程将内部数据存储器40H单元的第0位和第7位置” 1”其余位变反。MOVCPLA 40HSETB(或 ORL A #81H)SETBMOV40H, A 29 请用位操作指令,求下面逻辑方程:(B.0P2.1)P3.2ACC.2 B.5P1.1(1) P1.7 ACC.0MOVC,ORLC,ANLC,ORLC, /MOV, C(2) PSW.5 P1.3MOVANLORLANLMOVc,C,C,C, / ,C(3)P2.3P1.5B.4 ACC.7 P1.0MOVC,ANLORLANLMOVC, /C, /C,C第五章P1

11、12 1, 3 , 6 , 7, 11 , 201.编程将片内40H60H单元中内容送到以 3000H为首的片外 RAM存储区中方法1:MOVR0 , #40HMOVDPTR #3000HMOVR2 , #21HLOOP:MOVA, R0MOVX DPT,R AINCR0INCDPTRDJNZR2, LOOP方法 2:MOVR0, #40HMOVDPTR, #3000HMOVR2, #0LOOP:MOVA, R0MOVX DPT,R AINCR0INCDPTRINCR2CJNER2, #21H, LOOP方法 3:MOVR0, #40HMOVDPTR, #3000HLOOP:MOVA, R0M

12、OVX DPT,R AINCR0INCDPTRCJNER0, #61H, LOOP补充:编程将ROM中 3000H3020H单元的内容送片内 RAM4060H单元中去。MOVR0, #40HMOVDPTR, #3000HMOVR2, #21HLOOP: CLR AMOVCA,A+DPTRMOVINCINCDJNZR,0 AR0DPTRR2, LOOP3.编程计算片内 RAM区 50H57H 8个单元中数的算术平均值,结果存放在5AH中。解: ORGMOVCLRMOV2000HR0, #50HAR2, ALOOP: ADDA, R0JNCDOWNINCR2DOW:N INCR0CJNER0,#5

13、8H, LOOPMOVR7,#3SHIFT: XCHA, R2CLRCRRCAXCHA, R2RRCADJNZR7,SHIFTMOV5AH,A6.设有100个有符号数,连续存放在以2000H为首地址的片外 RAM存储区中,试编程统计其中正数、负数、零的个数。方法 1 : CLRAMOVR5, A;存零的个数MOVR6, A;存负数的个数MOVR7, A;存正数的个数MOVR2, #100MOVDPTR, #2000HLOOP: MOVX A, DPTRJNZ NZEROINC R5SJMP DOWNNZERO: JNB, PLUSINC R6SJMP DOWNPLUS: INCR7DOW:N

14、INCDPTRDJNZR2, LOOP方法 2:CLRAMOVR5,A;存零的个数MOVR6,A;存负数的个数MOVR7,A;存正数的个数MOVR2,#100MOVDPTR, #2000HLOOP:MOVX A, DPTRINCDPTRCJNEA, #0, NZEROINCR5SJMP DOWNNZERO:JCNEGATIVEINC R7SJMP DOWNNEGATIVE: INC R6DOW:N DJNZ R2, LOOP7.请将片外数据存储器地址为1000H1030H的数据块,全部搬迁到片内 RAM30H60H中,并将原数据块区域全部清“0”。解: ORG1000HMOVDPTR, #10

15、00HMOVR0, #30HMOVR2, #31HLOOP: MOVX A, DPTRMOVR,0 ACLRAMOVXDPT,R AINCR0INCDPTRDJNZR2,LOOP&试编写一子程序,使间址寄存器 R1所指向的2个片外RAM连续单元中的高 4位二 进制数合并为1个字节装入累加器 A中。已知R0指向低地址,并要求该单元高 4位放在A 的高 4 位中。XX: MOVXA, R1ANL A,#0F0HMOV B,AINC R1MOVX A, R1ANL A,#0F0HSWAP AORL A,BRET10.试编一查表程序,从首地址为1000H、长度为100的数据块中找出 ASCII

16、码A,将其地址送到 10A0H和10A伯单元中。MOV DPTR,#1000HMOV R7,#100LOOP: MOVX A,DPTRCJNEA,#' A',NXETMOV A,DPLMOV B,DPHMOV DPTR,#10A0HMOVXDPTR,AMOV A,BINC DPTRMOVXDPTR,ASJMP$NEXT: INC DPTRDJNZ R7,LOOPSJMP$ASCII 码,存11.设在200H204H单元中存放有5个压缩BCD码,编程将它们转换成 放到以 205H 单元为首地址的存储区中。方法 1 : ORG1000HMOVP2,#02HMOVR0,#00HMOV

17、R1,#05HMOVR2,#05LOOP: MOVXA, R0ANLA,#0FHORLA,#30HMOVX R,1 A INC R1MOVX A, R0SWAP AANL A, #0FH ORL A, #30H MOVX R,1 AINC R1INC R0DJNZR2, LOOP方法 2: ORG 1000HMOVR2,#02HMOVR3,#00HMOVR4,#05HMOVR7,#05MOV DPH,R2 LOOP: MOV DPL,R3MOVXA, DPTRMOVB,AINCDPTRMOVR3,DPLMOVDPL,R4ANLA, #0FHORLA, #30HMOVXDPTRAINCDPTRM

18、OVA, BSWAPAANLA, #0FHORLA, #30HMOVXDPTRAINCDPTRMOVR4,DPLDJNZR7, LOOP13.试编程实现下列逻辑表达式的功能。设为8个变量的输入端,而其中又作为变量输出端。YX0X/2X3 X 4X5X6 X7解:X0BITX1X2X3X4X5X6BITBITBITBITBITBITX7CRGMOVBIT2000HC, X0ANLANL ORLORL ANL ANLORLC, X1C, /X2C, /X3C, X4C, X5C, X6C, /X7MOV,CYX°X!X2X3X4X5X6X7解:ONE BIT 20H;存第一项逻辑值TWO

19、X0BIT21H;存第二项逻辑值BITX1X2X3BITBITBITX4BITX5BITX6BITX7BITORG2000HMOVC, X0ANLC, X1CPLCMOVONE,MOVC, X2ANLC, X3ANLC, X4CPLCMOVTWO, CMOVC, X5ANLC, X6ANLC, X7CPLCORLC, TWOCPLCORLC, ONEMOV,C20根据图的线路设计灯亮移位程序,要求8 只发光二极管每次亮一个,点亮时间为40ms顺次一个一个地循环右移点亮,循环不止。已知时钟频率为24MHz解: MOVA, #01HLOOP: MOVP1, ALCALLD40MSRRASJMPLO

20、OPD40MS:MOVR2,#160EXTERNA:LMOVR3,#250INTERNAL:DJNZR3,INTERNALDJNZR2, EXTERNALRET第六章 P155 5 ,6,824MHz请利用定时器T0和输出矩形脉冲其波形5. 已知80C51单片机系统时钟频率为 如下:选择TO工作于方式2 (8位重置初值)定时 50卩sfosc=24MHz机器周期T0.5 10 6s 0.5 sfosc 24 108(2 -X )X S=50 sX=156=9CH方法 1 : MOVTMOD #02HMOVTH0 #9CHMOVTL0,#9CHCLR;=0SETBTR0HIGHSETB;=1,输

21、出50卩s高电平HIGH1: JBCTF0,LOW;50卩s到清TF0,转输出低电平AJMFHIGH1;50卩s未到,转HIGH1等待LOWMOVR7,#7;350s=7 X 50 sCLR;=0输出350卩s彳氐电平LOW1 JBCTF0,LOW2;50 i s 至呻青 TF0,转 LOW2AJMPLOW1LOW2 DJNZR7,LOW1;7次未到,转LOW1AJMP-IGH;7次到,转 HIGH输出501 s高电平方法 2: MOVTMOD #02H;设置T0为方式2定时MOVTH0 #9CH;赋初值MOVTL0,#9CHCLRSETBTR0;启动T0工作L1: SETB-=1? 1 ?输

22、出50 i s高电平MOVR7, #8DELJBCTF0,REF;50 i s到清TF0,转输出低电平AJMFDELREPCLR=0输出350卩s低电平DJNZR7,DELAJMFL1方法3:选择T0工作于方式1定时50卩s16(2 -X )X S=50 卩 sX=65436=FF9CH选择T0工作于方式1定时350卩s16(2 -X )X S=350 卩 sX=64836=FD44HSTART: MOVLF0:MOVTMOD #01H;设置 T0为方式1定时TH0, #0FFH;赋初值定时 50 1 sMOV TLO, #9CHCLRSETBTRO;启动T0工作SETBLP1:JBCTF0,

23、LP2;-1,输出50卩s高电平SJMPLP1LP2:CLRMOVTHQ#0FDH;赋初值定时 350卩sMOVTL0,#44HLP3:JBCTF0,LP4;-1,输出350卩s低电平SJMP LP3LP4: SJMP LP06. 在80C51单片机中,已知时钟频率为12MHz请编程使和分别输出周期为2ms和500卩s的方波。方法1 :选择T0工作于方式1定时250卩sfoscWMHz 机器周期 t 工1 106s 1 sfosc 1210616(2 -X )X 1卩 S=250 卩 sX=65286=FF06HMOVTMOD #01HMOVTHQ #0FFHMOV TL0, #06HSETB

24、TR0DELMOVR7, #4;1ms-4X 250sD250:JBCTF0, D2;250卩s到清TF0,转移AJMFD250;250卩s未到,等待D2:CPLMOVTHQ#0FFH;重装初值MOVTL0, #06HDJNZR7,D250;4次未到,转 D500CPLAJMFDEL;4次到,转DEL方法2 :选择T0工作于方式2定时250卩s8(2 -X )X 1 卩 S-250 卩 sX-6MOVTMOD #02HMOVTH0 #06HMOVTL0, #06HSETBTR0DELMOVR7, #4;1ms-4X 250sD250:JBCTF0, D2;250卩s到清TF0,转移AJMFD2

25、50;250卩s未到,等待D2: CPLDJNZR7, D250;4次未到,转D250CPLAJMPDEL;4 次到,转 DEL方法3 :选择TO工作于方式2定时250卩s,中断8(2 -X )X 1 卩 S=250 卩 s X=6T1工作于方式1定时1ms,中断16(2 -X )X 1卩 S=1000 卩 s X=64536=FC18HORG 0000HLJMPMAINORG 000BHLJMPT00ORG 001BHLJMPT11MAIN: MOVTMOD,#12HMOVTH0, #06HMOVTL0, #06HMOVTH1, #0FCHMOVTL1,#18HMOV IE,#8AHSETB

26、TR0SETBTR1SJMP$T00: CPLRETIT11: MOVTH1, #0FCHMOVTL1,#18HCPLRETI方法4 :选择T0工作于方式3定时250卩s,中断。8(2 -X )X 1 卩 S=250 卩 s X=6T0 方式 3 时 TL0 占用 TR0 TF0, TH0 占用 TR1、TF1。ORG 0000HLJMPMAINORG 000BHLJMPI TL0ORG 001BHLJMPI TH0MAIN:MOV SP,#50HMOVTMO,D #03HMOVTH0, #06HMOVTL0, #06HMOV R7,#4SETBTR0SETBTR1MOV IE,#8AHSJM

27、P$ITLO:MOV TLO, #06HCPLRETIITH0:MOV TH1, #06HDJNZR7,ITH01MOV R7,#4CPLITH01:RETI7 .设系统时钟频率为 24MHz试用定时器 T0作外部计数器,编程实现每计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环不止。fosc=24MHz机器周期T12f oscI R莎育O'5 10 s O'5 sT0作外部计数器选择工作于方式1:161000=2 -X X=64536=FC18HT1定时2ms选择工作于方式1:16(2 -X )X S=2000 s X=61536=F060

28、H MOV TMOD,#15HSTART: MOV TH0,#0FCHMOVTL0,#18HSETBTR0JNBTF0,$CLRTF0CLRTR0MOVTH1,#0F0HMOVSETBTR1TL1,#60HJNBTF1,$CLRTF1CLRTR1SJMRSTART&利用80C51单片机定时器/计数器测量某正脉冲宽度,已知此脉冲宽度小于10ms,主机频率为12MHz编程测量脉冲宽度, 并把结果转换为 BCD码顺序存放在以片内 50H单元 为首地址的内存单元中(50H单元存个位)。二进制数转换成BCD码是利用按权展开式计算,由于是BCD码计算中要用 DA A指令设脉冲由/INT0输入,T0

29、工作于方式1fosc=12MHz 机器周期1212110 6 s 1 s6fosc1210MOVTMOD #09H;设T0为方式1, GATE=1MOVTL0, #00HMOVTHQ #00HMOVR0, #4EHJB,$ ;等待变低SETBTR0;启动T0准备工作JNB,$ ;等待变咼JB,$ ;等待再次变低CLRTR0;停止计数MOVR0 TL0;存放计数的二进制数低字节入INCR0MOVR0 TH0;存放计数的二进制数咼字节入MOVR1 , #50H;BCD码首址MOVR5, #3;BCD码字节数CLRALOOP1 MOVR 1 A;清存BCD码单兀INCR1DJNZR5,LOOPMOV

30、R7, #10H;二进制数位数LOOP4 MOVR0, #4EH;二进制数首址MOVR6, #2;二进制数字节数CLRCLOOP2 MOVA, R0RLCAMOVR0 AINCR0DJNZR6,LOOP2;2字节二进制数左移 1位MOVR5, #3;BCD码字节数LOOP3 MOVA, R1addcA R1;BCD码乘2加C运算daAMOVR1 AINCR1DJNZR5,LOOP3DJNZR7,LOOP44EH4EHSJMP$第7章作业参考答案P175 2 , 6, 72. 某异步通讯接口按方式 3传送,已知其每分钟传送 3600个字符,计算其传送波特率。 解:11(位)X 3600 (字符/

31、秒)/60秒=660位/秒注:方式3为11位异步通讯方式。6.已知定时器 T1设置为方式2,用做波特率发生器,系统时钟频率为24MHz求可能产生的最高和最低的波特率是多少此时串口工作于方式 1或3波特率qSMOD f OSC 3212(256 X)波特率max2SMOd fosc3212 (256 X)1 6224 103212 (256 255)125000SMOD m in f osc 3212(256 X)2°24 1063212(256_0)2447. 设计一个 AT89C51单片机的双机通信系统, 并编写程序将甲机片外RAM3400H3420H单元中的数据块通过串行口传送到

32、乙机的片内RAM 40HH 60H单元中。串行口定义在工作方式1下发送。采用定时器T1方式2作波特率发生器,设波特率为4800, fosc=。X 256 型蛀缨0。“ 波特率384SMOD=时,X=250=FAHSMOD=时,X=244=F4H本题取SMO场0解:编写发送子程序如下:256611.059210 (SMOD 1)4800384双机异步通信连接图MOVTM0D # 20H;设置疋时器 T1为方式2MOVTL1, # 0FAH;设预置值MOVTH1,# 0FAHSETBTR1;启动定时器T1MOVSCON #40H;设置串行口为方式 1MOVPCON #00H;SMO少0MOVDPT

33、R #3400H;设数据块指针MOVR7, #21H;设数据长度TRS:MOVXA, DPTR;取数据送至AMOVSBUF A;数据送至SBUF启动发送WAITJNBTI , $;判1帧是否发送完CLRTIINCDPTR;更新数据单兀DJNZR7,TRS;循环发送至结束RET;返回在进行双机通信时,两机应用相同的工作方式和波特率,因而接收子程序如下:MOVTMOD #20H;设置疋时器1为方式2MOVTL1, #0FAH;设预置值MOVTH1, #0FAHSETBTR1;启动定时器T1MOVSCON #40H;设置串行口为方式 3MOVPCON #00H;SMO少0MOVR0, #40H;设置

34、数据块指针MOVR7, #21H;设数据块长度SEIBRzN;允许接收:JNBRI ,$;判1帧是否接收完CLRRIMOVA,SBUFMOV RO, AINCRODJNZR7,WAITRET;读入一帧数据;存放数据;修改地址指针;判断数据块接收完否;返回8.利用80C51串行口控制8位发光二极管工作,要求发光二极管每画出电路图并编写程序。EQU CLKEQU SDA(A B)CLRSETBMOVSCON #00HMOVA, #55HAA: MOVSBUF /JNBTI,$CLRTIACALLDELAY_1SRRAEQU CLRAJMPA1S交替地亮、灭,第8章作业参考答案P199 3 , 53

35、. AT89S51有几个中断源,各中断申请标志是如何产生的,又如何清“0”的CPU响应中断时,中断入口地址各是多少答:AT89S51单片机有5个中断源,分别为:2个外部输入中断源INTO ( P3. 2)和INT1 (P3. 3) 2个片内定时器 T0和T1的溢出中断源 TF0 ()和TF1 () ; 1个片内串行口发送 和接收中断源TI ()和RI ()。各中断标志的产生和清“ 0”如下:(1) 外部中断类夕卜部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断0 閒和外部中断丽输入信号:INTO外部中断0请求信号,由脚输入。通过 IT0 ()来决定中断请求信号是低 电平有效还是下跳变

36、有效。一旦输入信号有效,则向CPU申请中断,并且使IE0=1。硬件复位。丽一一外部中断1请求信号,功能与用法类似外部中断0。(2) 定时中断类定时中断是为满足定时或计数溢出处理的需要而设置的。当定时器/计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中 断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片 上设置引入端,但在计数方式时,中断源可以由外部引入。TFO 定时器TO溢出中断请求。当定时器 TO产生溢出时,定时器 TO中断请求 标志TFO=1,请求中断处理。使用中断时由硬件复位, 在查询方式下可由软件复位 (即清&quo

37、t;0”。TF1 定时器TI溢出中断请求。功能与用法类似定时器TO。(3)串行口中断类串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行帧数据从RI端引入芯片,才可能引发中断。RI或TI串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。响应中断后必须软件复位。CPU响应中断时,各中断源的中断入口地址是:中断源入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中 断0023H定时器T2中断002BH(仅 AT89S52有)5.

38、用定时器T1定时,要求在口输出一个方波,周期是 1min。晶振频率为12MHz请用 中断方式实现,并分析采用中断后的优点。解:计算半周期为250卩S方波的时间初值。(2 -X )X 1 卩 S=250 卩 s X=6=06H即 TH0=06H TL0=06H;采用定时器1,方式2定时250卩S,则TMOD=20H采用中断方式工作,IE=88H 输出周期为:为1minORG 0000HAJMPMAINORG 001BHAJMPAAORG 0030HMAIN MOVTH0, #06HMOVTL0, #06HMOVTMOD #20HMOVIE, #88HSETBTR0MOVR5, #40; 250 卩 SX 40=10msMOVR6, #100; 10msX 100=1SMOVR7, #30; 1SX 30=SJMP$中断服务子程序AA DJNZMOVR5, BBR5, #40;250卩S到中断,判10ms到10ms到,判到1S1S到,判到;半周期到,求反DJNZR6, MOVDJNZR7,MOVBBR6,BBR7,;#100;#30CPLBB:RETI第9章习题参考答案P236 3 , 4,53 .以AT89S51为主机,扩展2片6264 RAM存储器芯片,设计硬件布线图。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1