单片机问题

三、读程序题:(每空5分,共20分)
1、写出下列程序段执行的结果:
MOV A,#90H
MOV R0,#20H
MOV @R0,A
ANL A, #0F0H
ORL A, #70H
XRL A, @R0
(A)=________;(R0)= ;(20H)=__________;
2、 写出下列程序段执行的结果:
MOV A,#20H
MOV DPTR,#2020H
MOVX @DPTR,A
MOV A,#50H
MOVX @DPTR,A
(2020H)= ,(A)=
3、写出下列程序段执行的结果:
MOV A, #36H
MOV R2, #45H
MOV 40H, #2CH
MOV R0, #40H
ADD A, R2
ADDC A,@R0
ADDC A, 40H
A=
4、写出下列程序段执行的结果:
MOV A,#02H
MOV B,#30H
MUL AB
DIV AB
ADD A,B
A=
5、写出下列程序段执行的结果:
MOV A,#0F7H
CPL A
ANL 30H,#0FFH
ORL 30H,#79H
XRL 30H,A
(30H)=
六、根据所描述的实验现象将程序补充完整:P1口的八个灯右移循环点亮,用单次脉冲申请中断,按下脉冲源后8个灯全部闪烁8次后继续往右循环点亮。
ORG 0000H
LJMP START
_____________;设置外部中断1的入口地址
LJMP INTP
ORG 0030H
START: MOV SP,#60H
______________;设置中断总允许
SETB EX1
_______________;设置触发方式为低电平触发
MOV A,#0FEH
LOOP: MOV P1,A
LCALL DELAY
_____________;实现将8个灯右移循环点亮
LJMP LOOP
INTP: PUSH ACC
PUSH PSW
PUSH P1
CLR RS1
SETB RS0
MOV R1,#5
LOP: MOV P1,#00H
LCALL DELAY
MOV P1,#0FFH
LCALL DELAY
_________________; 控制8个灯全部闪烁8次
POP P1
POP PSW
POP ACC
RETI
DELAY: ……;延时程序省略
RET
END
六、设单片机的时钟频率为12MHz,用定时器T1定时方法,在P1.0产生频率为20KHz等宽矩形波,选择工作方式2编程实现,根据提示将程序补充完整。
程序:
ORG 0000H
LJMP START
ORG 001BH
LJMP TIME1
ORG 0100H
START: ;设置TMOD
;设置计数初值

SETB EA
SETB ET1
;启动定时器T1运行
$:SJMP $
TIME1: ;产生矩形波
RETI
END
六、以定时器1进行外部事件计数,每计数150个脉冲后,从P1.1输出高电平并保持1s,如此循环不止。设晶振频率为12MHz,试用模式2编程。根据提示将程序补充完整。
程序:
ORG 0000H
LJMP START
ORG 001BH
LJMP T1FW
ORG 0100H
START:________________________;设置TMOD
___________________;设初值,要求每计150个脉冲产生溢出
___________________;设初值,要求每计150个脉冲产生溢出
SETB EA
SETB ET1
_____________;启动定时
SJMP $
T1FW:_______________;从P1.1输出高电平;
……;省略延时程序段
RETI
END
图片上也要做 做好给500分 加油啊

我将答案都放到题目中去了,方便你查看。

三、读程序题:(每空5分,共20分)
1、写出下列程序段执行的结果:
MOV A,#90H
MOV R0,#20H
MOV @R0,A
ANL A, #0F0H
ORL A, #70H
XRL A, @R0
(A)=__60H______;(R0)= 20H ;(20H)=__90H________;
2、 写出下列程序段执行的结果:
MOV A,#20H
MOV DPTR,#2020H
MOVX @DPTR,A
MOV A,#50H
MOVX @DPTR,A
(2020H)= 50H ,(A)= 50H
3、写出下列程序段执行的结果:
MOV A, #36H
MOV R2, #45H
MOV 40H, #2CH
MOV R0, #40H
ADD A, R2
ADDC A,@R0
ADDC A, 40H
A= D3H
4、写出下列程序段执行的结果:
MOV A,#02H
MOV B,#30H
MUL AB
DIV AB
ADD A,B
A= 60H
5、写出下列程序段执行的结果:
MOV A,#0F7H
CPL A
ANL 30H,#0FFH
ORL 30H,#79H
XRL 30H,A
(30H)= 71H
根据所描述的实验现象将程序补充完整:P1口的八个灯右移循环点亮,用单次脉冲申请中断,按下脉冲源后8个灯全部闪烁8次后继续往右循环点亮。
ORG 0000H
LJMP START
__ORG 0003H___________;设置外部中断1的入口地址
LJMP INTP
ORG 0030H
START: MOV SP,#60H
_SETB EA____________;设置中断总允许
SETB EX1
_SETB IT0______________;设置触发方式为低电平触发
MOV A,#0FEH
LOOP: MOV P1,A
LCALL DELAY
__RL A___________;实现将8个灯右移循环点亮
LJMP LOOP
INTP: PUSH ACC
PUSH PSW
PUSH P1
CLR RS1
SETB RS0
MOV R1,#8
LOP: MOV P1,#00H
LCALL DELAY
MOV P1,#0FFH
LCALL DELAY
__DJNZ R1,LOP_______________; 控制8个灯全部闪烁8次
POP P1
POP PSW
POP ACC
RETI
DELAY: ……;延时程序省略
RET
END
六、设单片机的时钟频率为12MHz,用定时器T1定时方法,在P1.0产生频率为20KHz等宽矩形波,选择工作方式2编程实现,根据提示将程序补充完整。
程序:
ORG 0000H
LJMP START
ORG 001BH
LJMP TIME1
ORG 0100H
START:
MOV TMOD,#20H ;设置TMOD
MOV TH1, #0CEH ;设置计数初值.50
MOV TL1, #0CEH

SETB EA
SETB ET1
SETB TR1 ;启动定时器T1运行
$:SJMP $
TIME1: ;产生矩形波
CPL P1.0
RETI
END
六、以定时器1进行外部事件计数,每计数150个脉冲后,从P1.1输出高电平并保持1s,如此循环不止。设晶振频率为12MHz,试用模式2编程。根据提示将程序补充完整。
程序:
ORG 0000H
LJMP START
ORG 001BH
LJMP T1FW
ORG 0100H
START:___MOV TMOD,#60H_____________________;设置TMOD
____MOV TH1,_#6AH______________;设初值,要求每计150个脉冲产生溢出
____ MOV TH1,_#6AH _______________;设初值,要求每计150个脉冲产生溢出
SETB EA
SETB ET1
__SETB TR1___________;启动定时
SJMP $
T1FW:__SETB P1.1_____________;从P1.1输出高电平;
……;省略延时程序段
RETI
END
问题补充:
图片上也要做 做好给500分 加油啊

1: CLR PX0 ;中断0设置为低中断优先级
CLR PX1 ;中断1设置为低中断优先级
CLR IT0 ;中断0设置为电平触发
CLR IT1 ;中断1设置为电平触发
2:
SETB PT1 ;T1高优先级中断
CLR PS ;串行口低优先级中断
3:
51的中断优先级只有两级,如果都处于同一级时,优先级是/INT0→T0→/INT1→T1→串口
所以要通过设置,实现上面的顺序是不可行的。
如果要实现:T0→T1→串口→/INT0→/INT1则是可以的。
程序如下:
SETB PT0
SETB PT1
SETB PS
CLR PX0
CLR PX1
4:
CLR PT0
CLR PX1
CLR IT1
5:
1)
MOV TMOD,#60H ;设置TMOD
MOV TH1,#0CEH ;设初值,要求每计50个脉冲产生溢出
MOV TH1,#0CEH ;设初值,要求每计50个脉冲产生溢出
SETB EA
SETB ET1
SETB TR1 ;启动定时
2)
MOV TMOD ,#10H ;设置工作为方式1
MOV TH1,#0ECH ;送初值,定时5ms
MOV TL1,#78H
SETB EA ;开总中断
SETB ET1 ;开定时器1中断
SETB TR1 ;启动定时器1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-22
你那样写代码,程序只执行一遍,到第二个循环结束后,程序停止,此时LED是亮的,所以就一直亮的。你应该加个while(1)循环
,让这段程序反复执行,这样才会闪烁起来。而且那个循环,也太短了,就算真的闪烁,你也看不出来,应该加大循环常数,建议使用两个
循环嵌套
,时延时加长。
再者,你把单片机接正负5伏,不知道你想干嘛用,无法理解,LED直接接,连个
限流电阻
也没有,你的电路问题很大。烧坏器件也
不是不可能
。20脚应该接地,然后LED应该加限流电阻。而且,
51单片机
直接驱动LED,几乎不太可行,中间还应该加驱动级,这样电路才能稳定。
第2个回答  2020-08-12
atmel/intel的80c51系列的不能现场编程,需拆下芯片使用专门的脱机编程器。s系列的可以isp在线编程。stc的可串口在线编程。观察芯片的工作状态,只能通过软件设置运行指示或是按照一定的通讯协议对外发送数据,来解析机器工作状态。
第3个回答  2009-06-25
1、60H 20H 90H
2、50H 50H
3、D3H
4、30H
5、?
6、?
六怎么那么多?
第4个回答  2020-02-24
#include
sbit
LED=P1^0
;
int
i;
void
main()
{
while(1)/加了这个
{
LED=0;
for(i=0;i
LED=1;
for(i=0;i
}
}
你的led是连在P1.0的端口上。