DEC R1
DJNZ R2,LOOP END
13、 编写一程序段,其功能为:内部RAM的32H(高)~30H(低)和35H(高)~33H(低)两个三字节无符号数相加,结果存入32H(高)~30H(低)单元,设三字节相加时无进位。(10分) MOV R0,#30H MOV R1,#33H MOV R2,#03H CLR C
LOOP:MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1
DJNZ R2,LOOP END
14、 编写一程序段,其功能为:内部RAM的30H(高)~32H(低)和33H(高)~35H(低)两个三字节无符号数相减,结果存入30H(高)~32H(低)单元,设三字节相减时无进位。(10分) MOV R0,#32H MOV R1,#35H MOV R2,#03H CLR C
LOOP:MOV A,@R0 SUBB A,@R1 MOV @R0,A DEC R0 DEC R1
DJNZ R2,LOOP END
15、 编写一程序段,其功能为:内部RAM的43H(高)~40H(低)和33H(高)~30H(低)两个四字节无符号数相减,结果存入43H(高)~40H(低)单元,设四字节相减时无进位。(10分) MOV R0,#40H MOV R1,#30H MOV R2,#04H CLR C
LOOP:MOV A,@R0 SUBB A,@R1 MOV @R0,A INC R0
INC R1
DJNZ R2,LOOP END
16、 编写一程序段,将内部RAM30H~3FH的内容传送到外部RAM的8000H~800FH中。
MOV R0,#30H
MOV DPTR,#8000H MOV R2,#10H
LOOP:MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR
DJNZ R2,LOOP END
三、 综合题
1、 已知振荡器振荡频率fosc为12MHz,要求定时器/计数器0产生10ms定时,编写初始化程序。 解:
(1) 已知定时时间大于8192μs,, 要定时器/计数器0应选用工作方式1. TH0、TH1初值计算 Tcy=12×(1/(12×106))=1μs
所以T=(65536-X)Tcy=(65536-X)×1μs=10ms x=55536=D8F0H
(2) 方式寄存器的编程:
TMOD的各位内容确定如下:由于定时器/计数器0设定为工作方式1,非门控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=1,GATE!( TMOD.3)=0;定时器/计数器1没有使用,相应的D7-D4为随意态“X”可取为0,则( TMOD)=01H (3) 初始化程序
Start: MOV TL0, #F0H; MOV TH0, #D8H; MOV TMOD, #01H; SETB TR0
2、 若Fosc=6MHz,用T0产生5ms定时,编写初始化程序。(选用工作方式0) 解:
定时器/计数器0选用工作方式0时 (1)TH0、TL0初值计算
Tcy=6×(1/(12×106))=2μs
所以T=(8192-X)Tcy=(8192-X)×2μs=5ms=5000μs x=5692=163CH TH0=B1H;TL0=1CH (2) 方式控制寄存器的编程:
TMOD的各位内容确定如下:由于定时器/计数器0设定为工作方式0,非门控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=0,GATE!( TMOD.3)=0;定时器/计数器1没有使用,相应的D7-D4为随意态“X”可取为0,则( TMOD)=00H (4) 初始化程序
Start: MOV TL0, #1CH; MOV TH0, #B1H; MOV TMOD, #00H; SETB TR0
3、 已知单片机的晶振频率fosc=6MHz,要求定时值为0.1ms定时,定时器T0工作在方式0、方式1、方式2时,定时器设定的初值各为多少?编写方式0时的初始化程序。 解:
Tcy=6×(1/(12×106))=2μs;
故定时值为0.1ms时,计数值为:N=0.1ms/2μs=50 (1) 方式0时,初值X=213-N=8192-50=8142=1FCEH 故设定的初值TH0=FEH;TL0=0EH (2) 方式1时,初值X=216-N=65536-50=65486=FFCEH 故设定的初值TH0=FFH;TL0=CEH
(3) 方式2时,初值X=28-N=256-50=206=CEH 故设定的初值TH0=TL0=CEH
(4) 方式0时方式控制寄存器的编程:
TMOD的各位内容确定如下:由于定时器/计数器0设定为工作方式0,非门控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=0,GATE!( TMOD.3)=0;定时器/计数器1没有使用,相应的D7-D4为随意态“X”可取为0,则( TMOD)=00H (5)初始化程序
Start: MOV TL0, #0EH; MOV TH0, #FEH; MOV TMOD, #00H; SETB TR0
4、 已知单片机的晶振频率fosc=6MHz,要求定时值为1ms定时,定时器T0工作在方式0、方式1、方式2时,定时器设定的初值各为多少?编写方式0时的初始化程序。
解:
Tcy=6×(1/(12×106))=2μs;
故定时值为1ms时,计数值为:N=1ms/2μs=500 (1)方式0时,初值X=213-N=8192-500=7692=1E0CH
故设定的初值TH0=F0H;TL0=0CH (2) 方式1时,初值X=216-N=65536-500=65036=FE0CH 故设定的初值TH0=FEH;TL0=0CH
(3) 方式2时,不能达到1ms定时。 (4) 方式0时方式控制寄存器的编程:
TMOD的各位内容确定如下:由于定时器/计数器0设定为工作方式0,非门控方式,所以C/T(TMOD.2)=0,M!( TMOD.1)=0,M0( TMOD.0)=0,GATE!( TMOD.3)=0;定时器/计数器1没有使用,相应的D7-D4为随意态“X”可取为0,则( TMOD)=00H (5)初始化程序
Start: MOV TL0, #0CH; MOV TH0, #F0H; MOV TMOD, #00H; SETB TR0
5、 8031芯片的INT0、INT1引脚分别输入压力超限及温度超限中断请求信号,定时器/计数器0作定时检测的实时时钟,用户规定的中断优先权排队次序为: 压力超限 温度超限 定时检测 要求确定IE、IP的内容,以实现上述要求。 解:
(1)中断控制寄存器各位定义:D7:CPU中断允许位EA,应设为1 D6:未定义,可为随意量,取为0
D5:定时器/计数器2中断允许位ET2,可取0 D4:串行口中断允许位ES, 可取0
D3:定时器/计数器1中断允许位ET1, 应取0 D2:外部中断1中断允许位EX1, 应取1
D1:定时器/计数器0中断允许位ET0, 应取1 D0:外部中断0中断允许位EX0, 应取1 故IE=87H
(2)由硬件确定的同一优先级中断源的优先权排队顺序如下: INT0-C/T0-INT1-C/T1-串行口中断-c/2
MCS-51有两个中断优先级,中断优先权选择寄存器IP可对各中断源用软件进行编程,确定为高优先级中断还是低优先级中断。因些可以用硬件与软件相结合的方法对中断源的优先级进行排序。
由题意,根据IP各位的定义:D7:未定义,可为随意量,取为0 D6:未定义,可为随意量,取为0
D5:定时器/计数器2优先权选择位PT2,可取0 D4:串行口优先权选择位PS, 可取0
D3:定时器/计数器1优先权选择位PT1, 应取0 D2:外部中断1优先权选择位PX1, 应取1,应接温度超限信号。
D1:定时器/计数器0优先权选择位PT0, 由于其优先级最低,所以应取0 D0:外部中断0优先权选择位PX0, 应取1,应接压力超限信号。
故IP=05H
6、 什么是最小系统?8032单片机在使用时为什么要组成最小系统才能使用?最