c语言脉冲波用for循环,汇编翻译成C语言 原题目要求:编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400us,占空比为10:1的矩形脉冲。...

解:设fosc = 12MHz,则机器周期为1us。设P1.0初值为0。

周期为400us,可定义方式2定时,计数初值为256-40,一个周期中断10次为400us,在中断计数为1和2(或任意两次计数之间)时,对P1.0求反即可。

#include

sbit P1_0=P1^0; //输出周期引脚

unsigned char cnt=0; //中断次数计数器,初值为0

void main(){

P1_0=0;  //输出初值为0

TMOD=0x02; //T0方式2定时

TH0=256-40; //计40次,计数初值为模256减40

TL0=TH0;

IE=0x82;  //允许CPU响应中断,允许T0发中断请求

TR0=1; //启动T0

for(;;){} //无限循环等待中断

}

void timer0()interrupt 1 using 1{

cnt++;//中断次数加1

if(cnt==1||cnt==2) P1_0=!P1_0; //中断次数为1或2时对输出引脚求反

if(cnt==10)cnt=0; //中断次数达到10时复位为0

}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。首先,根据你的描述,函数信号发生器输出脉冲波的参数为: - 占空比:20% - 周期:1s - 幅值:5Vpp - 偏移量:2Vdc 现在,我们来分别画出在直流和交流耦合方式下的示波器显示图形。 在直流耦合方式下,示波器会显示出脉冲波的直流分量和交流分量。由于脉冲波的偏移量为2Vdc,因此示波器的基准线会上移2个格子。脉冲波的幅值为5Vpp,因此示波器的垂直刻度应该设置为5V/div。脉冲波的周期为1s,因此示波器的水平刻度应该设置为1s/div。根据占空比公式,脉冲波的高电平时间应该为0.2s,低电平时间应该为0.8s。因此,在示波器上,脉冲波的高电平部分应该占据整个周期的20%的时间,低电平部分应该占据整个周期的80%的时间。 在交流耦合方式下,示波器会显示出脉冲波的交流分量,而直流分量则被屏蔽掉了。因此,在示波器上,脉冲波的基准线应该是中心位置。脉冲波的幅值为5Vpp,因此示波器的垂直刻度应该设置为5V/div。脉冲波的周期为1s,因此示波器的水平刻度应该设置为1s/div。由于脉冲波的占空比为20%,因此,在示波器上,脉冲波的高电平部分应该占据整个周期的20%的时间,低电平部分应该占据整个周期的80%的时间。 下面是两种耦合方式下的示波器显示图形参考: 直流耦合方式下的示波器显示图形: ![直流耦合方式下的示波器显示图形](https://img-blog.csdnimg.cn/20211101173813154.png) 交流耦合方式下的示波器显示图形: ![交流耦合方式下的示波器显示图形](https://img-blog.csdnimg.cn/20211101173912624.png) 希望这个回答能够对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值