单片机高手帮忙哈(汇编语言),帮忙解释下下面每一步程序的含义,就是注释下每一步,越详细越好,谢谢!

采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环下去。假定用MCS-51单片机的晶体振荡器的频... 采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环下去。假定用MCS-51单片机的晶体振荡器的频率为6MHZ,请使用方式1实现,要求编写出程序:程序如下
ORG 000H
AJMP MAIN
ORG 000BH
LJMP PT0J
ORG 0100H
MAIN: MOV TMOD,#05H
MOV TH0,#0FFH;
MOV TL0, #9CH
CLR F0
SETB TR0
SETB ET0
SETB EA
HERE; AJMP HERE
PT0J; JB F0,PT0D
MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0CH
SETB F0
RETI
PT0D; CLR F0
MOV TMOD,#05H
MOV TH0,#0FFH
MOV TL0,#9CH
RETI
END
展开
 我来答
cunli03
2013-01-04 · TA获得超过224个赞
知道小有建树答主
回答量:263
采纳率:100%
帮助的人:99.9万
展开全部
ORG 000H ;00h复位入口
AJMP MAIN ;跳到MAIN
ORG 000BH ;定时器0中断入口
LJMP PT0J ;跳到PT0J
ORG 0100H ;MAIN主程序入口
MAIN: MOV TMOD,#05H ;模式寄存器配置定时器0为16位计数器,p3.4为计数器脉冲输入
MOV TH0,#0FFH ;配置计数器初值0FF9CH,使得计数100个脉冲时刚好溢出,产生中断
MOV TL0, #9CH ;
CLR F0 ;清通用标志位
SETB TR0 ;启动计数器
SETB ET0 ;允许定时器0中断
SETB EA ;允许总中断
HERE; AJMP HERE ;死循环,(等待中断)
PT0J; JB F0,PT0D ;F0标志为1则跳到PT0D
MOV TMOD,#01H ;配置定时器0为16位定时器,
MOV TH0,#0FEH ;装载计数初值,使得刚好1ms时溢出产生中断
MOV TL0,#0CH ;
SETB F0 ;F0置1,使得下次中断时 转换到计数模式
RETI ;中断返回
PT0D; CLR F0 ;F0置0,使得下次中断时 转换到定时器模式
MOV TMOD,#05H ;配置定时器0为16位计数器
MOV TH0,#0FFH ;装载计数初值,使得刚好计数100个脉冲时产生中断
MOV TL0,#9CH ;
RETI ;中断返回
END ;汇编好就好在这里,效率高,c是做不到的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式