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)Y?X0X1X2?X3?X4X5X6?X7
MOV ANL ANL ORL MOV MOV ANL ANL ORL ORL MOV
C,X0 C,X1 C,/X2 C,X3 00H,C C,X4 C,X5 C,X6 C,/X7 C,00H P1.7,C
(2)Y?X0X1?X2X3X4?X5X6X7
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位组成一个13位计数器;②方式1,和方式0的工作相同,唯一的差别是TH0和TL0组成一个16位计数器;③方式2,把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器。TH0由软件预置值。当TL0产生溢出时,一方面使溢出标志TF0置1,同时把TH0中的8位数据重新装入TL0中;④方式3,将使TL0和TH0成为两个相互独立的8位计数器,TL0利用T0本身的一些控制,它的操作与方式0和方式1类似。而TH0被规定为只用作定时器功能,对机器周期计数,并借用了T1的控制位TR1和TF1。在这种情况下TH0控制了T1的中断。这时T1还可以设置为方式0~2,用于任何不需要中断控制的场合,或者用作串行口的波特率发生器。
3、定时/计数器用作定时方式时,其定时时间与哪些因素有关?作为计数时,对外界计数频率有何限制?
答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。
定时/计数器作计数时,由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
4、当定时器T0用作方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭?
答:定时器T0用作方式3时,由于TR1位已被T0占用,此时通过控制位C/T切换其定时或计数器工作方式。当设置好工作方式时,定时器T1自动开始运行,若要停止,只需送入一个置定时器T1为方式3的方式字。
5、已知89S51单片机系统时钟频率为24MHz,请利用定时器T0和P1.2输出矩形脉冲。矩形波高电平宽度50μs,低电平宽度350μs。 答: ORG 1000H
MOV TMOD,#02H ;设置工作方式 MOV TH0,#09CH ;设置定时器初值 MOV TL0,#09CH
SETB TR0 ;启动定时器
LOOP: SETB P1.2 ;P1.0输出高电平
MOV R0,#07H
DEL: JBC TF0 ,REP ;定时是否到?
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第四章 汇编语言程序设计(2)在线全文阅读。
相关推荐: