首页 单片机习题参考答案08-12

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

举报
开通vip

单片机习题参考答案08-12单片机习题参考答案 第四章 P97 6,7,9,10,12,16,17,18,19,23,27,28,29 6. 在80C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式及顺序执行每条指令后的结果。 机器码(H) 指令 结果 源操作数的寻址方式 E540 MOV A,40H ;A=(40H)=48H 直接寻址 F8 MOV R0,A ;R0=4...

单片机习题参考答案08-12
单片机习题参考答案 第四章 P97 6,7,9,10,12,16,17,18,19,23,27,28,29 6. 在80C51片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H,请分析下段程序中各指令的作用,并翻译成相应的机器码;说明源操作数的寻址方式及顺序执行每条指令后的结果。 机器码(H) 指令 结果 源操作数的寻址方式 E540 MOV A,40H ;A=(40H)=48H 直接寻址 F8 MOV R0,A ;R0=48H 寄存器寻址 7590F0 MOV P1,#0F0H ;P1=0F0H 立即寻址 A630 MOV @R0,30H ;(48H)= 38H 直接寻址 901246 MOV DPTR,#1246H;DPTR=1246H 立即寻址 853840 MOV 40H,38H ;(40H)=40H 直接寻址 A830 MOV R0,30H ;R0=38H 直接寻址 8890 MOV 90H,R0 ;(90H)=38H 寄存器寻址 754830 MOV 48H,#30H ;(48H)=30H 立即寻址 E6 MOV A,@R0 ;A=40H 寄存器间接寻址 8590A0 MOV P2,P1 ;P2=P1=38H 直接寻址 7. 试说明下列指令的作用,并将其翻译成机器码,执行最后一条指令对PSW有何影响?A的终值为多少? 机器码(H) 指令 结果 (1) 7872 MOV R0,#72H ;R0=72H E8 MOV A,R0 ;A=72H,P=0 244B ADD A,#4BH ;A=BDH,CY=0,OV=1,AC=0,P=0 (2) 7402 MOV A,#02H ;A=02H,P=1 F5F0 MOV B,A ;B=02H 740A MOV A,#0AH ;A=0AH,P=0 25F0 ADD A,B ;A=0CH,CY=0,OV=0,AC=0,P=0 A4 MUL AB ;A=18H,B=0,CY=0,OV=0,AC=0,P=0 (3) 7420 MOV A,#20H ;A=20H,P=1 F5F0 MOV B, A ;B=20H 25F0 ADD A,B ;A=40H,CY=0,OV=0,AC=0,P=1 9410 SUBB A,#10H ;A=30H,CY=0,OV=0,AC=0,P=0 84 DIV AB ;A=01H,B=10H,CY=0,OV=0,AC=0,P=1 9. 试编程将片外数据存储器60H中的内容传送到片内RAM 54H单元中。 MOV DPTR,#0060H MOVX A,@DPTR MOV 54H,A (MOV P2,#0 MOV R0,#60H MOVX A,@R0 MOV 54H,A) 10.试编程将寄存器R7内容传送到R1中去。 MOV A,R7 MOV R1,A 12.试说明下段程序中每条指令的作用,并分析当执行完指令后,R0中的内容是什么? MOV R0,#0A7H ;R0=A7H XCH A,R0 ;A=A7H,A的内容暂存R0 SWAP A ;A=7AH XCH A,R0 ;R0=7AH,A的内容恢复 16.试编程将片外RAM中30H和31H单元的内容相乘,结果存放在32H和33H单元中,高位存放在33H单元中。 MOV P2,#0 MOV R0,#30H MOVX A,@R0 MOV B,A INC R0 MOVX A,@R0 MUL AB INC R0 MOVX @R0,A INC R0 MOV A,B MOVX @R0,A MOV DPTR,#30H MOVX A,@DPTR MOV B,A INC DPTR MOVX A,@DPTR MUL AB INC DPTR MOVX @DPTR,A INC DPTR MOV A,B MOVX @DPTR,A 17.试用三种方法将累加器A中无符号数乘2。 (1) CLR C RLC A (2) MOV R0,A ADD A,R0 或 ADD A,ACC (3) MOV B,#2 MUL AB 18.请分析依次执行下面指令的结果: MOV 30H,#0A4H ;(30H)=A4H MOV A,#0D6H ;A=D6H,P=1 MOV R0,#30H ;R0=30H MOV R2,#47H ;R2=47H ANL A,R2 ;A=46H,P=1 ORL A,@R0 ;A=E6H,P=1 SWAP A ;A=6EH,P=1 CPL A ;A=91H,P=1 XRL A,#0FFH ;A=6EH,P=1 ORL 30H,A ;(30H)=EEH 19.求执行下列指令后,累加器A及PSW中进位位CY、奇偶位P和溢出位OV的值。 (1)当A=5BH时 ;ADD A,#8CH 0101 1011 +) 1000 1100 1110 0111 结果:A=E7H,CY=0,OV=0,P=0,AC=1 (2)当A=5BH时 ;ANL A,#7AH 0101 1011 ∧)0111 1010 0101 1010 结果:A=5AH,P=0 (3)当A=5BH时 ;XRL A,#7FH 0101 1011 ⊕)0111 1111 0010 0100 结果:A=24H,P=0 (4)当A=5BH,CY=1时 ;SUBB A,#0E8H 0101 1011 或将减法转换成补码加法 0101 1011 1110 1000 -E8H的补码 0001 1000 -) 1 -1的补码 +) 1111 1111 0111 0010 10111 0010 结果:A=72H,CY=1,OV=0,P=0,AC=0 23.执行下述程序后,SP=?A=?B=?解释每一条指令的作用,并将其翻译成机器码。 地址(H) 机器码(H) ORG 200H 0200 758140 MOV SP,#40H ;SP=40H 0203 7430 MOV A,#30H ;A=30H 0205 120250 LCALL 250H ;调用250H开始的子程序SP=42H, ;(42H)=02H,(41H)=08H 0208 2410 ADD A,#10H ;此句没有执行 020A F5F0 MOV B,A ;B=30H 020C 80FE L1:SJMP L1 ; ORG 0250H 0250 90020A MOV DPTR,#20AH;DPTR=020AH 0253 C082 PUSH DPL ;DPL进栈,SP=43H,(43H)=0AH 0255 C083 PUSH DPH ;DPH进栈,SP=44H,(44H)=02H 0257 22 RET ;返回,此处是利用RET将栈顶内容弹出 PC=020AH,SP=42H 44H 02H 43H 0AH 栈区 42H 02H 41H 08H 40H 执行程序后,SP=42H,A=30H,B=30H 27.试编一程序将外部数据存储器2100H单元中的高4位置“1”,其余位清”0”。 MOV DPTR,#2100H MOVX A,@DPTR ANL A,#0F0H MOV A,#0F0H ORL A,#0F0H MOVX @DPTR,A 28.试编程将内部数据存储器40H单元的第0位和第7位置”1”,其余位变反。 MOV A,40H CPL A SETB ACC.0 (或ORL A,#81H) SETB ACC.7 MOV 40H,A 29.请用位操作指令,求下面逻辑方程: MOV C,P2.1 ORL C,B.0 ANL C,ACC.0 ORL C,/P3.2 MOV P1.7,C MOV C,P1.3 ANL C,ACC.2 ORL C,B.5 ANL C,/P1.1 MOV PSW.5,C MOV C,B.4 ANL C,/P1.5 ORL C,/ACC.7 ANL C,P1.0 MOV P2.3,C 第五章 P112 1,3,6,7,11,20 1. 编程将片内40H~60H单元中内容送到以3000H为首的片外RAM存储区中 方法1: MOV R0,#40H MOV DPTR,#3000H MOV R2,#21H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,LOOP ┋ 方法2: MOV R0,#40H MOV DPTR,#3000H MOV R2,#0 LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR INC R2 CJNE R2,#21H,LOOP ┋ 方法3: MOV R0,#40H MOV DPTR,#3000H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR CJNE R0,#61H,LOOP ┋ 补充:编程将ROM中3000H~3020H单元的内容送片内RAM40H~60H单元中去。 MOV R0,#40H MOV DPTR,#3000H MOV R2,#21H LOOP: CLR A MOVC A,@A+DPTR MOV @R0,A INC R0 INC DPTR DJNZ R2,LOOP 3.编程计算片内RAM区50H~57H 8个单元中数的算术平均值,结果存放在5AH中。 解: ORG 2000H MOV R0,#50H CLR A MOV R2,A LOOP: ADD A,@R0 JNC DOWN INC R2 DOWN: INC R0 CJNE R0,#58H,LOOP MOV R7,#3 SHIFT: XCH A,R2 CLR C RRC A XCH A,R2 RRC A DJNZ R7,SHIFT MOV 5AH,A ┋ 6.设有100个有符号数,连续存放在以2000H为首地址的片外RAM存储区中,试编程统计其中正数、负数、零的个数。 方法1:CLR A MOV R5,A ;存零的个数 MOV R6,A ;存负数的个数 MOV R7,A ;存正数的个数 MOV R2,#100 MOV DPTR,#2000H LOOP: MOVX A,@DPTR JNZ NZERO INC R5 SJMP DOWN NZERO: JNB ACC.7,PLUS INC R6 SJMP DOWN PLUS: INC R7 DOWN: INC DPTR DJNZ R2,LOOP ┋ 方法2: CLR A MOV R5,A ;存零的个数 MOV R6,A ;存负数的个数 MOV R7,A ;存正数的个数 MOV R2,#100 MOV DPTR,#2000H LOOP: MOVX A,@DPTR INC DPTR CJNE A,#0,NZERO INC R5 SJMP DOWN NZERO: JC NEGATIVE INC R7 SJMP DOWN NEGATIVE: INC R6 DOWN: DJNZ R2,LOOP ┋ 7.请将片外数据存储器地址为1000H~1030H的数据块,全部搬迁到片内RAM 30H~60H中,并将原数据块区域全部清“0”。 解: ORG 1000H MOV DPTR,#1000H MOV R0,#30H MOV R2,#31H LOOP: MOVX A,@DPTR MOV @R0,A CLR A MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,LOOP ┋ 8.试编写一子程序,使间址寄存器R1所指向的2个片外RAM连续单元中的高4位二进制数合并为1个字节装入累加器A中。已知R0指向低地址,并要求该单元高4位放在A的高4位中。 XX: MOVX A,@R1 ANL A,#0F0H MOV B,A INC R1 MOVX A,@R1 ANL A,#0F0H SWAP A ORL A,B RET 10.试编一查表程序,从首地址为1000H、长度为100的数据块中找出ASCII码A,将其地址送到10A0H和10A1H单元中。 MOV DPTR,#1000H MOV R7,#100 LOOP: MOVX A,@DPTR CJNE A,#’A’,NXET MOV A,DPL MOV B,DPH MOV DPTR,#10A0H MOVX @DPTR,A MOV A,B INC DPTR MOVX @DPTR,A SJMP $ NEXT: INC DPTR DJNZ R7,LOOP SJMP $ 11.设在200H~204H单元中存放有5个压缩BCD码,编程将它们转换成ASCII码,存放到以205H单元为首地址的存储区中。 方法1: ORG 1000H MOV P2,#02H MOV R0,#00H MOV R1,#05H MOV R2,#05 LOOP: MOVX A,@R0 ANL A,#0FH ORL A,#30H MOVX @R1,A INC R1 MOVX A,@R0 SWAP A ANL A,#0FH ORL A,#30H MOVX @R1,A INC R1 INC R0 DJNZ R2,LOOP ┋ 方法2: ORG 1000H MOV R2,#02H MOV R3,#00H MOV R4,#05H MOV R7,#05 MOV DPH,R2 LOOP: MOV DPL,R3 MOVX A,@DPTR MOV B,A INC DPTR MOV R3,DPL MOV DPL,R4 ANL A,#0FH ORL A,#30H MOVX @DPTR,A INC DPTR MOV A,B SWAP A ANL A,#0FH ORL A,#30H MOVX @DPTR,A INC DPTR MOV R4,DPL DJNZ R7,LOOP ┋ 13.试编程实现下列逻辑表达式的功能。设P1.7~P1.0为8个变量的输入端,而其中P1.7又作为变量输出端。 ① 解:X0 BIT P1.0 X1 BIT P1.1 X2 BIT P1.2 X3 BIT P1.3 X4 BIT P1.4 X5 BIT P1.5 X6 BIT P1.6 X7 BIT P1.7 ORG 2000H MOV C,X0 ANL C,X1 ANL C,/X2 ORL C,/X3 ORL C,X4 ANL C,X5 ANL C,X6 ORL C,/X7 MOV P1.7,C ┋ ② 解:ONE BIT 20H ;存第一项逻辑值 TWO BIT 21H ;存第二项逻辑值 X0 BIT P1.0 X1 BIT P1.1 X2 BIT P1.2 X3 BIT P1.3 X4 BIT P1.4 X5 BIT P1.5 X6 BIT P1.6 X7 BIT P1.7 ORG 2000H MOV C,X0 ANL C,X1 CPL C MOV ONE,C MOV C,X2 ANL C,X3 ANL C,X4 CPL C MOV TWO,C MOV C,X5 ANL C,X6 ANL C,X7 CPL C ORL C,TWO CPL C ORL C,ONE MOV P1.7,C ┋ 20.根据图5.6的线路设计灯亮移位程序,要求8只发光二极管每次亮一个,点亮时间为40ms。顺次一个一个地循环右移点亮,循环不止。已知时钟频率为24MHz。 解: MOV A,#01H LOOP: MOV P1,A LCALL D40MS RR A SJMP LOOP D40MS: MOV R2,#160 EXTERNAL: MOV R3,#250 INTERNAL: DJNZ R3,INTERNAL DJNZ R2,EXTERNAL RET 第六章 P155 5,6,8 5.已知80C51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲其波形如下: 选择T0工作于方式2(8位重置初值)定时50μs fosc=24MHz EMBED Equation.3 (28-X)×0.5μS=50μs X=156=9CH 方法1: MOV TMOD,#02H MOV TH0,#9CH MOV TL0,#9CH CLR P1.2 ;P1.2=0 SETB TR0 HIGH: SETB P1.2 ;P1.2=1,输出50μs高电平 HIGH1: JBC TF0,LOW ;50μs到清TF0,转输出低电平 AJMP HIGH1 ;50μs未到,转HIGH1等待 LOW: MOV R7,#7 ;350μs=7×50μs CLR P1.2 ;P1.2=0输出350μs低电平 LOW1: JBC TF0,LOW2 ;50μs到清TF0,转LOW2 AJMP LOW1 LOW2: DJNZ R7,LOW1 ;7次未到,转LOW1 AJMP HIGH ;7次到,转HIGH,输出50μs高电平 方法2: MOV TMOD,#02H ;设置T0为方式2定时 MOV TH0,#9CH ;赋初值 MOV TL0,#9CH CLR P1.2 SETB TR0 ;启动T0工作 L1: SETB P1.2 ;P1.2=1,输出50μs高电平 MOV R7,#8 DEL: JBC TF0,REP ;50μs到清TF0,转输出低电平 AJMP DEL REP: CLR P1.2 ;P1.2=0输出350μs低电平 DJNZ R7,DEL AJMP L1 方法3: 选择T0工作于方式1定时50μs (216-X)×0.5μS=50μs X=65436=FF9CH 选择T0工作于方式1定时350μs (216-X)×0.5μS=350μs X=64836=FD44H START: MOV TMOD,#01H ;设置T0为方式1定时 LP0: MOV TH0,#0FFH ;赋初值定时50μs MOV TL0,#9CH CLR P1.2 SETB TR0 ;启动T0工作 SETB P1.2 LP1: JBC TF0,LP2 ;P1.2=1,输出50μs高电平 SJMP LP1 LP2: CLR P1.2 MOV TH0,#0FDH ;赋初值定时350μs MOV TL0,#44H LP3: JBC TF0,LP4 ;P1.2=1,输出350μs低电平 SJMP LP3 LP4: SJMP LP0 6.在80C51单片机中,已知时钟频率为12MHz,请编程使P1.0和P1.1分别输出周期为2ms和500μs的方波。 方法1:选择T0工作于方式1定时250μs fosc=12MHz EMBED Equation.3 (216-X)×1μS=250μs X=65286=FF06H MOV TMOD,#01H MOV TH0,#0FFH MOV TL0,#06H SETB TR0 DEL: MOV R7,#4 ;1ms=4×250μs D250: JBC TF0,D2 ;250μs到清TF0,转移 AJMP D250 ;250μs未到,等待 D2: CPL P1.1 MOV TH0,#0FFH ;重装初值 MOV TL0,#06H DJNZ R7,D250 ;4次未到,转D500 CPL P1.0 AJMP DEL ;4次到,转DEL 方法2:选择T0工作于方式2定时250μs (28-X)×1μS=250μs X=6 MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H SETB TR0 DEL: MOV R7,#4 ;1ms=4×250μs D250: JBC TF0,D2 ;250μs到清TF0,转移 AJMP D250 ;250μs未到,等待 D2: CPL P1.1 DJNZ R7,D250 ;4次未到,转D250 CPL P1.0 AJMP DEL ;4次到,转DEL 方法3:选择T0工作于方式2定时250μs,中断 (28-X)×1μS=250μs X=6 T1工作于方式1定时1ms,中断 (216-X)×1μS=1000μs X=64536=FC18H ORG 0000H LJMP MAIN ORG 000BH LJMP T00 ORG 001BH LJMP T11 MAIN: MOV TMOD,#12H MOV TH0,#06H MOV TL0,#06H MOV TH1,#0FCH MOV TL1,#18H MOV IE,#8AH SETB TR0 SETB TR1 SJMP $ T00: CPL P1.1 RETI T11: MOV TH1,#0FCH MOV TL1,#18H CPL P1.0 RETI 方法4:选择T0工作于方式3定时250μs,中断。 (28-X)×1μS=250μs X=6 T0方式3时TL0占用TR0、TF0,TH0占用TR1、TF1。 ORG 0000H LJMP MAIN ORG 000BH LJMP ITL0 ORG 001BH LJMP ITH0 MAIN: MOV SP,#50H MOV TMOD,#03H MOV TH0,#06H MOV TL0,#06H MOV R7,#4 SETB TR0 SETB TR1 MOV IE,#8AH SJMP $ ITL0: MOV TL0,#06H CPL P1.1 RETI ITH0: MOV TH1,#06H DJNZ R7,ITH01 MOV R7,#4 CPL P1.0 ITH01: RETI 7.设系统时钟频率为24MHz,试用定时器T0作外部计数器,编程实现每计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环不止。 fosc=24MHz EMBED Equation.3 T0作外部计数器选择工作于方式1: 1000=216-X X=64536=FC18H T1定时2ms选择工作于方式1: (216-X)×0.5μS=2000μs X=61536=F060H MOV TMOD,#15H START: MOV TH0,#0FCH MOV TL0,#18H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 MOV TH1,#0F0H MOV TL1,#60H SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 SJMP START 8.利用80C51单片机定时器/计数器测量某正脉冲宽度,已知此脉冲宽度小于10ms,主机频率为12MHz。编程测量脉冲宽度,并把结果转换为BCD码顺序存放在以片内50H单元为首地址的内存单元中(50H单元存个位)。 二进制数转换成BCD码是利用按权展开式计算,由于是BCD码计算中要用DA A指令 设脉冲由/INT0输入,T0工作于方式1 fosc=12MHz EMBED Equation.3 MOV TMOD,#09H ;设T0为方式1,GATE=1 MOV TL0,#00H MOV TH0,#00H MOV R0,#4EH JB P3.2,$ ;等待P3.2变低 SETB TR0 ;启动T0准备工作 JNB P3.2,$ ;等待P3.2变高 JB P3.2,$ ;等待P3.2再次变低 CLR TR0 ;停止计数 MOV @R0,TL0 ;存放计数的二进制数低字节入4EH INC R0 MOV @R0,TH0 ;存放计数的二进制数高字节入4EH MOV R1,#50H ;BCD码首址 MOV R5,#3 ;BCD码字节数 CLR A LOOP1: MOV @R1,A ;清存BCD码单元 INC R1 DJNZ R5,LOOP MOV R7,#10H ;二进制数位数 LOOP4: MOV R0,#4EH ;二进制数首址 MOV R6,#2 ;二进制数字节数 CLR C LOOP2: MOV A,@R0 RLC A MOV @R0,A INC R0 DJNZ R6,LOOP2 ;2字节二进制数左移1位 MOV R5,#3 ;BCD码字节数 LOOP3: MOV A,@R1 ADDC A,@R1 ;BCD码乘2加C运算 DA A MOV @R1,A INC R1 DJNZ R5,LOOP3 DJNZ R7,LOOP4 SJMP $ 第7章作业参考答案 P175 2,6,7 2.某异步通讯接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。 解:11(位)×3600(字符/秒)/60秒=660位/秒 注:方式3为11位异步通讯方式。 6.已知定时器T1设置为方式2,用做波特率发生器,系统时钟频率为24MHz,求可能产生的最高和最低的波特率是多少?此时串口工作于方式1或3 EMBED Equation.3 7.设计一个AT89C51单片机的双机通信系统,并编写程序将甲机片外RAM 3400H~3420H单元中的数据块通过串行口传送到乙机的片内RAM 40H~60H单元中。 串行口定义在工作方式1下发送。采用定时器T1方式2作波特率发生器,设波特率为4800,fosc=11.0592MHz。 SMOD=0时,X=250=FAH SMOD=1时,X=244=F4H 本题取SMOD为0 双机异步通信连接图 解:编写发送子程序如下: MOV TM0D,#20H ;设置定时器T1为方式2 MOV TL1,#0FAH ;设预置值 MOV TH1,#0FAH SETB TR1 ;启动定时器T1 MOV SCON,#40H ;设置串行口为方式1 MOV PCON,#00H ;SMOD=0 MOV DPTR,#3400H ;设数据块指针 MOV R7,#21H ;设数据长度 TRS: MOVX A,@DPTR ;取数据送至A MOV SBUF,A ;数据送至SBUF,启动发送 WAIT: JNB TI,$ ;判1帧是否发送完 CLR TI INC DPTR ;更新数据单元 DJNZ R7,TRS ;循环发送至结束 RET ;返回 在进行双机通信时,两机应用相同的工作方式和波特率,因而接收子程序如下: MOV TMOD,#20H ;设置定时器1为方式2 MOV TL1,#0FAH ;设预置值 MOV TH1,#0FAH SETB TR1 ;启动定时器T1 MOV SCON,#40H ;设置串行口为方式3 MOV PCON,#00H ;SMOD=0 MOV R0,#40H ;设置数据块指针 MOV R7,#21H ;设数据块长度 SETB REN ;允许接收 WAIT: JNB RI,$ ;判1帧是否接收完 CLR RI MOV A,SBUF ;读入一帧数据 MOV @R0,A ;存放数据 INC R0 ;修改地址指针 DJNZ R7,WAIT ;判断数据块接收完否 RET ;返回 8.利用80C51串行口控制8位发光二极管工作,要求发光二极管每1S交替地亮、灭,画出电路图并编写程序。 ;P3.1 EQU CLK ;P3.0 EQU SDA(A、B) ;P1.0 EQU CLR CLR P1.0 SETB P1.0 MOV SCON,#00H MOV A,#55H AA: MOV SBUF,A JNB TI,$ CLR TI ACALL DELAY_1S RR A AJMP AA 第8章作业参考答案 P199 3,5 3.AT89S51有几个中断源,各中断申请标志是如何产生的,又如何清“0”的?CPU响应中断时,中断入口地址各是多少? 答:AT89S51单片机有5个中断源,分别为:2个外部输入中断源 (P3.2)和 (P3.3)2个片内定时器T0和T1的溢出中断源TF0(TCON.5)和TF1(TCON.7);1个片内串行口发送和接收中断源TI(SCON.1)和RI(SCON.0)。 各中断标志的产生和清“0”如下: (1)外部中断类 外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断0 和外部中断 输入信号: ——外部中断0请求信号,由P3.2脚输入。通过IT0(TCON.0)来决定中断请求信号是低电平有效还是下跳变有效。一旦输入信号有效,则向CPU申请中断,并且使IE0=1。硬件复位。 ——外部中断1请求信号,功能与用法类似外部中断0。 (2)定时中断类 定时中断是为满足定时或计数溢出处理的需要而设置的。当定时器/计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由外部引入。 TF0——定时器T0溢出中断请求。当定时器T0产生溢出时,定时器T0中断请求标志TF0=1,请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位(即清“0”)。 TF1——定时器TI溢出中断请求。功能与用法类似定时器T0。 (3)串行口中断类 串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行帧数据从RI端引入芯片,才可能引发中断。 RI或TI——串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。响应中断后必须软件复位。 CPU响应中断时,各中断源的中断入口地址是: 中断源 入口地址 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H 定时器T2中断 002BH(仅AT89S52有) 5.用定时器T1定时,要求在P1.6口输出一个方波,周期是1min。晶振频率为12MHz,请用中断方式实现,并分析采用中断后的优点。 解:计算半周期为250μS方波的时间初值。 (28-X)×1μS=250μs X=6=06H 即TH0=06H,TL0=06H; 采用定时器1,方式2定时250μS,则TMOD=20H;采用中断方式工作,IE=88H 输出周期为:P1.6为1min ORG 0000H AJMP MAIN ORG 001BH AJMP AA ORG 0030H MAIN: MOV TH0,#06H MOV TL0,#06H MOV TMOD,#20H MOV IE,#88H SETB TR0 MOV R5,#40 ;250μS×40=10ms MOV R6,#100 ;10ms×100=1S MOV R7,#30 ;1S×30=0.5min SJMP $ 中断服务子程序 AA: DJNZ R5,BB ;250μS到中断,判10ms到? MOV R5,#40 DJNZ R6,BB ;10ms到,判到1S? MOV R6,#100 DJNZ R7,BB ;1S到,判到0.5min? MOV R7,#30 ;半周期0.5min到,P1.6求反 CPL P1.6 BB: RETI 第9章习题参考答案 P236 3,4,5 3.以AT89S51为主机,扩展2片6264 RAM存储器芯片,设计硬件布线图。 (1)译码法: IC0芯片地址范围0000H-1FFFH, IC1芯片地址范围2000H-3FFFH。 (2)线选法: 4.根据图9.5所示线路设计程序。其功能是:按下K0~K3后,对应LED4~LED7发光,按下K4~K7后,对应LED0~LED3发光。 解: ORG 1000H LOOP: MOV DPTR,#0FEFFH MOVX A,@DPTR SWAP A MOVX @DPTR,A SJMP LOOP 5.请利用74HC138设计一个译码电路,分别选中2片29C256和2片62256,且列出各芯片所占的地址范围。 IC0芯片地址范围0000H-7FFFH, IC1芯片地址范围8000H-FFFFH, IC2芯片地址范围0000H-7FFFH, IC3芯片地址范围8000H-FFFFH。 注:外部程序存储器一般应包括0000H附近地址,此时/EA接地。 7.试编程对8255进行初始化,使其A口为基本输出,B口为基本输入,C口上半部为输出,C口下半部为输入。 解: 电路图参见P221页图9.8。 A口为基本输出(方式0),B口为基本输入(方式0),C口上半部为输出,C口半班部为输入。 控制字为10010101B,其控制口地址为FF7FH。 按方式0输入,B口按方式1输出,C口上半部按方式0输出,C口半班部按方式1输入。 解: 电路图参见P211页图9.8。 控制字为1000 0011B,其控制口地址为FF7FH。 其初始化程序为: MOV DPTR,#0FF7FH MOV A,#83H MOVX @DPTR,A � EMBED PBrush ��� PAGE 1 _1194072525.unknown _1290250511.unknown _1290251381.unknown _1383565557.unknown _1383832099.unknown _1290424922.vsd � P2.7 P2.6 �� P2.0 ALE EA P0 PSEN WR RD � E3 E2 E1 C Y1 B A Y0� Q7��Q0 G OE D7��D0� CE A14��A8 A7��A0 IC0 29C256 D7��D0 OE� 74HC373� � � 7� � CE A14��A8 A7��A0 IC1 29C256 D7��D0 OE� CE A14��A8 A7��A0 IC2 62256 WE D7��D0 OE� CE A14��A8 A7��A0 IC2 62256 WE D7��D0 OE� � � � � VCC� � � � � � � � 7� 7� 7� AT89S51� 74HC138� � _1290251295.unknown _1290249860.unknown _1290249913.unknown _1290249687.unknown _1194072530.unknown _1113933717.unknown _1194072353.unknown _1103479522.unknown _1113921759.unknown _1107346099.unknown _1103479521.unknown
本文档为【单片机习题参考答案08-12】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_364880
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:21
分类:工学
上传时间:2012-02-26
浏览量:151