1、单片机课后答案2-4 DPTR由两个特殊功能寄存器DPH和DPL组成,分别存放16为地址的高字节与低字节。2-5堆栈指针初始值为07H,可以设置在内部RAM区的307FH空间内;实现方法包括压栈和出栈,采用“先进后出“或”后进先出“的原则。设置好栈底指针后,压栈时,是sp先加1,再从栈顶压栈;出栈时,是先从栈顶出栈,再sp减1。2-13不存在地址重叠,采用不同的操作指令来区分。当读取外部程序存储器时,采用MOVC指令,同时产生PSEN有效信号,配合ALE、P0和P2地址线进行读取。当读写外部数据存储器时,采用MOVX指令,同时产生RD/WR有效信号,配合ALE、P0和P2地址线进行读写。2-1
2、7不存在冲突,采用不同的操作指令来区分。分别采用字节操作指令和位操作指令对字节地址和位地址操作。3-4 MOV P1,#0FFH ;设置P1口为高阻抗输入状态MOV R0, P1(70H)B7H, (B)=20H, (R1)=60H, (R0)=70H3-5CLR AMOV R2, AMOV R7,#4LOOP: CLR CMOV A,R0RLC AMOV R0,AMOV A,R1RLC AMOV R1,AMOV A,R2RLC AMOV R2,ADJNZ R7,LOOPSJMP $把 R2R1R0左移4位3-6START: SETB P1.0NEXT: MOV 30H,#10 ;2usLOO
3、P2: MOV 31H,#0FAH ;2usLOOP1: NOP ;1us NOP ;1usDJNZ 31H,LOOP1 ;2usDJNZ 30H,LOOP2 ;2usCPL P1.0 ;1usAJMP NEXT ;2usSJMP $方波周期为2(2(2(112)2502)1012) 20090us20.090ms3-8MOV SP,#2FHMOV DPTR, #2000HMOV R7,#50HNEXT:MOVX A,DPTRPUSH ADJNZ R7,NEXTSJMP $Sp指向2FH+50H=7FH3-10XCH A,30HMOV B,AANL A,#0FHMOV 33H,AMOV A,B
4、SWAP AANL A,#15MOV 34H,ASJMP $结果:(30H)的低4位送到33H单元,高4位送到34H单元3-20 MOV A,R0 CPL A JZ LABEL1 INC A JZ LABEL2 当(R0)=FFH时 转向LABEL1; 当(R0)=00H时 转向LABEL2 ;3-24PSW.5=P1.3ACC.2vB.5P1.1MOV C,P1.3ANL C,ACC.2ORL C,B.5ANL C,P1.1MOV PSW.5,C45 求8个数的平均值设计思路:先用8次循环求8个数的和(和用两个字节表示),再将该和右移三位以实现除8运算。方法一: ORG 1000HMOV R
5、0,#30HMOV R7,#08HMOV R2,#00HMOV R3,#00HLOOP1:MOV A,R3ADD A,R0MOV R3,AMOV A,R2ADDC A,#00HMOV R2,AINC R0DJNZ R7,LOOP1;右移3位相当于除8MOV R7,#03HLOOP2: CLR CMOV A,R2RRC AMOV R2,AMOV A,R3RRC AMOV R3,ADJNZ R7,LOOP2MOV 38H,R3SJMP $ END方法二: ORG 0030HSTART: MOV R7,#7 MOV R3,#0 MOV A,30H MOV R0,#31HLOOP: ADD A,R0
6、JNC NEXT INC R3NEXT: INC R0 DJNZ R7, LOOP MOV R2, A;右移3位相当于除8MOV R7,#03HLOOP2: CLR CMOV A,R2RRC AMOV R2,AMOV A,R3RRC AMOV R3,ADJNZ R7,LOOP2MOV 38H,R3SJMP $ END4-6 把外部RAM的数据移入内部RAM方法一:ORG 1000HMOV DPTR,#2000HMOV R7,#50HMOV R0,#30HLOOP:MOVX A,DPTRMOV R0,AINC R0INC DPLDJNZ R7,LOOPSJMP $END方法二: MOV SP,
7、#2FH MOV DPTR,#2000H MOV R7,#50HNEXT: MOVX A,DPTR PUSH A INC DPL ;或者INC DPTR DJNZ R7,NEXT SJMP $ END47 求内部RAM数据块最小数ORG 1000HBLOCK DATA 30HLEN DATA 10HMINI DATA 20HMOV R0,#BLOCKMOV R7,LENDEC R7MOV A,R0LOOOP: CLR CMOV B,A SUBB A,R0 JC NOP1MOV A,R0SJMP NOP2NOP1: MOV A,BNOP2: INC R0DJNZ R7,LOOPMOV MINI,
8、ASJMP $END4-13 SIGN函数ORG 1000HVAR DATA 30HFUNC DATA 31HMOV A,VARJNB ACC.7,GOEMOV FUNC,#FFHSJMP FINISHGOE: JNZ GR MOV FUNC,#0 SJMP FINISHGR: MOV FUNC,#1FINISH: SJMP $END注意:使用CJNE指令,会影响Cy位4-16 16分支跳转JMP16: MOV A,R3RL AADD A,R3MOV DPTR,#PRGTBLJMP A+DPTRPRGTBL:LJMP ROOT00LJMP ROOT01LJMP ROOT02LJMP ROOT1
9、5注意:LJMP Addr16和AJMP Addr11的区别4-18 查平方表SQR: MOV A,R3 ;R3是入口参数,也是出口参数 ANL A,#15 ADD A,#02H MOVC A,A+PC MOV R3,A RETSQRTAB:DB 00,01,04,09,16 DB 25,36,49,64,81 DB 100,121,144,169,1964-23 测试芯片功能方法一:ORG 1000HA1 BIT P1.0B1 BIT P1.1C1 BIT P1.2D1 BIT P1.3E1 BIT P1.4F1 BIT P1.5G1 BIT P1.6H1 BIT P1.7Y1 BIT P3
10、.0TEST: MOV C,A1ANL C,B1ANL C,C1ANL C,D1MOV F0,CMOV C,E1ANL C,F1ANL C,G1ANL C,H1ORL C,F0CPL CMOV Y1,CSJMP $END方法二:ORG 1000HA1 BIT P1.0B1 BIT P1.1C1 BIT P1.2D1 BIT P1.3E1 BIT P1.4F1 BIT P1.5G1 BIT P1.6H1 BIT P1.7Y1 BIT P3.0TEST: MOV C,A1ANL C,B1ANL C,C1ANL C,D1JC LOOPMOV C,E1ANL C,F1ANL C,G1ANL C,H1J
11、C LOWSETB Y1SJMP NEXTLOW: CLR Y1NEXT: SJMP $END55答:当使用MOVC和MOVX对外部存储器(外部程序存储器和外部数据存储器)进行读写操作时,会产生地址锁存ALE信号,接在地址锁存器的使能端G;当对外部程序存储器进行读操作,即MOVC指令,会产生PSEN信号;当对外部数据存储器进行读/写操作,即MOVX指令,会产生WR和RD信号510答:1)2)采用线选法译码,不重叠时地址分配应为:P2.7=1, P2.6=1, P2.5=0 地址为C000HDFFFHP2.7=1, P2.6=0, P2.5=1 地址为A000HBFFFHP2.7=0, P2.6
12、=1, P2.5=1 地址为6000H7FFFH511答:1)2)如果RAM地址为8000HBFFFH时 两片6264的CE端分别接Y4,Y5C000HFFFFH时 两片6264的CE端分别接Y6,Y7512答1)2)再加16k的ROM27128应注意的问题方法:地址总线D0D7,数据总线A0A13,PSEN接27128的OE端,27128的CE端接地或者接P2.6/P2.7(访问ROM时,地址中P2.6/P2.7应为0)。第六章作业讲解67 12Mhz时,一个机器周期为1us,则a) 设置1ms对称方波时,应定时0.5ms,P1.0取反输出,T0方式0时,应设置TH0=F0H,TL0=0CH
13、b) 设置2ms(1:3)不对称方波时,应设置定时,高电平0.667ms,低电平1.333ms,T1方式1时,应设置TH1=FDH,TL1=65H,并设置高电平计数1次,低电平计数2次参考程序ORG 0000HLJMP STARTORG 000BHSJMP TIME0ORG 001BHSJMP TIME1ORG 0030HSTART: MOV SP,#60H MOV TMOD,#10H MOV TH0,#0F0H MOV TL0,#0CH MOV TH1,#0FDH MOV TL1,#65H SETB EA SETB ET0 SETB ET1 SETB TR0 SETB TR1 MOV R7,
14、#03H SJMP $TIME0: MOV TH0,#0F0H MOV TL0,#0CHCPL P1.0RETITIME1: MOV TH1,#0FDH MOV TL1,#65H DJNZ R7,FAN SETB P1.1 MOV R7,#03H SJMP FINISHFAN: CLR P1.1 FINISH: RETI ENDTIME1: CLR P1.1 MOV TH1,# 0FDH MOV TL1,#65H INC R1 CJNE R1, #3, FINISH CLR R1 CPL P1.1FINISH: RETI END6-8 12Mhz,定时最长时间为65.536ms,最简单方式:利
15、用T0定时30ms取反一次(周期是60ms)和T1计数1000次共同完成。ORG 0000HLJMP STARTORG 000BHSJMP TIME0ORG 001BHSJMP COUNT1ORG 0030HSTART: MOV SP,#60H MOV TMOD,#51H MOV TH0,#0FCH MOV TL0,#18H MOV TH1,#03H MOV TL1,#0E8H SETB EA SETB ET0 SETB ET1 SETB TR0 SETB TR1 SJMP $TIME0: MOV TH0,#0FCH MOV TL0,#18HCPL P1.0RETITIM30: MOV TH1
16、,#03H MOV TL1,#0E8H CLR P1.1RETI6-9 答:12MHZ晶振,则1个机器周期1us,0.5MHZ方波的周期是2us。不能用普通的定时方式,应采用门控方式。参考程序:MOV TMOD,#09HMOV TH0,#0HMOV TL0,#0HJB P3.2,$SETB TR1JNB P3.2,$CLR TR16-23 答:有两种方式:电平触发和边沿触发电平触发方式要求中断响应之前中断信号维持低电平,且在中断服务程序返回之前撤销,否这会引起低二次中断边沿触发要求输入外部中断信号至少大于12个机器周期,可被TCON记忆直到中断响应6-25 答:可以,在中断矢量地址入口处放一条长跳转指令可跳转至64K存储器空间任一地址。6-29 答:1) 字节操作方式MOV IE,#97HMOV IP,#02H2)位操作方式SETB EASETB ESSETB EX1SETB ET0SETB EX0SETB PT06-31 答:1)T0和T1都工作于方式1,定时器方式,16位计数器2)T0计数次数25000,定时50ms,T1计数次数4000,定时值8ms,(主频6MHZ)3)T0为低优先级,T1为高优先级4)T0的中断矢量地址为000BH,T1的中断矢量地址为001BH5)启动T0和T1。(相当于执行了SETB TR1和SETB T
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1