单片机习题参考答案
第四章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
43H
栈区
42H
41H
40H
执行程序后,SP,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 (或ORL A,#81H)
SETB
MOV 40H,A
29.请用位操作指令,求下面逻辑方程:
ACC
P∨
B
=
P
∧
∨
7.1
0.
)1.2
)1(P
(
0.
2.3
MOV C,
ORL C,
ANL C,
ORL C,/
MOV ,C
ACC
P
PSW∧
∧
=
∨
5.
5.
1.1
B
2.
3.1
)2(P
MOV C,
ANL C,
ORL C,
ANL C,/
MOV ,C
P
B
P∧
∧
=
∨
ACC
7.
0.1
)3(P
4.
5.1
3.2
MOV C,
ANL C,/
ORL C,/
ANL C,
MOV ,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 ,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.试编程实现下列逻辑表达式的功能。设~为8个变量的输入端,而其中又作为变量输出端。
①76543210X X X X X X X X Y +++= 解:X0 BIT X1 BIT X2 BIT X3 BIT X4 BIT X5 BIT X6 BIT X7 BIT
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 ,C
┋
②76543210X X X X X X X X Y ++= 解:ONE
BIT
20H ;存第一项逻辑值 TWO BIT 21H ;存第二项逻辑值 X0 BIT X1 BIT X2 BIT X3 BIT X4 BIT X5
BIT
X6 BIT
X7 BIT
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 ,C
┋
20.根据图的线路设计灯亮移位程序,要求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和输出矩形脉冲其波形如下:
选择T0工作于方式2(8位重置初值)定时50μs
fosc=24MHz s s f T osc μ5.0105.010
24121266=?=?==-机器周期
(28-X )×μS=50μs X=156=9CH
方法1: MOV TMOD ,#02H
MOV TH0,#9CH MOV TL0,#9CH CLR ;=0 SETB TR0 HIGH : SETB
;=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
;=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 SETB TR0 ;启动T0工作
L1: S ETB ;=1,输出50μs 高电平 MOV R7,#8 DEL : JBC TF0,REP ;50μs 到清TF0,转输出低电平
AJMP DEL
REP : CLR ;=0输出350μs 低电平 DJNZ R7,DEL
AJMP L1
方法3: 选择T0工作于方式1定时50μs
(216-X )×μS=50μs X=65436=FF9CH
选择T0工作于方式1定时350μs
(216-X )×μS=350μs X=64836=FD44H
START: MOV TMOD ,#01H ;设置T0为方式1定时 LP0: MOV TH0,#0FFH ;赋初值定时50μs
MOV TL0,#9CH CLR SETB TR0 ;启动T0工作 SETB
LP1: JBC TF0,LP2 ;=1,输出50μs 高电平 SJMP LP1
LP2:
CLR MOV TH0,#0FDH ;赋初值定时350μs MOV TL0,#44H
LP3: JBC TF0,LP4 ;=1,输出350μs 低电平 SJMP LP3 LP4: SJMP LP0
6.在80C51单片机中,已知时钟频率为12MHz ,请编程使和分别输出周期为2ms 和500μs 的方波。
方法1:选择T0工作于方式1定时250μs
fosc=12MHz s s f T osc
μ110110
1212
1266
=?=?=
=-机器周期 (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
MOV TH0,#0FFH
;重装初值
MOV TL0,#06H DJNZ
R7,D250 ;4次未到,转D500 CPL
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
DJNZ R7,D250 ;4次未到,转D250
CPL 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
RETI
T11: MOV TH1,#0FCH
MOV TL1,#18H
CPL
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: M OV TL0,#06H
CPL
RETI
ITH0: MOV TH1,#06H
DJNZ R7,ITH01 MOV R7,#4 CPL
ITH01:
RETI
7.设系统时钟频率为24MHz ,试用定时器T0作外部计数器,编程实现每计到1000个脉冲,使T1开始2ms 定时,定时时间到后,T0又开始计数,这样反复循环不止。
fosc=24MHz s s f T osc
μ5.0105.010
2412
1266
=?=?=
=-机器周期 T0作外部计数器选择工作于方式1:
1000=216-X X=64536=FC18H T1定时2ms 选择工作于方式1:
(216-X )×μ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 s s f T osc
μ110110
1212
1266
=?=?=
=-机器周期 MOV TMOD ,#09H ;设T0为方式1,GATE=1 MOV TL0,#00H MOV TH0,#00H MOV R0,#4EH JB ,$ ;等待变低 SETB TR0 ;启动T0准备工作 JNB ,$ ;等待变高 JB ,$ ;等待再次变低 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
)
256(12}{322}{X f osc SMOD
-??
=波特率125000)
255256(121024322)256(12}{322}{6
1=-???=-??=X f osc SMOD MAX
波特率
244)
0256(121024322)256(12}{322}{60m in
=-???=-??=X f osc SMOD 波特率
7.设计一个AT89C51单片机的双机通信系统,并编写程序将甲机片外RAM 3400H ~3420H 单元中的数据块通过串行口传送到乙机的片内RAM 40H ~60H 单元中。
串行口定义在工作方式1下发送。采用定时器T1方式2作波特率发生器,设波特率为4800,fosc=。
384
4800)1(100592.11256384}{)1(}{2566?+??-
=?+?-=SMOD SMOD f X osc 波特率
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交替地亮、灭,画出电路图并编写程序。
;EQU CLK
;EQU SDA(A、B)
;EQU CLR
CLR
SETB
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个外部输入中断源0
INT
INT(P3.2)和1(P3.3)2个片内定时器T0和T1的溢出中断源TF0()和TF1();1个片内串行口发送和接收中断源TI()和RI()。
各中断标志的产生和清“0”如下:
(1)外部中断类
外部中断是由外部原因引起的,可以通过两个固定引脚,即外部中断00
INT和外部中断1
INT输入信号:
INT——外部中断0请求信号,由脚输入。通过IT0()来决定中断请求信号是低电平0
有效还是下跳变有效。一旦输入信号有效,则向CPU申请中断,并且使IE0=1。硬件复位。
INT——外部中断1请求信号,功能与用法类似外部中断0。
1
(2)定时中断类
定时中断是为满足定时或计数溢出处理的需要而设置的。当定时器/计数器中的计数结构发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的,无需在芯片上设置引入端,但在计数方式时,中断源可以由外部引入。
TF0——定时器T0溢出中断请求。当定时器T0产生溢出时,定时器T0中断请求标志TF0=1,请求中断处理。使用中断时由硬件复位,在查询方式下可由软件复位(即清“0”)。
TF1——定时器TI溢出中断请求。功能与用法类似定时器T0。
(3)串行口中断类
串行口中断是为串行数据的传送需要而设置的。串行中断请求也是在单片机芯片内部发生的,但当串行口作为接收端时,必须有一完整的串行帧数据从RI端引入芯片,才可能引发中断。
RI或TI——串行中断请求。当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断。响应中断后必须软件复位。
CPU
5.用定时器T1定时,要求在口输出一个方波,周期是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 输出周期为:为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=
SJMP $
中断服务子程序
AA:DJNZ R5,BB ;250μS到中断,判10ms到
MOV R5,#40
DJNZ R6,BB ;10ms到,判到1S
MOV R6,#100
DJNZ R7,BB ;1S到,判到
MOV R7,#30 ;半周期到,求反
CPL
BB: RETI
第9章习题参考答案
P236 3,4,5
3.以AT89S51为主机,扩展2片6264 RAM存储器芯片,设计硬件布线图。
(1)译码法:
IC0芯片地址范围0000H-1FFFH,
IC1芯片地址范围2000H-3FFFH。
(2)线选法:
4.根据图所示线路设计程序。其功能是:按下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页图。
A口为基本输出(方式0),B口为基本输入(方式0),C口上半部为输出,C口半班部为输入。
控制字为B,其控制口地址为FF7FH。
按方式0输入,B口按方式1输出,C口上半部按方式0输出,C口半班部按方式1输入。解: 电路图参见P211页图。
控制字为1000 0011B,其控制口地址为FF7FH。
其初始化程序为:
MOV DPTR,#0FF7FH
MOV A,#83H
MOVX @DPTR,A
一选择题 (n )1.MCS—51单片机是高档16位单片机。 (y )2.MCS—51的产品8051与8031的区别是:8031片内无ROM。 (n )3.单片机的CPU从功能上可分为运算器和存贮器。 (y )4.MCS-51的指令寄存器是一个8位寄存器,用于暂存待执行指令,等待译码。 (n )5.MCS—51的指令寄存器是对指令寄存器中的指令进行译码,将指令转变为执行此指令所需要的电信号。 (y )6.8051的累加器ACC是一个8位的寄存器,简称为A,用来存一个操作数或中间结果。 (y )7.8051的程序状态字寄存器PSW是一个8位的专用寄存器,用于存程序运行中的各种状态信息。 (n )8.MCS—51的程序存贮器用于存放运算中间结果。(y )9.MCS—51的数据存贮器在物理上和逻辑上都分为两个地址空间:一个是片内的256字节的RAM,另一个是片外最大可扩充64K字节的RAM。 (y )10.单片机的复位有上电自动复位和按钮手动复位两种,当单片机运行出错或进入死循环时,可按复位键重新启动。 (n )11.CPU的时钟周期为振荡器频率的倒数。 (n )12.单片机的一个机器周期是指完成某一个规定操作所需的时间,一般情况下,一个机器周期等于一个时钟周期组成。(y )13.单片机的指令周期是执行一条指令所需要的时间。一般由若干个机器周期组成。 (n )14.单片机系统扩展时使用的锁存器,是用于锁存高8位地址。 (n )15.MCS—51单片机上电复位后,片内数据存储器的内容均为00H。 (y )16.当8051单片机的晶振频率为12MHZ时,ALE地址锁存信号端的输出频率为2MHZ的方脉冲。 (y )17.8051单片机片内RAM从00H~1FH的32个单元,不仅可以作工作寄存器使用,而且可作为RAM来读写。 (n )18.MCS—51单片机的片内存贮器称为程序存贮器。(n )19.MCS—51单片机的数据存贮器是指外部存贮器。(y )20.MCS—51单片机的特殊功能寄存器集中布置在片内数据存贮器的一个区域中。 (y )21.微机控制系统的抗干扰问题是关系到微机应用成败的大问题. 二、单项选择题 1.MCS—51单片机的CPU主要的组成部分为a 。 A.运算器、控制器B.加法器、寄存器C.运算器、加法器D.运算器、译码器 2.单片机能直接运行的程序叫c 。 源程序B。汇编程序C。目标程序D。编译程序3.单片机中的程序计数器PC用来c 。 A.存放指令B.存放正在执行的指令地址C.存放下一条指令地址 D.存放上一条指令地址 4.单片机上电复位后,PC的内容和SP的内容为b 。A.0000H,00H B。0000H,07H C。0003H,07H D。0800H,08H 5.单片机8031的ALE引脚是b 。 输出高电平B。输出矩形脉冲,频率为fosc的1/6 C.输出低电平D。输出矩形脉冲,频率为fosc的1/2 6.单片机8031的引脚a 。 A.必须接地B。必须接+5V C。可悬空D。以上三种视需要而定7.访问外部存贮器或其它接口芯片时,作数据线和低8位地址线的是A 。 A.P0口B。P1口C。P2口D。P0口和P2口 8.PSW中的RS1和RS0用来a 。 选择工作寄存器区号B。指示复位C。选择定时器D。选择工作方式 9.上电复位后,PSW的值为d 。 A.1 B。07H C。FFH D。0 10.单片机上电复位后,堆栈区的最大允许范围是b 个单元。A.64 B。120 C。128 D。256 11.单片机上电复位后,堆栈区的最大允许范围是内部RAM的d 。 A.00H—FFH B。00H—07H C。07H—7FH D。08H—7FH 12.堆栈指针SP在内部RAM中的直接地址是c 。 A.00H B。07H C。81H D。FFH 的P0口,当使用外部存贮存器时它是一个d 。 A.传输高8位地址口A.传输低8位地址口 C.传输高8位数据口D.传输低8位地址/数据口 14.P0口作数据线和低8位地址线时b 。 A.应外接上拉电阻B.不能作I/O口C.能作I/O口D.应外接高电平 15.对于8031单片机,其内部RAM d 。 A.只能位寻址B.只能字节寻址C.既可位寻址又可字节寻址D.少部分只能位寻址 16.寻址方式就是c 的方式。 A.查找指令操作码B.查找指令C.查找指令操作数 D.查找指令操作码和操作数 17.8031 单片机若晶振频率为fosc=12MHz,则一个机器周期等于c μS。 A.1/12 B.1/2 C.1 D.2 18.MCS—51单片机的数据指针DPTR是一个16位的专用地址指针寄存器,主要用来b 。 A.存放指令B.存放16位地址,作间址寄存器使用C.存放
---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------
试题 一、填空题(每空1分,共10分) 1.当使用8031单片机时,需要扩展外部程序存储器,此时EA应为____低电平_____. 2.P0通常用作____单片机系统的地址/数据总线_____. 3.若由程序设定RS1、RS0=10,则工作寄存器R0~R7的直接地址为 ____10H-17H_____. 4.返回地址(或断点)是____在程序中断或子程序调用_____的程序计数器的内容。 5.中央处理器CPU是单片机的核心,它完成____运算和控制功能_____. 6.单片机的工作过程,实际上就是____周而复始地取指令和执行指令_____. 7.所谓中断源即是____引起中断的原因_____. 8.端口(或称口)是_____接口电路中已编址并能进行读或写操作的寄存器____. 9.异步串行近程通信时的传送信号是_____TTL 电平信号____. 10.若累加器A中的数据为01110010B,则PSW中的P=____0_____. 二、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共10分) 1.MCS—51单片机的复位信号是(A)有效。 A.高电平 B.低电平 C.脉冲 D.下降沿 2.若MCS-51单片机使用晶振频率为6MHz时,其复位持续时间应该超过(B )。 A.2μs B.4μs C.8μs D.1ms 3.若PSW.4=0,PSW.3=1,要想把寄存器R0的内容入栈,应使用(D )指令。 A.PUSH R0 B.PUSH @R0 C.PUSH 00H D.PUSH 08H 4.能够用紫外光擦除ROM中程序的只读存储器称为(C )。 A.掩膜ROM B.PROM C.EPROM D.EEPROM 5.在片外扩展一片2764程序存储器芯片要(B)地址线。 A.8根 B.13根 C.16根 D.20根 6.定时器/计数器工作方式1是(D )。
单片机原理与接口技术习题答案 习题与思考题1 1-1 微型计算机通常由哪些部分组成?各有哪些功能? 答:微型计算机通常由控制器、运算器、存储器、输入/输出接口电路、输入设备和输出设备组成。控制器的功能是负责从内部存储器中取出指令并对指令进行分析、判断、并根据指令发出控制信号,使计算机有条不紊的协调工作;运算器主要完成算数运算和逻辑运算;存储器用于存储程序和数据;输入/输出接口电路完成CPU与外设之间相连;输入和输出设备用于和计算机进行信息交流的输入和输出。 1-2 单片微型计算机与一般微型计算机相比较有哪些区别?有哪些特点? 答:与通用微型计算机相比,单片机的硬件上,具有严格分工的存储器ROM和RAM和I/O端口引脚具有复用功能;软件上,采用面向控制的指令系统和硬件功能具有广泛的通用性,以及品种规格的系列化。单片机还具备体积小、价格低、性能强大、速度快、用途广、灵活性强、可靠性高等特点。 1-3 简述计算机的工作过程。 答:计算机的工作是由微处理器以一定的时序来不断的取指令、指令译码和执行指令的过程。 1-4 单片机的几个重要指标的定义。 答:单片机的重要指标包括位数、存储器、I/O口、速度、工作电压、功耗和温度。 1-5 单片微型计算机主要应用在哪些方面? 答:单片机的主要应用领域有智能化产品、智能化仪表、智能化测控系统、智能化接口等方面。 1-6 为什么说单片微型计算机有较高的性能价格比和抗干扰能力? 答:因为单片微型计算机主要面向特定应用而设计,设计者在硬件和软件上都高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,具备较高的性能、价格比;单片机嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中,另外单片机体积小,可以放入屏蔽设备中,从而使其具有较高的抗干扰能力。 1-7 简述单片机嵌入式系统的定义和特点。 答:单片机嵌入式系统是嵌入到对象体系中的专用计算机系统;其特点是面向特定应用、与各个行业的具体应用相结合、硬件和软件高效率、软件固化在存储器芯片或单片机本身和不具备自举开发能力。 习题与思考题2 2-1 MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:MCS-51单片机在一块芯片中集成了CPU、RAM、ROM、定时/计数器、多功能I/O口和中断控制等基本功能部件。 单片机的核心部分是CPU,CPU是单片机的大脑和心脏。 程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。 定时/计数器实质上是加法计数器,当它对具有固定时间间隔的内部机器周期进行计数时,它是定时器;当它对外部事件进行计数时,它是计数器。 I/O接口的主要功能包括:缓冲与锁存数据、地址译码、信息格式转换、传递状态(外设状态)和发布命令等。 中断控制可以解决CPU与外设之间速度匹配的问题,使单片机可以及时处理系统中许多随机的参数和信息,同时,它也提高了其处理故障与应变能力的能力。 2-2 MCS-51单片机的核心器件是什么?它由哪些部分组成?各部分的主要功能是什么? 答:单片机的核心部分是CPU,可以说CPU是单片机的大脑和心脏。它由运算器、控制器和布尔(位)处理器组成。 运算器是用于对数据进行算术运算和逻辑操作的执行部件。
填空题(每空1分,共30分) 1.135转换转换成二进制和十六进制分别是和。 属于寻址;INC 30H 属于2.指出指令中操作数的寻址方式:INC @R 1 寻址;RLC A 属于寻址。 3.8051单片机的5中断源分别是、、、和。 4.8051单片机内部设置了个位的定时器/计数器,以实现定时和计数功能;其定时功能是指,计数功能是指。 5.MCS-51系列单片机中控制引脚EA和PSEN的作用分别是和。 6.单片机的时钟产生方法有和两种。 7.单片机程序状态字PSW中P是标志,该标志为1表示,为0表示。 8.MCS-51系列单片机的串行口是的,这个口既可以用作,也可以实现,还可以作为使用。 9. MCS-51系列单片机在访问片外存储器时,高8位地址由口提供,低8位地址由口提供。 10. .DAC0832与MCS-51接口时有、和三种工作方式。 1.MCS-51的程序存储器空间为,其地址指针为;MCS-51的外部数据存储器空间为,其地址指针为。 2.指出以下指令中源操作数的寻址方式:MOVC A,@A+DPTR属于寻址;MOV C,01H 属于寻址;MOV A,P 属于寻址。 1 3.中断过程一般应包括、、和 4个步骤。 4.在单片机的控制应用系统中,可供选择的定时方式有、和 3种。 5.计算机的数据传送方式有和两种方式。 6.8155是Intel公司生产的可编程RAM和I/O扩展芯片,其片内资源有:字节的静态RAM,最快存取时间为;两个可编程的位并行I/O口PA口、PB口,一个可编程的 位并行I/O口PC口;一个可编程的位计数器。 7.ADC0809是一种路模拟量输入,位数字量输出的型A/D转换
一、填空题 已知x的补码数10110111B,x的真值是___201D。 进制转换:134D=__10000110B;=______86H。 32K存储容量对应的地址范围从0000H-7FFFH_。 CPU与内存或I/O接口相连的系统总线通常由_控制总线__、数据总线__、地址总线___等三种信号组成。MCS-51单片机上电复位时PC=_0000_H,SP=_07_H;工作寄存器缺省采用第___________组,这组寄存器的地址范围是从______H~_____H。 MCS-51单片机系列有__5__个中断源,可分为___2__个优先级。上电复位时外部中断0__中断源的优先级别最高。 MCS-51单片机内部RAM共分为______2__个功能区,其高端128个字节的地址空间称为特殊功能寄存器_区,其中仅有________个字节有实际意义。 8255可编程芯片通常作为_并行接口_______扩展之用;8253可编程芯片通常作为_定时器_______扩展之用。8155可编程芯片通常作为_并行接口计数器和存储器______扩展之用;8279可编程芯片通常作为_键盘/显示控制器________扩展之用。 MCS-51 的并行I/O口信息有____读引脚________和____读锁存_________两种读取方法,读一改一写操作是针对并行I/O口内的锁存器进行的。 74LS273通常用来作为简单______输出__________接口扩展;而74LS244则常用来作为简单________输入_______接口扩展。 不带输入数据锁存器的D/A转换器,CPU必须通过______锁存或寄存__器件与D/A转换器传送数据;无三态输出功能的A/D转换器,应当通过_____三态___器件与CPU传送数据。 若用并行口来扩展一个有36只按键的行列式键盘,最少需__12_根I/O线。 74LS138是具有3个输入的译码器芯片,其输出作为片选信号时,最多可以选中___八_块芯片。 MCS-51单片机访问外存储器时利用_____ALE_______信号锁存来自_____P0_____口的低八位地址信号。在MCS-51系统中,当晶振频率采用12MHz时,一个机器周期等于_1__微秒。 8051的T0作为计数器用时,其计数频率不能超过晶振频率的___二十四分之一__。 二、选择题 通常所说的主机是指( C )。 (A)硬件和软件(B)CPU和磁盘存储器 (C)CPU和主存(D)运算器和控制器
***数学计算机科学系实验报告 专业:计算机科学与技术班级:实验课程:单片机原理与应用技术姓名:学号:实验室:硬件实验室 同组同学: 实验时间:2013年3月20日指导教师签字:成绩: 实验项目:发光二极管闪烁 一实验目的和要求 1.使用单片机的P1.5口做输出口,使该位发光二极管闪烁。 2.掌握单片机使用。 二实验环境 PC机一台,实验仪器一套 三实验步骤及实验记录 1.在pc机上,打开Keil C。 2.在Keil C中,新建一个工程文件,点击“Project->New Project…”菜单。 3.选择工程文件要存放的路径 ,输入工程文件名 LED, 最后单击保存。 4. 在弹出的对话框中选择 CPU 厂商及型号。 5.选择好 Atmel 公司的 89c51 后 , 单击确定。 6.在接着出现的对话框中选择“是”。 7.新建一个 C51 文件 , 点击file菜单下的NEW,或单击左上角的 New File快捷键。 8.保存新建的文件,单击SAVE。 9.在出现的对话框中输入保存文件名MAIN.C,再单击“保存”。 10.保存好后把此文件加入到工程中方法如下 : 用鼠标在 Source Group1 上单击右键 , 然后再单击 Add Files to Group ‘Source Group 1'。 11.选择要加入的文件 , 找到 MAIN.C 后 , 单击 Add, 然后单击Close。 12.在编辑框里输入代码如下: #include "reg51.h" //包含头文件 sbit led=P1^5; //表示用led等效于P1^5, P1^0就是指头文件里定义的P1寄存器的第5BIT #define uchar unsigned char #define uint unsigned int
思考与练习题 1 1.1单项选择题 (1)单片机又称为单片微计算机,最初的英文缩写是( D ) A.MCP B.CPU C.DPJ D.SCM (2)Intel 公司的MCS-51系列单片机是( C )的单片机。 A.1 位 B.4 位 C.8 位 D.16 位 (3)单片机的特点里没有包括在内的是( C ) A. 集成度高 B. 功耗低 C. 密封性强 D. 性价比高 (4)单片机的发展趋势中没有包括的是( B ) A. 高性能 B. 高价格 C. 低功耗 D. 高性价比 (5)十进制数56 的二进制数是( A ) A.00111000B B.01011100B C.11000111B D.01010000B (6)十六进制数93 的二进制数是( A ) A.10010011B B.00100011B C.11000011B D.01110011B (7)二进制数11000011 的十六进制数是( B ) A. B3H B.C3H C.D3H D.E3H (8)二进制数11001011 的十进制无符号数是( B ) A. 213 B.203 C.223 D.233 (9)二进制数11001011 的十进制有符号数是( B ) A. 73 B.-75 C.-93 D.75 (10)十进制数29的8421BCD压缩码是( A ) A.00101001B B.10101001B C.11100001B D.10011100B (11)十进制数-36 在8 位微机中的反码和补码是( D ) A.00100100B 、11011100B B.00100100B 、11011011B C.10100100B、11011011B D.11011011B、11011100B (12)十进制数+27在8 位微机中的反码和补码分别是( C ) A.00011011B 、11100100B B.11100100B 、11100101B C.00011011B 、00011011B D.00011011B 、11100101B (13)字符9 的ASCII 码是( D ) A.0011001B B.0101001B C.1001001B D.0111001B (14)ASCII 码1111111B的对应字符是( C ) A. SPACE B.P C.DEL D.{ (15)或逻辑的表达式是( B ) A.A ?B=F B. A+B=F C. A ⊕ B=F D.(A ?B)=F (16)异或逻辑的表达式是( C ) A.A?B=F B. A+B=F C. A ⊕B=F D.(A ?B)=F (17)二进制数10101010B与00000000B的“与”、“或”和“异或”结果是( B ) A.10101010B、10101010B、00000000B B.00000000B、10101010B、10101010B C.00000000B、10101010B、00000000B D.10101010B、00000000B、10101010B (18)二进制数11101110B与01110111B的“与”、“或”和“异或”结果是( D ) A.01100110B、10011001B、11111111B B.11111111B、10011001B、01100110B C.01100110B、01110111B、10011001B D.01100110B、11111111B、10011001B (19)下列集成门电路中具有与门功能的是( D )
判断题 1用户构建单片机应用系统,只能使用芯片提供的信号引脚。 (对) 2、 程序计数器PC 不能为用户使用,因此它就没有地址。 (对) 3、 内部RAM 的位寻址区,只能供位寻址使用而不能供字节寻址使用(错) 4、 对单片机的复位操作就是初始化操作。 (对) 5、 MCS-51单片机内部高128个字节特殊寄存器区都是可位寻址区。 (错) 二、 填空题 1、 MCS-51单片机采用12MHz 晶振时,ALE 引脚脉冲频率为_2MHz __。 2、 若由程序设定 RS1、RS0=11,则工作寄存器 R0-R7的直接地址为_18H-1FH___。 3、 累加器 A 中的数据为 01110010B ,则PSW 中的P=_0 ________ 。 4、 MCS- 51单片机的堆栈区只可设置在 便笺区 ,堆栈寄存器 SP 是_8_位寄存器。 5、 复位时,A=(00H ),PSW=(00H ),SP=(07H ),P0-P3=(FFH ). 三、 选择题 1、 对程序计数器 PC 的操作(A ) A 、是自动进行的。 B 、是通过传送指令进行的。 C 、是通过加1指令进行的。 D 、是通过减1指令进行的。 2、 以下运算中对溢出标志位 0V 没有影响的是(A )。 A 、逻辑运算 B 、符号数加减法运算 C 、乘法运算 D 、除法运算 3、 以下有关PC 和DPTR 的结论中错误的是( C ) A 、 DPTR 是可以访问的而 PC 不能访问。 B 、它们都是16位的寄存器 C 、它们都具有自动加 1功能 D 、DPTR 可分为2个8位寄存器用而PC 不能。 4、 P C 的当前值是(C ) A 、当前指令前一条指令的地址 B 、当前正在执行指令的地址 C 、下一条指令的地址 5、 假定设置堆栈指针 SP 的值为37H ,在进行子程序调用时把断点地址进栈保护后, SP 的值为(D ) A 、36H B 、37H C 、38H D 、39H 6、在 MCS-51 中(C ) A 、具有独立的专用的地址线 第三章 、判断题 复习例题 第二章 C 、由P0 口和P2 口的口线作地址线 D 、由P1 口和P2 口的口线作地址线 B 、由P0 口和P1 口的口线作地址线 (1) MOVX @R0 B (错) (2) MOV A , 30H (对) (3) MOVX A 30H (错) (4) ADDC A , R7 (对) (5) SUB A , R2 (错) (6) ANL #99H , 36H (错) (7) MOV C , ACC.0 (对) (8) ORL P1.0 , P3.1 (错) (9) JBC P0, LL1 (错) (10) ACALL PROC (对) 在错误的指令后画X 。 MOV @R1,#80H () MOV R7,@R1 MOV 20H,@R0 () MOV R1,#0100H CPL R4 (X ) SETB R7.0 MOV 20H,21H () ORL A,R5 ANL R1,#0FH (X ) XRL P1,#31H MOVX A,2000H (X ) MOV 20H,@DPTR (X ) (X ) (X ) () () (X ) 1.判断以下各条指令是否正确(LL1和PROC 为符号地址)
一.闪烁灯 1.实验任务 如图4.1.1所示:在端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。 4.程序设计内容 (1)延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要 求的闪烁时间间隔为秒,相对于微秒来说,相差太大,所以我们在执行 某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是 如何设计呢下面具体介绍其原理:
如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个22+2×248=49820× DJNZ R7,$ 2个2×248(498 DJNZ R6,D1 2个2×20=40 10002 因此,上面的延时程序时间为。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求秒=200ms,10ms×R5 =200ms,则R5=20,延时子程序如下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (2).输出控制 如图1所示,当端口输出高电平,即=1时,根据发光二极管的单向导 电性可知,这时发光二极管L1熄灭;当端口输出低电平,即=0时,发 光二极管L1亮;我们可以使用SETB指令使端口输出高电平,使用CLR 指令使端口输出低电平。 5.程序框图
1.在MCS-51中,有7种寻址方式,它们分别为立即数寻、寄存器寻址、直接寻址、寄存器间接寻址、相对寻址、变址寻址和位寻址。 2.汇编语言的指令格式为标号:操作码操作数注释。 3.数据传送类指令执行完毕,源操作数的内容不会(会/不会)丢失。 4.8051内部RAM从20H至2FH既可位寻址,又可间接寻址,位地址空间从00H到7FH。 5.MCS-51单片机指令系统中,指令长度有一字节、二字节和(三)字节,指令执行时间有一个机器周期、两个机器周期和四机器周期,乘法指令需四机器周期。6.MOV A,20H中,20H的寻址方式称之为_直接___;SETB 20H的寻址方式为位寻址。 7.关于堆栈类操作的两条指令分别是_PUSH(入栈)指令_ 、POP(出栈)指令;堆栈操作只能是寄存器间接寻址寻址。 8.访问8031片外数据存储器MOVX指令采用的是寄存器间接寻址寻址方式。访问片外序存储器MOVC指令采用的是变址寻址方式。 9.设(A)=55H,(R5)=AAH,则执行ANL A,R5指令后的结果是(A)= 00H,(R5)= AAH;则执行ORL A,R5指令后的结果是(A)= FFH ,(R5)= AAF;则执行XRL A,R5指令后的结果是(A)= FFH,(R5)= AAH 。 10.伪指令不产生(产生/不产生)可执行目标代码。汇编语言程序结束的指令为END。11.DA指令跟在ADD,ADDC指令的后面,用与二进制数与BCD码的调整。若 (A)=0AH ,执行DA A指令后,(A)= 15。 单项选择题 1.JMP跳转范围是:(D. -128~127B) 2.MCS—51系列单片机最长的一条指令需 B. 4个机器周期。 3.MOV A,@R0这条指令中@R0的寻址方式称为:(B. 寄存器间接寻址) 4.在CPU内部,反映程序运行状态或反映运算结果的特征寄存器是:B. PSW 5.下列指令中正确的是:B. JBC TF0,L1 6.下列指令中错误的是:A. SETB 50H.0 7.将累加器的值压入堆栈的正确指令是:B. PUSH A 8.下列那条减法指令是错误的:C. SUBBC 9. 指令CJNE A ,#00H ,LOOP 影响PSW的哪一位:C.CY 10. 在MUL AB指令中,若积超过255,则C. OV=1 11.在相对寻址方式中,寻址的结果体现在A.PC中 12.在相对寻址方式中,"相对"两字是指相对于 C.当前指令的末地址 13.在寄存器间接寻址方式中,指定寄存器中存放的是B.操作数地址 14.对程序存储器的读操作,只能使用D.MOVC指令 15.必须进行十进制调整的十进制运算C.只有加法 16.执行返回指令时,返回的断点是C.调用指令下一条指令的首地址 17.下列指令中与进位标志位CY 无关的指令有D.无条件转移指令 18.可以为访问程序存储器提供或构成地址的有D.PC、A、DPTR和SP 19.以下各项中不能用来对内部数据存储器进行访问的是A.数据指针DPTR 20.若原来工作寄存器0组为当前寄存器组,现要改1组为当前寄存器组,不能使用指令C.MOV PSW.3,C 21.不能为程序存储器提供和构成地址的有:D.PSW 22.MCS-51汇编语言指令格式中,唯一不可缺少的部分是:B.操作码 23.MCS—51的立即寻址方式中,立即数前面:D.应加前缀“#”号 24.下列完成8031单片机内部数据传送的指令是:D.MOV direct,direct (25).MCS—51的立即寻址的指令中,立即数就是:A.放在寄存器R0中的内容26.单片机中PUSH和POP指令常用来:C.保护现场,恢复现场 27.MCS—51寻址方式中,操作数Ri加前缀“@”号的寻址方式是:A.寄存器间接寻址 28.MCS—51寻址方式中,位寻址的寻址空间是: D.片内RAM的20H~2FH字节中的所有位和部分专用寄存器SFR的位 29.MCS—51寻址方式中,直接寻址的寻址空间是B.专用寄存器SFR 30.执行指令MOVX A,@DPTR时,WR、RD脚的电平为:C.WR高电平,RD低电平 31.主程序执行完ACALL后返回主程序后,堆栈指针SP的值:A.不变 32.单片机中使用MOVX A,@R1指令寻址数据存贮器1050H单元。B.不能 33.下列指令判断若P1口最低位为高电平就转LP,否则就执行下一句的是:D.JNZ P1.0,LP 34.指令JB OEOH,LP中的OEOH是指:D.一个单元的地址 35.下列指令中比较转移指令是指:B.CJNE Rn,#data,rel
思考与练习题1 1.1单项选择题 (1)单片机又称为单片微计算机,最初的英文缩写是( D ) A.MCP B.CPU C.DPJ D.SCM (2)Intel公司的MCS-51系列单片机是( C )的单片机。 A.1位 B.4位 C.8位 D.16位 (3)单片机的特点里没有包括在内的是( C ) A.集成度高 B.功耗低 C.密封性强 D.性价比高 (4)单片机的发展趋势中没有包括的是( B ) A.高性能 B.高价格 C.低功耗 D.高性价比 (5)十进制数56的二进制数是( A ) A.00111000B B.01011100B C.11000111B D.01010000B (6)十六进制数93的二进制数是( A ) A.10010011B B.00100011B C.11000011B D.01110011B (7)二进制数11000011的十六进制数是( B ) A. B3H B.C3H C.D3H D.E3H (8)二进制数11001011的十进制无符号数是( B ) A. 213 B.203 C.223 D.233 (9)二进制数11001011的十进制有符号数是( B ) A. 73 B.-75 C.-93 D.75 (10)十进制数29的8421BCD压缩码是( A ) A.00101001B B.10101001B C.11100001B D.10011100B (11)十进制数-36在8位微机中的反码和补码是( D ) A.00100100B、11011100B B.00100100B、11011011B C.10100100B、11011011B D.11011011B、11011100B (12)十进制数+27在8位微机中的反码和补码分别是( C ) A.00011011B、11100100B B.11100100B、11100101B C.00011011B、00011011B D.00011011B、11100101B (13)字符9的ASCII码是( D ) A.0011001B B.0101001B C.1001001B D.0111001B (14)ASCII码1111111B的对应字符是( C ) A. SPACE B.P C.DEL D.{ (15)或逻辑的表达式是( B ) A.A?B=F B. A+B=F C. A⊕B=F D.(A?B)=F (16)异或逻辑的表达式是( C ) A.A?B=F B. A+B=F C. A⊕B=F D.(A?B)=F (17)二进制数10101010B与00000000B的“与”、“或”和“异或”结果是( B ) A.10101010B、10101010B、00000000B B.00000000B、10101010B、10101010B C.00000000B、10101010B、00000000B D.10101010B、00000000B、10101010B (18)二进制数11101110B与01110111B的“与”、“或”和“异或”结果是( D ) A.01100110B、10011001B、11111111B B.11111111B、10011001B、01100110B C.01100110B、01110111B、10011001B D.01100110B、11111111B、10011001B (19)下列集成门电路中具有与门功能的是( D ) A.74LS32 B.74LS06 C.74LS10 D.74LS08
单片机练习题答案 一、填空题 1、若单片机振荡脉冲频率为6MHz时,一个机器周期为______2μs________。 2、AT89C51单片机的XTAL1和XTAL2引脚是___外接晶振或时钟__引脚。 3、定时器/计数器的工作方式3是指的将定时器/计数器T0 拆成两个独立的8位计数器。 4、若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为__08~0FH____。 5、写出完成相应功能的汇编指令:将立即数11H送到R2____ MOV R2,#11H ____、使ACC.2置位____ SETB ACC.2__、使累加器的最低2位清零___ ANL A,#0FCH ___。 6、A/D转换的作用是将__模拟____量转为数字量。ADC0809是__8___位的A/D转换芯片。 7、8051的堆栈区一般开辟在用户RAM区的地址为30H~7FH。 8、所谓寻址,其实质就是__如何确定操作数的单元地址问题_。 9、若单片机振荡脉冲频率为12MHz时,一个机器周期为____1μs ______。 10、定时器中断请求发生在__计数溢出的时候_____。 11、中断响应时间是指__从中断请求发生直到被响应去执行中断服务程序所需的时间____。 12、通过CPU对I/O状态的测试,只有I/O已准备好时才能进行I/O传送,这种传送方 式称为____程序查询方式___。 13、在中断服务程序中现场保护和现场恢复期间,中断系统应处在__关中断__状态。 14、8051单片机的内部硬件结构包括了:中央处理器(CPU)、数据存储器(RAM)、程序存储器、和2个16位定时/计数器以及并行I/O口、串行口、中断控制系统、时钟电路、位处理器等部件,这些部件通过内部总线相连接。 15、MCS-51的堆栈只可设置在RAM的地址为30H~7FH,堆栈寄存器sp是8位寄存器。 16、MCS-51单片机的P0~P4口均是并行I/O口,其中的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的数据总线和地址总线,在P0~P4口中,P0为真正的双相口,P1—P3为准双向口;P3口具有第二引脚功能。 17、若LED为共阳极接法(即负逻辑控制),则字符3的八段代码值(a->dot)应当为__0D__H。 18、MCS-51片内20H~2FH范围内的数据存储器,既可以__字节__寻址又可以位寻址。
定时/计数器应用1 本题要求:AT89C51单片机扩展16KB外部程序存储器,目代码存放于外部存储器中,P1.0口接一个发光二极管,编写程序,控制发光二极管闪烁,时间间隔1s,采用AT89C51内部定时器计时。 基础知识:关于内部计数器的编程,主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本题目使用的是定时器,定时1s。CPU运行定时中断方式,实现每1s输出状态发生一次反转,即发光管每隔1s亮一次。 定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD 用于设置定时器/计数器的工作方式0~3,并确定用于定时还是计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器振荡周期。本题中单片机晶振采用12MHz,定时/计数器工作于方式2(8位自动重装方式)定时器,定时器100微妙中断一次,所以定时常数的设置可按以下方法计算: 机器周期=12/12MHz=1μs (256?定时常数)×1μs=100μs 定时常数=156。然后对100微妙中断次数计数10000次,就是1s。 在本题的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完成之后再打开相应的中断。
在Proteus ISIS编辑环境中按表1所列的元件清单添加元件,并在Proteus ISIS 的编辑区域中按图1所示的原理图连接硬件电路。 表1 元件清单 元件名称所属类所属子类 AT89C51 Microprocessor ICs 8051 Family CAP Capacitors Generic CAP-POL Capacitors Generic CRYSTAL Miscellaneous RES Resistors Generic BUTTON Switches & Relays Switches LED-YELLOW Optoelectronics LEDs NOT Simulator Primitives Gates 图1 电路原理图
试题 1 一、填空题(25 分,每空 1 分) 1.AT89S51 单片机为8 位单片机 2.MCS-51 系列单片机的典型芯片分别为8031 、8051 、8751 。 3.AT89S51的异步通信口为全双工(单工/半双工/全双工) 4.AT89S51 有 2 级中断, 5 个中断源 5.AT89S51 内部数据存储器的地址范围是00H~7FH ,位地址空间的字节地址范围是20H~2FH ,对应的位地址范围是00H~7FH ,外部数据存储器的最大可扩展容量是64K 。 6.AT89S51 单片机指令系统的寻址方式有__寄存器寻址__、直接寻址_、寄存器间接寻址__、_立即寻址_、基址寄存器加变址寄存器寻址。 7.如果(A)=34H ,(R7)=0ABH ,执行XCH A, R7;结果(A)= 0ABH ,(R7)= 34H 。 8.82C55 可以扩展 3 个并行口,其中8 条口线具有位操作功能; 9.当单片机复位时PSW=00 H,这时当前的工作寄存器区是0 区,R4 所对应的存储单元地址为04 H。 10.若 A 中的内容为67H,那么,P 标志位为 1 。 11.74LS138是具有 3 个输入的译码器芯片,其输出作为片选信号时,最多可以选中8 片芯片。 二、判断以下指令的正误:(5 分) ) ;√)
(1)MOV 28H,@R4;(× )) ;√)
3) DEC DPTR ;×) (4)CLR R0 ;(× ) (5)MOV T0,#3CF0H;(× ) 三、简答题 1、如果(DPTR)=507BH ,(SP)=32H,(30H)=50H ,(31H)=5FH,(32H)=3CH,则执 行下列指令后: POP DPH; POP DPL; POP SP; 则: __3CH___;(DPL)= ___5FH___;(SP)= 50H (DPH)= _ 2、采用6MHz 的晶振,定时1ms,用定时器方式0 时的初值应为多少?(请给出计算过程)(6分) 解:∵采用6MHZ晶振∴机器周期为2us 13-X)×2×10- 13 -6 -3 (2 6=1×10-3 ∴X=7692(D)=1E0CH=1 1110 0000 1100 (B), 化成方式0 要求格式为1111 0000 1100 B, 即0F00CH 综上可 知:TLX=0CH, THX=0F0H 3.分析下列程序的功能( 5 分) PUSH ACC PUSH B POP ACC POP B 解: 该程序的功能是通过累加器ACC 与寄存器 B 数据交换。 五、简述MCS-51 系列单片机主从结构多机通信原理,设有一台主机
单片机原理实验报告 专业:计算机科学与技术 学号: :
实验1 计数显示器 【实验目的】 熟悉Proteus仿真软件,掌握单片机原理图的绘图方法 【实验容】 (1)熟悉Proteus仿真软件,了解软件的结构组成与功能 (2)学习ISIS模块的使用方法,学会设置图纸、选元件、画导线、修改属性等基本操作 (3)学会可执行文件加载及程序仿真运行方法 (4)理解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制【实验步骤】 (1)观察Proteus软件的菜单、工具栏、对话框等基本结构 (2)在Proteus中绘制电路原理图,按照表A.1将元件添加到编辑环境中(3)在Proteus中加载程序,观察仿真结果,检测电路图绘制的正确性 表A.1
Switches&Relays BUT BUTTON 【实验原理图】 【实验源程序】 #include
for(;time<0;time--) for(k=200;k>0;k--) for(j=500;j<0;j--); } void init() { P0=buf[x1]; delay(10); P2=buf[x2]; delay(10); } void main() { init(); while(1) { x1=count/10; x2=count%10; P0=buf[x1]; delay(10);