mcs-51单片机外接晶振频率为6Mhz,使用定时器1,使得在p1.0输出周期为400us,占空比为

满意回答
org 0000h
ajmp zhu
org 000bh ........中断入口
ajmp zhong
zhu:mov TOMD,#00H
mov TH0,#FAH
mov TL0,#0BH ........360 毫秒一次中断
setb TR0
MOV IE,#82H
zhong:
SETB p1.0
mov R2,#0AH
DJNZ R2,$ 。。。。。20毫秒
CLR p1.0
mov TH0,#FAH
mov TL0,#0BH 。。。。。。重设360秒
RETI

求每一步的解释
占空比是百分之十。计数初值怎么算啊?

org 0000h
ajmp zhu ;复位后自动跳转到主程序

org 000bh ........中断入口
ajmp zhong ;中断响应时,跳转至中断服务子程序
;;;;;;;;;;;;主程序
zhu:mov TOMD,#00H ;设定定时器为工作方式0,即13位定时器
mov TH0,#FAH ;定时器初值为 FA0BH——根据定时时长计算,
mov TL0,#0BH ;........360 微秒一次中断
setb TR0 ;启动定时器
MOV IE,#82H ;开总中断,开定时器T0中断 (EA=1,ET0=1)
SJMP $ ;这个我加的,原地跳转,作为程序执行空间的隔离
;;;;;;;中断服务子程序
zhong:
SETB p1.0 ;将P1.0管脚置为高电平输出
mov R2,#0AH ;R2赋值 10,作为循环次数
DJNZ R2,$ ;R2减一不为零则原地跳转,为零执行下一条语句 。。。。。20毫秒
;应该是40微秒延时这里产生40us延时是因为6Mhz机器周期为2us,
;执行DJNZ需要两个机器周期,因此4us乘上10就是40微秒
CLR p1.0 ;将P1.0的管脚状态翻转,即20us后变为低电平
mov TH0,#FAH ; 重装定时器初值
mov TL0,#0BH 。。。。。。重设360 微秒
RETI ;中断返回,这里是回到SJMP $继续等待下一次中断
换句话说,400us内,每360微秒后出现一次高电平,持续40微秒后恢复低电平……因此问题最后看不到的占空比值应为10%
温馨提示:答案为网友推荐,仅供参考