编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400us,占空比为10:1的矩形脉冲。

如题所述

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP IT0P
MAIN: MOV TMOD,#02H ;定时器/计数器T0为定时方式2
MOV TL0,#4AH ;定时364μs初值赋值
SETB TR0 ;启动T0,开始计数
SETB ET0 ;允许T0中断
SETB EA ;CPU开中断
SETB P1.0
WAIT: AJMP WAIT
IT0P: CLR EA
CLR P1.0 ;关中断
MOV R0,#9
DLY: DJNZ R0,DLY ;延时26μs
MOV TL0,#4AH ;定时364μs初值赋值
SETB P1.0
SETB EA
RETI
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-03
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP IT0P
MAIN: MOV TMOD,#02H ;定时器/计数器T0为定时方式2
MOV TL0,#4AH ;定时364μs初值赋值
SETB TR0 ;启动T0,开始计数
SETB ET0 ;允许T0中断
SETB EA ;CPU开中断
SETB P1.0
WAIT:AJMP WAIT
IT0P: CLR EA
CLR P1.0 ;关中断
MOV R0,#9
DLY: DJNZ R0,DLY ;延时36μs
MOV TL0,#4AH ;定时364μs初值赋值
SETB P1.0
SETB EA
RETI

把程序加载到单片机,这样可以看一下实现的效果
第2个回答  2019-10-08
#include<reg51.h>
sbit P1_0=P1^0;
unsigned char cnt=0;
void main()
{
TMOD=0X02;
TH0=256-100;
TL0=TH0;
EA=1;
ET0=1;
TR0=1;
for(;;){}
}
void timer()interrupt 1 using 1
{
cnt++;
if(cnt<4)
P1_0=1;
if(cnt==4)
{
cnt=0;
P1_0=0;
}
}
第3个回答  2009-10-15
程序在哪里运行,是把计算结果在计算机上输出,还是传给某硬件或示波器?如果在计算机上输出,是需要DOS做图还是C++,请表述清楚,这样大家才能有针对性的帮助你。本回答被提问者采纳
相似回答