单片机原理及其接口技术王敏课后作业答案标准化管理部编码-[99968T-6889628-J68568-1689N]第二章作业(P40)2-4 MCS-51单片机中执行程序的地址放在哪由几个位组成最大寻址范围是多少答:放在程序计数器PC中,16位,64KB。
2-5 在程序存储器中,0000H、0003H、000BH、0013H、001BH、0023H这6个单元有什么特定的含义答: 0000H 复位后,PC=0000H,开始执行程序的地址0003H 外部中断0 (INT0)入口地址000BH 定时器0中断(TF0)入口地址0013H 外部中断1(INT1)入口地址001BH 定时器1中断( TF1)入口地址0023H 串行口中断TI/RI入口地址2-10 开机复位以后,CPU使用哪一组工作寄存器它们的地址是什么如何改变当前工作寄存器答:使用第0组工作寄存器,00H-07H,通过修改PSW中的RS1和RS0两位来改变当前的工作寄存器。
第三章作业(P75)3-7 指出指令中的50H或66H个代表什么解:① MOV A, #50H 立即数MOV A, 50H 直接地址MOV 50H, #20H 直接地址MOV C, 50H 位地址MOV 50H, 20H 直接地址② MOV @R0, #66H 立即数MOV R6, #66H 立即数MOV 66H, #45H 直接地址MOV 66H, C 位地址MOV 66H, R1 直接地址3-9 写出能完成下列数据传送的指令:解:① R1中内容传送到R0;MOV A, R1MOV R0,A②内部RAM 20H单元中的内容送到30H单元;MOV 30H, 20H③外部RAM 20H单元中的内容送到内部RAM 20H单元;MOV R0, #20HMOVX A, @R0MOV 20H, A④外部RAM 2000H单元中的内容送到内部RAM 20H单元;MOV DPTR, #2000HMOVX A, @DPTRMOV 20H, A⑤外部ROM 2000H单元中的内容送到内部RAM 20H单元;MOV DPTR, #2000HMOV A, #00HMOVC A, @A+DPTRMOV 20H, A⑥外部2000H单元中的内容送到外部RAM 3000H单元;MOV DPTR, #2000HMOVX A, @DPTRMOV DPTR, #3000HMOVX @DPTR, A3-11 已知:(20H)=X;(21H)=Y;(22H)=Z,请用图示说明下列程序执行后堆栈的内容是多少① MOV SP, #70H ② MOV SP, #60HPUSH 20H PUSH 22HPUSH 21H PUSH 21HPUSH 22H PUSH 20H解:(73H)=Z;(72H)=Y;(71H)=X;(63H)=X;(62H)=Y;(61H)=Z;3-20 试编出能完成如下操作的程序:解:①使20H单元中数的高两位变“0”,其余位不变;ANL 20H, #3FH②使20H单元中数的高两位变“1”,其余位不变;0RL 20H, #0C0H③使20H单元中数的高两位变反,其余位不变;XRL 20H, #0C0H④使20H单元中数的高四位变“1”,低四位变“0”;MOV 20H, #0F0H⑤使20H单元中数的所有位变反。
XRL 20H, #0FFH3-27 已知:外部RAM 2000H为始址的存储区有20个带符号补码数,请编一程序把正数和正零取出来放到内部RAM 20H为始址的存储区(负数和负零不作处理)。
解:ORG 0000HAJMP MAINORG 0100HMAIN: MOV R0, #14HMOV R1, #20HMOV DPTR, #2000HROT: MOVX A, @DPTRJB , NEXTMOV @R1, AINC R1NEXT: INC DPTRDJNZ R0, ROTSJMP $END第四章作业(P104)4-7 已知RAM的BLOCK单元,请编写其中可以统计正负数个数分别存入NUM和NUM+1单元的程序。
解:ORG 0100HLEN DATA 20HNUM DATA 21HBLOCK DATA 23HMAIN: MOV NUM, #00HMOV NUM+1,#00HMOV R0, #BLOCKLOOP: MOV A, @R0JNB ,POSIINC NUM+1SJMP NEXTPOSI: INC NUMNEXT: INC R0DJNZ LEN, LOOPSJMP $END4-9 外部RAM从2000H-2100H单元有一数据块,请编出将它们传送到外部RAM 3000H-3100H区域的程序。
解:采用当型循环,判断程序结束条件ORG 1000HMOV DPTR,#2000HNEXT: MOVX A, @DPTRORL DPH , #10H ; 将DPH中的20H变成30HMOVX @DPTR, AANL DPH , #0EFH ; 将DPH中的30H变成20HINC DPTRMOV A, DPHCJNE A, #21H, NEXTMOVX A, @DPTR ;将2100H单元的数据送AMOV DPH, #31HMOVX @DPTR, A ;将A的数据送3100H单元SJMP $END4-11 将内部RAM的AAA单元中8位无符号数转换成BCD码表示的十进制数。
(要求用连续除10的方法实现)解:ORG 0100HAAA DATA 20HBAI DATA 21HSHI DATA 22HGE DATA 23HMOV A, AAAMOV B,#0AHDIV ABMOV GE, BMOV B,#0AHDIV ABMOV SHI, BMOV BAI, ASJMP $END4-15 请编写能从内部RAM的BLOCK为起始地址的20个无符号数找出最小值,并把它送到MIN单元的程序。
解:ORG 0100HMIN DATA 20HBLOCK DATA 21HMAIN:MOV R0,#BLOCKMOV R2,#13HMOV A,@R0LOOP:INC R0MOV B,@R0CJNE A,B,NEXTNEXT:JC NEXT1MOV A,@R0NEXT1:DJNZ R2,LOOPMOV MIN,ASJMP $END第五章作业(P155)6-4 编程,利用定时器T0(工作在方式1)产生一个50Hz的方波,由输出,晶振频率为12MHz。
解:按照题意,定时器T0需要工作在方式1定时10ms,则TMOD控制字为01H;已知fosc=12MHz,则机器周期为1μs。
定时初值=216– 10ms/1μs= 55536=D8F0H,即TH0=0D8H,TL0=0F0H。
则相应的程序如下:ORG 0000HAJMP STARTORG 2000HSTART:MOV TMOD,#01H ;写入工作方式字MOV TH0, #0D8H ;写入计数初值MOV TL0, #0F0HSETB TR0 ;启动T0LOOP:JBC TF0, PE ;TF0=1溢出转移PE,并清除TF0AJMP LOOP ;TF0为0转LOOP等待PE:MOV TH0,#0D8H ;重装初值MOV TL0,#0F0HCPL ;取反AJMP LOOP ;转LOOP等定时时间到END6-5 在8051单片机中,已知晶振频率为12MHz,试编程使和分别输出周期为2ms和500ms的方波。
设晶振频率为6MHz,试用T0作为外部计数器,编程实现每当计到1000个脉冲,使T1开始2ms定时,定时时间到后,T0又开始计数,这样反复循环下去。
解:1)按照题意,定时器T0需要工作在方式1定时1ms,则TMOD控制字为01H;已知fosc=12MHz,则机器周期为1μs。
定时初值=216– 1ms/1μs= 64536=FC18H,即TH0=0FCH,TL0=18H。
则相应的程序如下:主程序:ORG 1000HSTART:MOV TMOD,#01HMOV TH0, #0FCHMOV TL0, #18HMOV IE, #82H ;开T0中断SETB TR0 ;启动T0MOV R0,#0FAH ;软件计数器赋初值LOOP: SJMP $ ;等待中断中断程序:ORG 000BHAJMP BRT0ORG 0080HBRT0:CPLDJNZ R0,NEXT ;250ms未到,转NEXTCPL ;250ms到,改变电平MOV R0,#0FAHNEXT:MOV TH0, #0FCHMOV TL0, #18HRETIEND2)按照题意,定时器T0需要工作在方式1计数方式,定时器T1需要工作在方式1定时方式,则TMOD控制字为15H;T0计数初值为216– 1000= 64536=FC18H,即TH0=0FCH,TL0=18H;已知fosc=6MHz,则机器周期为2μs。
T1定时初值=216–2ms/2μs= 64536=FC18H,即TH1=0FCH,TL1=18H。
则相应的程序如下:ORG 2000HSTART:MOV TMOD,#15H ;写入工作方式字MOV TH0, #0FCH ;写入计数初值MOV TL0, #18HMOV TH1, #0FCHMOV TL1, #18HSETB TR0 ;启动T0LOOP:JBC TF0, PE ;TF0=1溢出转移PE,并清除TF0AJMP LOOP ;TF0为0转LOOP等待PE:SETB TR1 ;启动T1定时,关T0计数CLR TR0LOOP1:JBC TF1, PE1 ;TF1=1溢出转移PE1,并清除TF1AJMP LOOP1 ;TF1为0转LOOP1等待PE1:MOV TH0,#0FCH ;重装初值MOV TL0,#18HMOV TH1, #0FCHMOV TL1, #18HSETB TR0 ;启动T0计数,关T1定时CLR TR1AJMP LOOPEND6-6 已知单片机系统时钟频率为6MHz,若要求定时值分别为、1ms和10ms,定时器T0工作在方式0、方式1和方式2时,定时器对应的初值各为多少解:已知fosc=6MHz,则机器周期为2μs。
方式0的初值分别为:8142(1FCEH),即TH0=0FEH,TL0=0EH;7692(1E0CH),即TH0=0F0H,TL0=0CH;3192(0C78H),即TH0=63H,TL0=18H。
方式1的初值分别为:65486(FFCEH);65036(FE0CH);60536(EC78H)。
方式2定时的初值为206(CEH),不能直接定时1ms和10ms。
第六章作业(P210)8-2 什么是半双工、全双工方式MCS-51单片机属于哪种传送方式解:1)半双工方式——通信双方只有一条双向传输线,允许数据双向传送,但每个时刻上只能有一方发送,另一方接收,这是一种能够切换传送方向的单工方式;2)全双工方式——通信双方有两条传输线,允许数据同时双向传送,其通信设备应具有完全独立的收发功能。