我想要51单片机的管脚输出100个高低脉冲,但为什么脉冲数控制不了,示波器上显示的脉冲数根本停不下来?

#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintsbi... #include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit PUL=P0^0; //붨ÒåPUL
sbit DIR=P0^1; //붨ÒåDIR
sbit ENA=P0^2; //붨ÒåENA
uchar i;
void delay (uint z)//ÑÓʱº¯Êý
{
uint x,y;
for(x=z;x>0;x--)
for(y=14;y>0;y--);
}
void delay_us(uint x )
{
for (i=0;i<x;i++)
{
_nop_();
}
}

void main()
{
DIR = 0;
ENA = 1;
delay(100);
for(i=0;i<100;i++)
{
PUL = 0;
delay_us(50);

PUL = 1;
delay_us(50);
}
}
展开
 我来答
无畏无知者

2020-09-10 · TA获得超过4.5万个赞
知道大有可为答主
回答量:2.1万
采纳率:86%
帮助的人:5157万
展开全部

1)有认真理解和学习好全局变量、局部变量的含义和使用情况;

你有两处使用到变量 i,应该设为局部变量,这样才不至于产生相互影响;

2)要保证单片机运行的代码在可预知的地址范围内执行,如在 main()中,得加入while(1);语句,让其最后在此进入死循环,不然机器会继续往下执行就跑到不可知的地方去,输出就不能确定了;

3)示波器问题,可能你得需要个带存储功能的数字示波器,因为仅输出一百个脉冲信号,很快就完结了,你可能还没来得及看,波形就没了;

11kxmx
2020-09-10 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:70%
帮助的人:2433万
展开全部
在程序末尾加while(1)分号即可,否则程序会反复循环或跑飞。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式