求教几道单片机编程题
3个回答
展开全部
此题如下:设系统时钟频率谓12MHZ编程实现从p1.1输出周期1s的方波。
注:用T1计数实现。T1工作于计数方式时,计数脉冲通过T1(p3.5)输入。T0定时到对T1(p3.5)取反一次,则T1(p3.5)每20ms产生一个计数脉冲,那么定时500ms只需2次。设T1工作于方式2,T0工作于方式1,定时方式;则这时方式控制字为61H.定时计数器T0,T1都采用中断方式工作。
程序如下:
ORG
000H
LJMP
MAIN
ORG
000BH
MOV
TH0,#0D8H
MOV
TL0,#0F0H
CPL
P3.5
RETI
ORG
001BH
CPL
P1.1
RETI
ORG
0100H
MAIN:
MOV
TMOD,#61H
MOV
TH0,#0D8H
MOV
TL0,#0F0H
MOV
R2,#00H
MOV
TH1,#0E7H
MOV
TL1,#0E7H
SETB
EA
SETB
ETO
SETB
ET1
SETB
TR0
SETB
TR1
SJMP
$
END
有一点觉得很奇怪:它是通过对T1(p3.5)取反计数的,但是每取反两次不就又变回原来的值了吗,到头来哪儿起到计数作用了,还有就是R2到底起到什么作用了。本人初学,问题可能较简单,莫见笑
注:用T1计数实现。T1工作于计数方式时,计数脉冲通过T1(p3.5)输入。T0定时到对T1(p3.5)取反一次,则T1(p3.5)每20ms产生一个计数脉冲,那么定时500ms只需2次。设T1工作于方式2,T0工作于方式1,定时方式;则这时方式控制字为61H.定时计数器T0,T1都采用中断方式工作。
程序如下:
ORG
000H
LJMP
MAIN
ORG
000BH
MOV
TH0,#0D8H
MOV
TL0,#0F0H
CPL
P3.5
RETI
ORG
001BH
CPL
P1.1
RETI
ORG
0100H
MAIN:
MOV
TMOD,#61H
MOV
TH0,#0D8H
MOV
TL0,#0F0H
MOV
R2,#00H
MOV
TH1,#0E7H
MOV
TL1,#0E7H
SETB
EA
SETB
ETO
SETB
ET1
SETB
TR0
SETB
TR1
SJMP
$
END
有一点觉得很奇怪:它是通过对T1(p3.5)取反计数的,但是每取反两次不就又变回原来的值了吗,到头来哪儿起到计数作用了,还有就是R2到底起到什么作用了。本人初学,问题可能较简单,莫见笑
展开全部
1.
MOV
A,30H
ANL
A,#F0
SWAP
A
MOV
31H,A
MOV
A
,30H
ANL
A,#0FH
MOV
32H,A
2.
MOV
R0,#00H
MOV
R1,#29H
LP:
INC
R1
CJNZ
@R1,#FFH,LP
INC
R0
CJNZ
R1,#50H,LP
MOV
51H,R0
3.
MOV
R0,#50H
MOV
A,#00H
LP:
ADD
A,@R0(不带进位的)
INC
R0
CJNZ
R0,#59H,LP
MOV
B,#0AH
DIV
AB
MOV
4AH,A(整除,四舍五入可以自己再想一下)
4.
MAIN:
MOV
A,#01H
(高电平点亮)
LP:
MOV
P1,A
RLC
A
LCALL
DELAY
LJMP
LP
DELAY:
延时2秒自己想
LJMP
DELAY
5.
6.
后面自己想,比较简单,多看书,应该没问题的
MOV
A,30H
ANL
A,#F0
SWAP
A
MOV
31H,A
MOV
A
,30H
ANL
A,#0FH
MOV
32H,A
2.
MOV
R0,#00H
MOV
R1,#29H
LP:
INC
R1
CJNZ
@R1,#FFH,LP
INC
R0
CJNZ
R1,#50H,LP
MOV
51H,R0
3.
MOV
R0,#50H
MOV
A,#00H
LP:
ADD
A,@R0(不带进位的)
INC
R0
CJNZ
R0,#59H,LP
MOV
B,#0AH
DIV
AB
MOV
4AH,A(整除,四舍五入可以自己再想一下)
4.
MAIN:
MOV
A,#01H
(高电平点亮)
LP:
MOV
P1,A
RLC
A
LCALL
DELAY
LJMP
LP
DELAY:
延时2秒自己想
LJMP
DELAY
5.
6.
后面自己想,比较简单,多看书,应该没问题的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计数是对脉冲的计数,你可以理解为从高电平变到低电平的时候算一次,反两次只是电平变为原来的,但只发生了一次从高到低的过程,所以是计数器要加1,
反4次,电平还是变为原来的电平,但会发生两次从高到底的过程,所以计数器应该是加了2;
在这里,MOV
R2,#00H是没有什么作用,但不影响程序的正确执行
反4次,电平还是变为原来的电平,但会发生两次从高到底的过程,所以计数器应该是加了2;
在这里,MOV
R2,#00H是没有什么作用,但不影响程序的正确执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询