51单片机,用汇编语言编写程序,10秒内对外部脉冲进行计数,并数出外部脉冲频率。求高手编写程序。

1、用汇编语言编写程序;2、计时时间:10秒;3、计数外部脉冲;4、求出外部脉冲频率;5、频率以十进制方式通过P0,用数码管显示。... 1、用汇编语言编写程序;
2、计时时间:10秒;
3、计数外部脉冲;
4、求出外部脉冲频率;
5、频率以十进制方式通过P0,用数码管显示。
展开
 我来答
修者世界
2014-06-23 · TA获得超过5852个赞
知道大有可为答主
回答量:5984
采纳率:61%
帮助的人:818万
展开全部
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H

MAIN:
MOV TMOD,#51H

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

MOV TH1,#0

MOV TL1,#0

SETB TR0

SETB TR1

SETB ET0

SETB EA

CLR A

MOV R2,#0

LOOP:
SJMP $

T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

SETB TR0

INC A

CJNE A,#20,T0E

MOV A,#0

INC R2

CJNE R2,#10,T0E

MOV R2,#0

MOV R1,TH1

MOV R0,TL1

MOV B,#10

LCALL DIV16

MOV P1,R0

T0E:
RETI

;R1:R0/B=R1:R0
DIV16:
MOV R7,#08H
MOV B,#6
DIV1:
CLR C
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
CLR C
SUBB A,B
JC DIV2
MOV R1,A
INC R7
DIV2:
DJNZ R7,DIV1
RET
END
追问
不好意思,前段时间太忙了,没有看到你的回答。首先非常感谢你的回答。但能还对此程序作一下解释。不胜感激!
追答
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#51H ;定时器0设为定时器,定时器1设为计数器
MOV TH0,#HIGH(65536-50000) ;50毫秒中断一次
MOV TL0,#LOW(65536-50000)
MOV TH1,#0
MOV TL1,#0
SETB TR0
SETB TR1
SETB ET0
SETB EA
CLR A
MOV R2,#0
LOOP:
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC A
CJNE A,#20,T0E ;1秒到否
MOV A,#0
INC R2
CJNE R2,#10,T0E ;10秒到否
MOV R2,#0
MOV R1,TH1 ;读取定时器1的计数个数
MOV R0,TL1
MOV B,#10
LCALL DIV16
MOV P1,R1
MOV P0,R0
T0E:
RETI
;R1:R0/B=R1:R0
DIV16:
MOV R7,#08H
MOV B,#6
DIV1:
CLR C
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
CLR C
SUBB A,B
JC DIV2
MOV R1,A
INC R7
DIV2:
DJNZ R7,DIV1
RET
END
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式