编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。
解:STRAT:MOV R0,#30H
MOV R7,#0FH
MOV DPTR,#3000H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,LOOP
RET
2 片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 ).
解ADDIO:MOV R0,30H
MOV R7,#9
MOV A,@R0
LOOP: INC R0
ADD A,@R0
DJNZ R7,LOOP
MOV 30H,A
RET
5 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.
解 START: MOV R0,#40H ;数据块首地址送R0
MOV R7,#09H ;比较次数送R7
MOV A,@R0 ;取数送A
LOOP: INC R0
MOV 30H,@R0 ;取数送30H
CJNE A,30H,NEHT ;(A)与(30H)相比
NEXT: JNC BIE1 (A)≥(30H)转BIR1
MOV A,30H ;(A)<(30H),大数送A
BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较
MOV 50H,A ;比较结束,大数送50H
RET
6 编一子程序,从串行接口接受一个字符.
解: START: MOV TMOD,#20H ;定时器T1工作于模式2
MOV TH1,#0E8H ;设置波特率为1 200b/s
MOV TL1,#0E8H
SETB TR1 ;启动T1
MOV SCON,#50H ;串行接口工作于方式1,充许接收
L1: JNB RI,L1 ;等待接收数据,末接收到数据,继续等待 CLR RI ;接收到数据,清RI
MOV A,SBUF ;接收到数据送A
RET
9 编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。画出电路图。
解
MOV A,#01H ;灯亮初值
SHIFT: LCAIL FLASH ;调闪亮10次子程序
RR A ;右移一位
SJMP SHIFT ;循环
FLASH: MOV R2,#0AH 闪烁10次计数
FLASH1; MOV P1,A ;点亮
LCALL DELAY ;延时
MOV P1,#00H ;熄灭
LCALL DELAY ;延时
DJNZ R2,FLASH1 ;循环
RET
1.编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。
解:(1)1S=2US*5*100000
5*100000=250*200*10
(2)ORG 1000H
TIME:MOV R7,#10
T3: MOV R6,#200
T2: MOV R6,#250
T1: DJNZ R5,T1
DJNZ R6,T2
DJNZ R7,T3
RET
(2)1min=60,调用上面1s子程序60次
ORG 0030H
MOV R0,#60
LOOP:LCALL TIME
DJNZ R0,LOOP
RET
2.请编制串行通信的数据发送程序,发送片内RAM50H~5FH的16B数据,串行接口设
定为方式2,采用偶校验方式。设晶振频率为6MHz。
解:查询方式发送程序如下
MOV SCON,#8OH
M OV PCON,#80H
MOV R0,#50H
MOV R7,#16H
LOOP: MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A
JNB T1,$
CLR T1
INC R0
DJNZ R7,LOOP
RET
4.应用单片机内部定时器T0工作在方式1下,从输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZ。
请(1)计算时间常数X,应用公式X=216-t(f/12)
(2)写出程序清单
解:X=216-t(F/12)
=216-1*10-3*6*106/12
=OFEOCH
ORG 3000H
START:MOV TMOD,#01H
MOV TL0,#OCH
MOV THO,#OFEH
SETB TR0
LOOP: JBC TFO,DONE
SJMP LOOP
DONE: MOV TL0,#OCH
MOV THO,#OFEH
CPL
SJMP LOOP
6、用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。
编出汇编语言程序。
解: ORG 0100H
ABC:SETB
SETB
JB ,$
JNB ,$
CLR
MOV R2,#0
DAY: NOP
NOP
DJNZ R2,DAY
SJMP ABC
7、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。
解: ORG 0100H
MOV A,#08H
MOV R2,#01H
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
NEXT:MOV A,R2
MOV P3,A
ACALL DAY
JB ,LPD