内容发布更新时间 : 2024/11/5 13:47:50星期一 下面是文章的全部内容请认真阅读。
MOV DPTR ,#1000H LP: MOVX A,@DPTR MOV @R0,A AND A,#00H MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,LP SJMP $ 10、试编写一子程序,是 R1、R0 指向的两个片外 RAM连续单元中的高 4 位二进制数,合 并成一个字节,装入累加器A 中。已知R0 指向低地址,并要求该单元高四位放在A 中高四 位。 答: MOVX A,@R1 ANL A,#0F0H SWAP A MOV R2,A MOVX A,@R0 ANL A,#0F0H ORL A,R2 11、试编程把以 2040H 为首地址的连续 50 个单元的无符号数按降序排列,存放到以 3000H为首地址的存储区中。 答: MOV R2,#50 MOV R3,#20H MOV R4,#40H ;源地址 MOV R5,#30H MOV R6,#00H ;目的地址 SEND: MOV DPH,R3 ;SEND 将2040H 数据块移入3000H 存储区 MOV DPL,R4 MOVX A,@DPTR INC DPTR MOV R3,DPH MOV R4,DPL MOV DPH,R5 MOV DPL,R6 MOVX @DPTR,A INC DPTR MOV R5,DPH MOV R6,DPL DJNZ R2,SEND MOV R2,#49 ;重复次数 CMP1: MOV DPTR,#3000H MOV R3,#49 ;比较次数 CMP2: MOVX A,@DPTR MOV B,A INC DPTR MOVX A,@DPTR CJNE A,B,L1 L1: JC NOMOVE MOV 30H,A CLR C MOV A,DPL SUBB A,#01H MOV DPL,A MOV A,30H MOVX @DPTR,A INC DPTR MOV A,B MOVX @DPTR,A NOMOVE: DJNZ R3,CMP2 ;50 个数重复一遍? DJNZ R2,CMP1 ;排序结束? LJMP $ 12、试编一查表程序,
从首地址为2000H,长度为100 的数据块中找出ASCII 码为A,将其 地址送到20A0H 和20A1H 单元中。 答: MOV DPTR,#2000H MOV R2,#100 GO_ON: CLR A MOVC A,@A+DPTR CJNE A,#41H,IFEND MOV A,DPH MOV B,DPL MOV DPTR,#20A0H MOVX @DPTR,A INC DPTR XCH A,B MOVX @DPTR,A SJMP OVER IFEND: INC DPTR DJNZ R2,GO_ON OVER: SJMP OVER 13、设在200H~204H 单元中,存放5 个压缩BCD 码,编程将他们转换成ASCII 码,存放 到以205H 单元为首地址的存储区。 答: MOV R2,#05H MOV R3,#02H MOV R4,#00H MOV R5,#02H MOV R6,#05H CHLP: MOV DPH,R3 MOV DPL,R4 MOVX A,@DPTR INC DPTR MOV R3,DPH MOV R4,DPL MOV B,A SWAP A ANL A,#0FH ORL A,#30H MOV DPH,R5 MOV DPL,R6 MOVX @DPTR,A INC DPTR MOV A,B ANL A,#0FH ORL A,#30H MOVX @DPTR,A MOV R5,DPH MOV R6,DPL DJNZ R2,CHLP 14、有一无符号数据块长度在 30H 单元中,其首地址为 31H 单元,求出数据块中最大值, 并存入40H 中。 答: MOV R0,#31H MOV R1,30H MOV 40H,#00H LOOP: MOV A,@R0 CJNE A,40H,L1 SJMP AGAIN L1: JNC L2 SJMP AGAIN L2: MOV 40H,A AGAIN: INC R0 DJNZ R1,LOOP SJMP $ 15、略 16、在以 2000H 为首地址的存储区内,存放 20 个用 ASCII 码表示的 0~9 之间的数,试编 程,将
它们转换成BCD 码,并以压缩BCD 码的形式存在3000H~3009H 单元中。 答: MOV R2,#10 MOV R3,#20H MOV R4,#00H MOV R5,#30H MOV R6,#00H LP: MOV DPH,R3 MOV DPL,R4 MOVX A,@DPTR ANL A,#0FH SWAP A XCH A,B INC DPTR MOVX A,@DPTR ANL A,#0FH ORL A,B INC DPTR MOV R3,DPH MOV R4,DPL MOV DPH,R5 MOV DPL,R6 MOVX @DPTR,A INC DPTR MOV R5,DPH MOV R6,DPL DJNZ R2,LP SJMP $ 17、试编程实现下列逻辑表达式功能。设 P1.7~P1.0 为 8 个变量的输入端,而其中 P1.7 又 作为变量的输出端。 ;输入端定义 X0 EQU P1.0 X1 EQU P1.1 X2 EQU P1.2 X3 EQU P1.3 X4 EQU P1.4 X5 EQU P1.5 X6 EQU P1.6 X7 EQU P1.7 (1) MOV C,X0 ANL C,X1 ANL C,/X2 ORL C,X3 MOV 00H,C MOV C,X4 ANL C,X5 ANL C,X6 ORL C,/X7 ORL C,00H MOV P1.7,C (2) MOV C,X0 ANL C,X1 CPL C MOV 00H,C MOV C,X2 ANL C,X3 ANL C,X4 CPL C MOV 01H,C MOV C,X5 ANL C,X6 ANL C,X7 CPL C ORL C,O1H CPL C ORL C,00H MOV P1.7,C 18、略 19、略 20、试编写延时1s、1min、1h 子程序。 ;单片机时钟fosc=12MHz,计算为近似值 ;1s 延时子程序 DLY_1S: MOV R0,#10 L3: MOV R1,#200 L2: MOV R2,#250 L1: DJNZ R2,L1 DJNZ R1,L2 DJNZ R0,L3 RET ;延时1min DLY_1M:MOV R3,#60 L4: LCALL DLY_1S DJNZ R3,L4
RET ;延时1h DLY_1H: MOV R4,#60 L5: LCALL DLY_1M DJNZ R4,L5 RET 21、用程序实现 c=a2+b2。设 a、b 均小于 10,a 存在 31H 单元中,b 存在 32H 单元中,c存33H 单元。 答: ORG 1000H SR: MOV A,31H ACALL SQR MOV R1,A MOV A,32H ACALL SQR ADD A,R1 MOV 33H,A SJMP $ ;求平方子程序如下(采用查平方表的方法) SQR: INC A MOVC A, @A+PC RET TABLE: DB 0, 1, 4, 9, 16 DB 25,36,49,64,81 END 22、如何实现将内存单元40H~60H 的数逐个对应传到片外2540H~2560H 单元中? 答: MOV R0,#40H MOV DPTR,#2540H MOV R2,#21H L1: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R2,L1 SJMP $ 23、参考21 题 24、参考21 题 25、参考实验程序 26、参考实验程序 第五章 定时/计数器 1、89S51 单片机内部有几个定时/计数器,他们有哪些专用寄存器组成? 答:89S51 单片机内部有两个16 位定时/计数器,为定时器0(T0)和定时器1(T1)。在定时器/计数器的16 位的计数器是由两个8 位的专用寄存器TH0、TL0,TH1、TL1 组成。 2、89S51 单片机的定时/计数器有哪几种工作方式,各有什么特点? 答:定时器/计数器有四种工作方式:方式0,方式1,方式2,方式3。其中,方式3 只适用于T0。 以T0 为例:①方式0,16 位寄存器只用了13 位,TL0 的高三位未用。由TH0 的8 位和TL0 的低5 位组