采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数

ORG0000HAJMPMAINORG000BHAJMPIT0PMAIN:movTMOD,#06H;程序的初始化(TMODIETCON特殊功能寄存器的设置初始化)movT... ORG 0000H

AJMP MAIN

ORG 000BH

AJMP IT0P

MAIN:mov TMOD,#06H; 程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化)

mov TL0,#156H

mov TH0,#156H

SETB EA

SETB ET0

SETB TR0

CLR F0 ;设置下一轮为定时方式的标志位

WAIT: AJMP WAIT

IT0P: CLR EA ;CPU关闭中断

JB F0,EXTN1 ;F0=1转计数工作模式

mov TMOD,#00H

mov TL0,#ocH

mov TH0#0feH

SETB EA

RETI

EXTN1:mov TMOD,#06H

mov TL0,#156H

mov TH0,#156H

SETB EA

RETI

这是书上给出的答案,但这样并没有实现自动转换,要手动置F0的值才能转吧,怎么自动呢?
展开
 我来答
爱堕落
2020-04-29 · TA获得超过4118个赞
知道答主
回答量:54
采纳率:0%
帮助的人:1.5万
展开全部

ORG 0000HAJMP MAIN ORG 000BH AJMP IT0PMAIN:mov TMOD,#06H; 程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化) mov TL0,#156H mov TH0,#156H SETB EA

 SETB ET0 SETB TR0 CLR F0 ;设置下一轮为定时方式的标志位WAIT: AJMP WAITIT0P: CLR EA ;CPU关闭中断JB F0,EXTN1 ;F0=1转计数工作模式mov TMOD,#00H

 mov TL0,#oc mov TH0#0feH SETB EA RETIEXTN1:mov TMOD,#06H mov TL0,#156Hmov TH0,#156HSETB EA RETI

这是书上给出的答案,但这样并没有实现自动转换,要手动置F0的值才能转吧,怎么自动ORG 0000HAJMP MAIN ORG 000BHAJMP IT0PMAIN:mov TMOD,#06H; 

程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化)mov TL0,#156H mov TH0,#156H SETB EA SETB ET0 SETB TR0 MOV R1,#00H ;清空计数器 CLR 

F0 ;设置下一轮为定时方式的标志位 WAIT: AJMP WAITIT0P: CLR EA ;CPU关闭中断 JB F0,EXTN1 ;F0=1转计数工作模式SETB F0 mov TMOD,#00 mov TL0,#ocHmov 

TH0#0feHSETB EARETEXTN1: INC R1 ;计数器加1 MOV A,R1CJNE A,#64H,EXTN2 ;计数是否到100CLR F0 ;开启计时标志MOV R1,#00HEXTN2:mov 

TMOD,#06 mov TL0,#156H mov TH0,#156H SETB EA

扩展资料

采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。

假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现

(A timer / counter T0 is used to count the external pulse. After counting 100 pulses, T0 turns to a timing operation. 

After timing 1ms, it turns to count mode, so the cycle is more than one. Suppose the frequency of the crystal oscillator of MCS-51 single chip is 6MHz, please use mode 1)

参考资料:百度百科-定时器

蕊跳的感觉
推荐于2017-09-01 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:67.4万
展开全部
ORG 0000H

AJMP MAIN

ORG 000BH

AJMP IT0P

MAIN:mov TMOD,#06H; 程序的初始化(TMOD IE TCON特殊功能寄存器的设置初始化)

mov TL0,#156H

mov TH0,#156H

SETB EA

SETB ET0

SETB TR0

MOV R1,#00H ;清空计数器

CLR F0 ;设置下一轮为定时方式的标志位

WAIT: AJMP WAIT

IT0P: CLR EA ;CPU关闭中断

JB F0,EXTN1 ;F0=1转计数工作模式

SETB F0

mov TMOD,#00H

mov TL0,#ocH

mov TH0#0feH

SETB EA

RETI

EXTN1:
INC R1 ;计数器加1

MOV A,R1

CJNE A,#64H,EXTN2 ;计数是否到100

CLR F0 ;开启计时标志

MOV R1,#00H

EXTN2:
mov TMOD,#06H

mov TL0,#156H

mov TH0,#156H

SETB EA

RETI
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黑的白社会
2018-12-26 · TA获得超过1448个赞
知道小有建树答主
回答量:980
采纳率:59%
帮助的人:299万
展开全部
你这题有个明显的bug 没说是方式一还是方式二 两种方法是不一样的
更多追问追答
追答

这是方式二的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
12qq115
2012-11-29
知道答主
回答量:1
采纳率:0%
帮助的人:1563
展开全部
计数100个脉冲,为什么计数初值不是100滴?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式