单片机原理接口与应用李群芳版习题解答参考

上传人:沈*** 文档编号:91612777 上传时间:2022-05-17 格式:DOC 页数:20 大小:437.50KB
收藏 版权申诉 举报 下载
单片机原理接口与应用李群芳版习题解答参考_第1页
第1页 / 共20页
单片机原理接口与应用李群芳版习题解答参考_第2页
第2页 / 共20页
单片机原理接口与应用李群芳版习题解答参考_第3页
第3页 / 共20页
资源描述:

《单片机原理接口与应用李群芳版习题解答参考》由会员分享,可在线阅读,更多相关《单片机原理接口与应用李群芳版习题解答参考(20页珍藏版)》请在装配图网上搜索。

1、 .单片机原理、接口与应用嵌入式系统技术基础习题解答预备篇计算机的基础知识0.1 40H,62H,50H,64H,7DH ,FFH0.2 812 ,104, 213, 256, 2936, 9410.3十进制数原码补码十进制数原码补码281CH1CH250FAHFAH-289CHE4H-347815BHFEA5H10064H64H92803A0H03A0H-1308082HFF7EH-92883A0HFC60H0.4 机器数真值分别为: 27,233,128,8,14717,31467,27824,124780.5 (1)33H+5AH8DH, OV=1, CY=0。 (2) -29H-5DH

2、7AH, OV=0, CY=1。 (3) 65H-3EH27H, OV=0, CY=1。 (4) 4CH-68HE4H, OV=0, CY=0。0.6 十进制数压缩BCD数非压缩BCD数ASCII码3838H0308H3338H255255H020505H323535H483483H040803H343833H764764H070604H373634H10001000H01000000H31303030H10251025H01000205H31303235H0.7 ASCII码表示的十六进制数分别为: 105H, 7CAH, 2000H,8A50H基础篇第1章、MCS-51单片机结构1.1 单

3、片微型计算机(即单片机)是包含CPU、存储器和I/O接口的大规模集成芯片,即它本身包含了除外部设备以外构成微机系统的各个部分,只需接外设即可构成独立的微机应用系统。微机处理器仅为CPU,CPU是构不成独立的微机系统的。1.2 参见教材1.1.1节1.3 参见教材第6页表格1.4 参见教材表1.41.5 参见教材表1.1和表1.21.6 当PSW=10H 说明选中的为第二组通用寄器 R0R7的地址为10H17H1.7 程序存储器和数据存储器尽管地址相同,但在数据操作时,所使用的指令不同,选通信号也不同,因此不会发生错误。1.8 部数据程序外部数据程序1.9 振荡周期=0.1667s 机器周期=2

4、s 指令周期=28s1.10 A=0,PSW=0,SP=07,P0P3=FFH第2章、51系列单片机的指令系统2.1 参见教材2.1节2.2 因为A累加器自带零标志,因此若判断某部RAM单元的容是否为零,必须将其容送到A,JZ指令即可进行判断。2.3 当A=0时,两条指令的地址虽然相同,但操作码不同,MOVC是寻址程序存储器,MOVX是寻址外部数据存储器,送入A的是两个不同存储空间的容。2.4 目的操作数源操作数寄存器直接 SP间接寻址直接直接 直接直接立即寄存器间址直接寄存器变址寄存器间址寄存器2.5 Cy=1, OV=0, A=94H2.6 2.7 A=25H (50H)=0 (51H)=

5、25H (52H)=70H2.8 SP=(61H)(SP)=(24H)SP=(62H)(SP)=(10H)SP=(61H)DPL =(10H)SP=(60H)DPH=(24H)执行结果将0送外部数据存储器的2410单元2.9 程序运行后部RAM(20H)=B4H,A=90H2.10 机器码 源程序7401 LA:MOV A,#01HF590 LB:MOV P1,A 23 RL A B40AFA CJNE,#10,LB 80F6 SJMP LA20 / 202.11 ANL A,#0FH SWAP A ANL P1,#0FH ORL P1,A SJMP $2.12 MOV A,R0 XCH A,

6、R1 MOV R0,A SJMP $2.13 (1)利用乘法指令 MOV B,#04H MUL AB SJMP $ (2) 利用位移指令RL A RL A MOV 20H,A ANL A,#03H MOV B,A MOV A,20H ANL A,#0FCH SJMP $(3)用加法指令完成ADD A,ACC MOV R0,A ;R0=2A MOV A,#0 ADDC A,#0 MOV B,A ;B存2A的进位 MOV A,R0 ADD A,ACC MOV R1,A ;R1=4A MOV A,B ADDC A,B ;进位2 MOV B,A ;存积高位 MOV A,R1 ;存积低位 SJMP $2

7、.14 XRL 40H,#3CHSJMP $2.15 MOV A,20H ADD A,21H DA A MOV 22H,A ;存和低字节 MOV A,#0 ADDC A,#0 MOV 23H,A ;存进位SJMP $2.16 MOV A,R0 JZ ZEMOV R1,#0FFH SJMP $ ZE:MOV R1,#0 SJMP $2.17 MOVA,50HMOVB,51HMUL AB MOV53H,BMOV52H,ASJMP $2.18 MOVR7,#0AH WOP:XRLP1,#03HDJNZR7,WOPSJMP$2.19 单片机的移位指令只对A,且只有循环移位指令,为了使本单元的最高位移进

8、下一单元的最低位,必须用大循环移位指令移位4次。ORG 0CLR CMOV A,20HRLC A MOV 20H,AMOV A,21HRLC AMOV 21H,AMOV A,22HRLC AMOV 22H,AMOV A,#0RLC AMOV 23H,ASJMP $第3章、MSC-51单片机汇编语言程序设计3.1 因为是多个单元操作,为方便修改地址使用间址操作。片外地址用DPTR指示,只能用MOVX指令取数到A,片地址用R0或R1指示,只能用MOV指令操作,因此循环操作外部数据存贮器A 部部数据存贮器。 ORG 0000H MOV DPTR,#1000H MOV R0,#20H LOOP:MOV

9、X A,DPTR MOV R0,A INC DPTR INC R0 CJNE R0,#71H,LOOP SJMP $3.2 要注意两高字节相加应加低字节相加时产生的进位,同时要考虑最高位的进位。ORG 0 MOV A,R0 ADD A,R6 MOV 50H,A MOV A,R7 ADDC A,R1 MOV 51H,A MOV A,#0 ADDC A,ACC MOV 52H,A SJMP $3.3 A中放小于14H(20)的数,平方表的一个数据占2个字节,可用BCD码或二进制数存放.(如A中放的是BCD码,则要先化成二进制数再查表。) ORG 0 MOV DPTR,#TAB ADD A,ACC

10、;A*2 PUSH ACC MOVC A,A+DPTR MOV R7,A POP ACC INC AMOVC A,A+DPTR MOV R6,A SJMP $TAB: DB 00,00,00,01,00,04, 00,09,00,16H, DB 04H,00 3.4 先用异或指令判两数是否同号,在同号中判大小,异号中正数为大.ORG 0 MOV A,20H XRL A,21H ANL A,#80H JZ CMP 20H.7,BGAG: MOV 22H,20H SJMP $ BG: MOV 22H,21H SJMP $ CMP: MOV A,20H CJNE A,21H,GR GR: JNC A

11、G MOV 22H,21HSJMP $ 3.5 fosc=6MHZ机器周期数 DELAY:MOV R1,#0F8H 1 LOOP: MOV R3,#0FAH 1 DJNZ R3,$ 2 DJNZ R1,LOOP 2 RET 2(1+(1+2*0xFA+2)*0xF8+2)*12/6MHz=(1+(1+2*250+2)*248+2)*2us=249.494ms3.6 将待转换的数分离出高半字节并移到低4位 加30H;再将待转换的数分离出低半字节并30H,安排好源地址和转换后数的地址指针,置好循环次数。ORG 0000H MOV A,R0 MOV R7,#05H ANL A, #0FH MOV R

12、0,#20H ADD A,#30H MOV R1,#25H MOV R1,A NET:MOV A,R0 INC R0 ANL A,#0F0H INC R1 SWAP A DJNZ R7,NE ADD A,#30H SJMP $ MOV R1,A END INC R13.7 片RAM间址寄存器只能有R0和R1两个,而正数、负数和零共需3个寄存器指示地址,这时可用堆栈指针指示第三个地址,POP和PUSH在指令可自动修改地址。R0指正数存放地址和R1指负数存放地址 ,SP指源数据存放的末地址,POP指令取源数据,每取一个数地址减1。ORG0000HMOV R7,#10HMOV A,#0MOV R0,

13、AMOV R4,A INC R0MOV R5,A AJMP DJMOV R6,A NE:INC R5MOV R0,#40HMOV R1,AMOV R1,#50HINC R1MOV SP,#3FH AJMP DJ NEXT:POP ACCZER0:INC R6JZ ZER0 DJ: DJNZ R7,NEXT ACC.7,NE SJMP $INC R4 END3.8 可直接用P标志判断( P,ret)ORG 0000HMOVA,40H P,EN ;奇数个1转移ORL A,#80H ;偶数个1 最高位加“1”EN:SJMP $3.9取补不同于求补码,求补码应区别正、负数分别处理,而取补不分正、负,因

14、正、负数均有相对于模的补数。用取反加1求补也可用模(00H)减该数的方法求补。ORG 0000HMOV R7,#03H AB:INC R0MOV R0,#DATA MOV A,R0MOV A,R0 CPL ACPL A ADDC A,#0ADD A,#01 DJNZ R7,ABMOV R0,A SJMP $3.10 16个单字节累加应用ADD指令而不能用ADDC指令,和的低位存A,当和超过一个字节,和的高字节存于B,并要加进低位相加时产生的进位,16个单字节加完后,采用右移4次进行除十六求平均值的运算,商在BUF2单元,余数在BUF2-1单元。ORG 0000HMOV R7,#0FHMOV R

15、0,#BUF1MOV B,#0MOV A,R0 MOV R2,ANEXT:MOV A,R2INC R0ADD A,R0MOVR2,AMOV A,BADDC A,#0MOV B,ADJNZR7,NEXT;以上完成求和MOV R6,#04HMOV BUF2,AMOV BUF2-1,#0NEX: CLR CMOV A,BRRC AMOV B,AMOV A,BUF2RRC AMOV BUF2,AMOV A,BUF2-1RRC AMOV BUF2-1,ADJNZ R6,NEXSJMP $ ;以上完成除十六运算3.11 将20H单元的容分解为高4位和低4位,根据是否大于9分别作加37H和30H处理。ORG

16、 0000HMOV A,20HANL A,#0F0HSWAP AACALL ASCIIMOV 22H,AMOV A,20HANL A,#0FHACALL ASCIIMOV 21H,ASJMP $ASCII: CJNE A,#0AH,NENE: JC A30ADD A,#37HRETA30: ADD A,30HRET3.12 要注意,位的逻辑运算其中一个操作数必须在C。ORG 0000H MOV C,20H ANL C,2FH CPL C ORL C,/2FH CPL C ANL C,53H MOV P1.0,C SJMP $ END3.13ORG 0000H MOV C,ACC.3 ANL C

17、,P1.4 ANL C,/ACC.5 MOV 20H,C MOV C,B.4 CPL C ANL C,/P1.5 ORL C,20H MOV P1.2,C SJMP $ END3.14 设一字节乘数存放在R1,三字节的被乘数存放在data开始的部RAM单元,且低字节存放在低位地址单元,R0作为被乘数和积的地址指针,用MUL指令完成一字节乘一字节,每一次部分积的低位加上一次部分积的高位,其和的进位加在本次部分积的高位上,并暂存,三字节乘一字节共需这样三次乘、加、存操作,以R7作循环三次的计数寄存器。ORG 0000HMOV R7,#03HMOV A,#0MOV R0,#dataADDC A,BM

18、OV R2,#0 MOV R2,ANEXT:MOVA,R0 INC R0MOV B,R1DJNZ R7,NEXTMUL ABMOV R0,BADD A,R2 SJMP $ MOV R0,A END第4章、并行接口P0-P3和单片机的中断系统4.14.3 参考教材4.1节4.4用P1.7监测按键开关,P1.0引脚输出正脉冲,正脉冲的产生只需要将P1.0置零、置1、延时、再置零即可。P1.0接一示波器可观察波形。如果再接一发光二极管,可观察到发光二极管的闪烁。电路设计可参考图4.4汇编语言程序ORG 0000HABC:CLR P1.0SETB P1.7P1.7,$ ;未按键等待JNB P1.7,$

19、 ;键未弹起等待SETB P1.0MOV R2,#0DAY:NOPNOPDJNZ R2,DAY图4.4SJMP ABC4.5 电路见图4.5, 初始值送0FH到P1, 再和0FFH异或从P1口输出,或使用SWAP A指令,然后从P1口输出,循环运行,要注意输出后要延时。汇编语言程序ORG 0000HMOV A,#0FHABC:MOV P1,AACALL D05SWAP ASJMP ABCD05:MOV R6,250DY:MOV R7,250DAY:NOP图4.5NOPDJNZ R7,DAYDJNZ R6,DYRET END4.6 如使用共阴极数码管,阴极接地,阳极ag分别接P0P3的某个口的7

20、位,将0F的段码列成表,表的容顺次从该口输出。如数码管接P3口。汇编语言程序ORG 0000HMOV DPTR,#TAB AGAIN:MOV R0,#0NEXT:MOV A,R0MOVC A,A+DPTRMOV P3,AMOV R7,#0DAY:NOPNOPDJNZ R7,DAYINC R0CJNE R0,#10H,NEXTSJMP AGAINTAB: DB 3FH,06H ;段码表(略)END4.7电路设计见图4.7,编程如下:ORG0000HMOV A,#08HMOV DPTR,#TABMOVC A,A+DPTRMOV P1,AMOV R2,#08H AGAIN:MOV A,#01 NEX

21、T:MOV P3,AACALL DAYRL ACJNE A,#10H,NEXTDJNZ R2,AGAINSJMP $TAB:DB 3FH,06H图4.7END4.8 P1口的八根线接行线,输出行扫描信号,P3口的八根线接列线,输入回馈信号。见图4.8。4.94.12参见4.2节4.13 电路设计见图4.13汇编语言程序ORG 0000HAJMP MAIN ORG 0003HRL A ;中断服务MOV P1,ARETI图4.8MAIN:MOV A,#0FEHMOV P1,A ;第一灯亮SETB EASETB EX0SETB IT0 SJMP $汇编语言中只有一个中断源,不存在占用别的中断源向量地

22、址问题,程序顺序排下,应注意程序的执行过程。C语言无循环移位指令移位后,后面补零,因此和01相或。4.14 略4.15 图4.13ORG0000HAJMP MAINORG 0003H ;中断服务XRL P1,#0FFH DJNZ R0,NECLREANE:RETI ORG 0030HMAIN:SETB EASETB EX0SETB IT0MOVP1,#0FFHMOV R0,#0AHSJMP$ ;等待中断因一亮一灭为一次,所以共十次。4.16 两个数码管阳极经驱动器接P1口,阴极分别接P3.0、P3.1。aa EQU 08H;存储高四位的段码bb EQU 09H;存储第四位的段码i EQU 0A

23、H;存储计数值Tab:DB 3FH,06H ;段码表略ORG 0000HAJMP MAINORG 0013HAJMP INTRMAIN:MOV DPTR,#TabCLR AMOVC A,A+DPTRMOV aa,AMOV bb,A;a=b=Tab0CLR P3.0CLR P3.1SETB EASETB EX0SETB IT0;开中断LOOP:SETB P3.0CLR P3.1MOV P1,bb;显示低位ACALL Delay;延时CLR P3.0SETB P3.1MOV P1,aa;显示高位ACALL Delay;延时SJMP LOOPINTR:CLR EX0INC i;i加一MOV A,iA

24、NL A,#0FH;取i的低位MOV DPTR,#TabMOVC A,A+DPTRMOV bb,A;查表b=Tabi的低位MOV A,iANL A,#0F0HSWAP A;取i的高位MOVC A,A+DPTRMOV aa,A;查表a=Tabi的高位SETB EX0RETIDelay:;略END4.17提示:将X1至X3分别接至一个三输入或非门的三个输入端,同时还分别接至单片机的三个IO口,或非门的输出端接至单片机的外部中断引脚。中断服务程序中检查三个IO口的值,便可知道具体的故障源。程序略。第五章、单片机的定时/计数器与串行接口5.15.3 请参考教材5.4 方式0:16.38ms 方式1:1

25、31ms 方式2:512s5.5 使用方式2 计数初值C=100H-0AH=F6H查询方式:ORG 0000HMOV TMOD,#06HMOV TH0,#0F6HMOV TL0,#0F6HSETB TR0ABC: JNB TF0,$CLR TF0CPL P1.0SJMP ABC中断方式:ORG 0000HAJMP MAINORG 0000BHCPL P1.0RETIMAIN: MOV TMOD,#06HMOV TH0, #0F6HSETBEASETB ET0SETB TR0SJMP$ ; 等待中断5.6 1000HZ的周期为1ms,即要求每500sP1.0变反一次,使用方式T1方式1,MC=1

26、2 / fosc=1s, C=216-500s /1s =FE0CH,除TMOD=10H,TH0=FEH,TL0=0CH外,程序与5.5题相同,注意每次要重置TH0和TL05.7 f=6MHz MC=2s 方式2的最大定时为 512s符合题目的要求。50s时,计数初值为C1=256-25=E7H,350s时计数初值为C2=256-175=51H汇编语言程序ORG 0000H MOV TMOD,#02HNEXT:MOV TH0,#51HMOV TL0,#51HCLR P1.2SETB TR0AB1:JBC TF0,EXTSJMP AB1EXT:SETB P1.2MOV TH0,#0E7HMOV

27、TL0,#0E7HAB2:JBC TF0,NEXTSJMPAB2上述的计数初值没有考虑指令的执行时间,因此误差较大,查每条指令的机器周期,扣除这些时间,算得C=E3H,这样误差较小。5.8 P1.0输出2ms脉冲,P1.0输出50s脉冲。汇编语言程序ORG 0000H MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H SETB TR0 MOV R0,#04HNE: JNB TF0,$ CLR TF0 CPL P1.1 DJNZ R0,NE CPL P1.0 AJMP NE5.9ORG 0000HMAIN:MOV TMOD,#15HLOOP:LCALL Counte

28、rLCALL TimerSJMP LOOPCounter:MOV TH0,#0FDHMOV TL0,#18HSETB TR0CLR TR1JNB TF0,$CLR TF0RETTimer:MOV TH1,#0F9HMOV TL1,#30HSETB TR1CLR TR0TF1,$CLR TF1RETEND5.10略5.11 参见教材5.3.1节5.1255555.12 方式3为每桢11位数据格式 3600*11/60=660(波特)5.135.13 T1的方式2模式不需要重装时间常数(计数初值),不影响CPU执行通信程序.设波特率为fbaut计数初值为x,依据公式fbaut=2somd/32*(

29、fosc/12(256-x) 求得x=256-(2SMOD/32)*(fosc/fbaut)5.0133333333333333355.14 最低波特率为T1定时最大值时,此时计数初值为256,并且SOMD=0, fbaut=(1/32)*( fosc/(12(256-0)=61最高波特率为T1定时最小值(1)且SOMD=1时fbaut=(2/32)* fosc/(12(256-1)=3125055.15 取SMOD=1 计算TH1=TL1=B2发送ORG 0000HMOV TMOD,#20HMOV TH1,#0B2HMOV TL1,#0B2HSETB TR1MOV SCON,#40HMOV

30、A,#0NEXT: MOV SBUF,ATES:JBC T1,ADD1SJMP TESADD1: INC ACJNE A,#20H,NEXTSJMP $END接收ORG 0000HMOV TMOD,#20HMOV TH1,#0B2HMOV TL1,#0B2HSETB TR1MOV SCON,#50HMOV R0,#20HTEC: JBC RI,REC SJMP TECREC: MOV R0,SBUFINC R0CJNE R0,#40H,TECSJMP $END5.16 略5.17利用串行通信方式2(波特率固定),采用奇校验方式,将校验位放在TB8中,乙机检验校验位,如正确,则存于片外4400H

31、开始的RAM中,如错误,通知对方重发,R6存放数据块长度汇编语言程序如下:发方ORG 0000HMOV DPTR,#3400HMOV R6,#0A1HMOV SCON,#90HMOV SBUF,R6L2:JBC T1,L3AJMP 1.2L3:MOV 1,DPTR P,L4SETB TB8L4:MOV SBUF ,AL5:JBC T1,L6AJMP L5L6:JBC RI,L7AJMP L6L7:MOV A,SBUFCJNE A,#0FF0H,L8AJMP L3L8:INC DPLDJNZ R6,L4SJMP $收方ORG 0000HMOV DPTR,#4400HMOV SCON,#90HL1

32、:JBC RI,L2AJMP L1L2:MOV A,SBUFMOV R6,AL3:JBC RI,L4AJMP L3L4:MOV A,SBUFP,L5JNB RB8,L8SJMP $L5: JB8,L8L6:MOVX DPTR,AINC DPLINC DPHDJNZ R6,L3SJMP $L8:MOV A,#0FFHMOV SBUF,AL9:JBC TI,L3AJMP L9SJMP $END5.18电路图见教材中图5.18,程序如下:ORG 0000HMOV R5,#03HCLR AMOV SCON,ALOOP:SETB P3.3CLR AMOVR7,ADEF: MOV A,R5;循环4次MOV

33、 DPTR,#tabMOVC A,A+DPTR;查表A=tabR5MOV SBUF,ADEC R5JNB T1,$CLR T1CJNE R5,#0FFH,ABC;若R5=255,则R5=7MOV R5,#07HABC:INC R7CJNE R7,#04H,DEF;循环4次CLR P3.3LCALL timerSJMP LOOPtimer:MOVA,#64HFOR:JZ ENDDMOV TMOD,#01HMOV TH0,#0D9HMOV TL0,#0F0HSETB TR0JNB TF0,$CLR TF0DEC ASJMP FORENDD:RETtab:DB0c0H,0f9H,0a4H;略END第

34、6章、单片机总线与存储器的扩展6.1参见6.1节6.2 6116为2KB8位RAM,共11根地址线A0A10,接线见图6.2。图6.26.3 2732为4KB8位EPROM,6264为8KB8位RAM,因各只有一片,所以各片选CE接地,电路见图6.3。图6.36.4 6116为2KB8位RAM、2716为2KB8位EPROM,地址线均为11位,地址线接线参见图6.3。6.5 电路见图6.5。图6.54片2764的CE分别接138译码器为y0、y1、y2、y3端,各片地址为:2764(4) 0000H1FFFH2764(3) 2000H3FFFH2764(2) 4000H5FFFH2764(1)

35、 6000H7FFFH6.6 设计电路见图6.6。图6.6第7章、单片机系统功能扩展7.1 将图6.6中的2764去掉,并改“P2.5”为“P2.4”,改“P2.6”为“P2.7”;程序可参考教材中例7.1。7.2 请参考上题和题4.16。将244的输入端最低位经过一个上拉电阻接至+5V,经过一个按钮接到地。7.3 电路图见图7.3MOV DPTR,#0CFFBHMOV A,#0A2HMOVX DPTR,A7.4 电路与上题类似,程序较简单,略。、7.5 8255A口、B口、C口、控制口地址分别为7CFFH、7DFFH 、7EFFH、7FFFH,A口方式0输出,C口输出,控制字80H。电路见图

36、7.5图7.3图7.5程序:ORG 0000HMOV DPTR,#7FFH;指向控制口MOV A,#80H ; A口B口均采用基本输出方式MOVX DPTR,A ; 写控制字MOV DPTR,#7CFFHMOV A,#0MOVX DPTR,A ;清显示AGAIN:MOV R0,#0 ;R0存字形表偏移量MOV R1,#01 ;R1置数码表位选代码NEXT:MOVDPTR,#7EFFH ;指向C口MOV A,R1MOVX DPTR, A ;从C口输出位选码MOV A,R0MOV DPTR,#TAB ;置字形表头地址MOVC A,A+DPTR ;查字形码表MOV DPTR,#7CFFH ;指向B口

37、MOVX DPTR, A ;从B口输出字形码ACALL DAY ;延时INC R0 ;指向下一位字形MOV A,R1RL A ;指向下一位MOV R1,ACJNE R1,#10H,NEXT ;六个数码管显示完?SJMPAGAINDAY: MOV R6,#50 ;延时子程序DL2: MOV R7, #7DHDL1: NOP NOPDJNZ R7,DL1DJNZ R6,DL2RETTAB1:DB 6FH,3FH,3FH ,5EH ;“g00d”(9ood)的字形码7.6 提示:EPROM27128O 16KB8,地址线为14根,6264为8KB8位,地址线为13根,电路可参考教材中图7.3。7.7

38、 根据电路连线I/O 口:A口:FDF8H,B口:FDF9H,C口:FDFAH,命令/状态口:FDFBH.定时器 TIMEL:FDFCH TIMEH:FDFDH存贮器RAM :FC00HFCFFH第8章、单片机典型外围接口技术8.1电路参照教材中图8.7,不同的是将P2。7改为P2。3,先计算各模拟量对应的数字量:3C对应的数字量:5V/3V=255/X C=153=99H同样可算得1V、2V、4V对应的数字量分别为33H、66H、CCH 三角波MOV DPTR,#OF7FFHNEXT1:MOV A,#0NEXT: MOVX DPTR,ANOPNOPINC ACJNE A,#9AH,NEXTN

39、EXTA:DEC AMOVX DPTR,ANOPNOPCJNE A,#0,NEXTASJMP NEXT1END 方波4V对应的数字量为CCH MOV DPTR, #0F7FFH MOV A,#0NEXT: MOVX DPTR,AACALL D2MSXRL A,#0CCHSJMP NEXT 阶梯波MOV DPTR, #0F7FFHNEC: MOV A,#0 NEXT: MOVX DPTR,AACALL D1MSADD A,#33HCJNE A,#0FFH, NEXTANEXTA:MOVX DPTR,AACALL D5MSSJMP NEC8.2电路参考教材中图8.8,增加一个地址,使用两条输出指令

40、才能输出一个数据,其他同上。8.3电路参考教材中图8.7,地址为7FFFH。ORG 0000HMOV DPTR,#7FFFHMOV R0,#20HMOV A, R0NEXT:MOVX DPTR,AACALL D1MSINC R0CJNE R0,#30H,NEXTSJMP$END8.4电路参阅教材中图8.11,不同的是将P2。5P2。7改为P2。0P2。2,各地址分别为FEFFH、FDFFH、FBFFH。程序参照教材8.1.2.3节,注意修改RAM地址,循环执行该程序。8.5电路参阅教材中图8.2,不同的是 延时方式:EOC悬空;查询方式:EOC经非门接单片机P1.0端口线;中断方式同原图。下面

41、仅编查询程序。IN2的地址为7FFAH,由于EOC经非门接单片机P1.0端口线,查询到P1.0为零,即转换完毕。ORG 0000HMOV R7,#0AHMOV R0,#50HMOV DPTR,#7FFAHNEXT: MOVX DPTR,A ;启动转换P1.0,$ ;查询等待MOVXA,DPTR;读入数据MOV R0,AINC R0DJNZ NEXTSJMP $8.6 ADC0809采集入中模拟信号,顺序采集一次,将采集结果存放于数组ad中。ADC0809模拟通道07的地址为7FF8H7FFFH,ADC0809的转换完毕端EOC经逻辑非后接至外部中断1,电路参考教材中图8.2。程序参考教材第16

42、7页的例子,只需修改数据存储区地址。8.7 电路参考教材中图8.26,增加键盘的行线和数码管个数至8个,减少键盘列线到2根,程序略。第9章、串行接口技术9.1-9.3 请参考教材9.4 电路参照教材中图9.12,另外一片24C04的A1接到VCC其它引脚与第一片完全一样。9.5略9.6 可以,在操作IIC总线时,将SPI总线上的所有器件的从机选择线置高,这样便不会对SPI总线有影响;在操作SPI总线时,让IIC总线的SDA保持高电平,这样IIC总线得不到起始信号,便不会对IIC总线有影响。9.7 TLC5615经SPI总线接至单片机(参照教材中图9.26),REFIN作为衰减器的输入,OUT作

43、为衰减器的输出。根据,其增益为:。9.8 提示:用较快的速度对被测电压进行采样(采样时间间隔恒定为t),将一定时间段(T)的获得的采样值(v)的平方对时间积分(实为求和)后除以该时间段的长度,最后开平方,便是被测电压在该时间段近似的有效值。,其中k=T/t。应用篇第10章、单片机的C语言编程C5110.1 第6行,缺少“;”;第8行“;”多余;main函数最后缺少“”。10.2 xdata的地址围为0x0000到0xFFFF(共64K),它需要两个字节记录()。10.3char bdata a;floatxdata b; int xdata * c(注意不要定义为“xdata int * c”

44、或“int * xdata c”,这样c为自身在xdata区,指向默认区域的int型数据的指针,与题意不符);10.4 main()int xdata c;c=DBYTE0x20*DBYTE0x35;10.5 #include #include sbit P1_0=P10;sbit P1_2=P12;sbit P1_3=P13;unsigned char * pData=&DBYTE0x30;TLC()unsigned char k,i;unsigned char d=0;for(k=10;k0;k-)P1_3=0;for(i=8;i0;i-)d=1;d|=P1_2;P1_0=1;P1_0=0

45、;*pData=d;pData+;main()P1=0x04;P1_0=0;P1_3=1;TLC();while(1);10.6 略10.7 略10.8 #includemain()char i;for(i=0x10;i0x16;i+)DBYTEi=XBYTEi;10.9 #includemain()unsigned int * x,* y,* z;x=(unsigned int *)0x20;y=(unsigned int *)0x22;z=(unsigned int *)0x24;if(*x*y)*z=*x;else*z=*y;while(1);10.10 #include main()u

46、nsigned char *pBCD=(unsigned char *)0x21;unsigned long *pBinary=(unsigned long *)0x30;unsigned char *pLen=(unsigned char *)0x20;*pBinary=0;while(*pLen)(*pLen)-;*pBinary*=10;*pBinary+=*(pBCD+*pLen);/程序认为BCD码是低位放在低地址的10.11 #include main()unsigned int *pBinary=(unsigned int *)0x30;unsigned char *pBCD=(

47、unsigned char *)0x21;unsigned char *pLen=(unsigned char *)0x20;*pLen=0;while(*pBinary)*pBCD=*pBinary%10;(*pLen)+;pBCD+;*pBinary/=10;/程序将BCD码的低位放在低地址第11章、RTX51实时操作系统略第12章、以MCU为核心的嵌入式系统的设计与调试12.1 参见教材第12.2节12.2 提示,.利用定时/计数器定时100ms,中断10次达1秒,满60秒,分加1秒清0;满60分,小时加1分清0,同时分,秒均有十位数和个位数,按十进制进位,并送显示,显示可采用6个数码管(或八个数码管),校对可用按键中断方式或按键的查询进行加1校对,用并行口接驱动器(非门或三极管)驱动扬声器进行闹钟,如果采用89C51/S51做,由于片己有程序存储器,四个口用户均可使用.12.3提示,两个定时器同时使用,一个定时器产生节拍,另一个定时器产生音符。12.4-12.5 略第13章、单片机实验指导略

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!