标题:
求助!51单片机输出方波问题
[打印本页]
作者:
2602482600
时间:
2020-3-15 17:00
标题:
求助!51单片机输出方波问题
题目:12晶振 输出周期1s 占空比70%的方波;
我的代码:
#include "reg51.h"
#define uchar unsigned char //数据类型宏定义
#define uint unsigned int
/*********************引脚定义********************/
#define TICK 10000
#define T100us 256-100
uchar C100us;
sbit out=P1^6;
/*********************主函数**********************/
void main(void)
{
TMOD&=0xf0;
TMOD|=0x02;
TH0=T100us;
TL0=T100us;
TR0=1;
EA=1;
ET0=1;
C100us=TICK;
while(1);
}
void timer0int(void) interrupt 1
{
C100us--;
if(C100us==3000)
{
out=~out;
}
if(C100us==0)
{
C100us=TICK;
out=~out;
}
}
作者:
2602482600
时间:
2020-3-15 17:00
仿真出来的方波是50%的,为什么会这样呢
作者:
wanghz12
时间:
2020-3-15 18:22
#define TICK 10000 #define T100us 256-100 uchar C100us;
作者:
wanghz12
时间:
2020-3-15 18:23
#define TICK 10000 uchar C100us; TICK如何给 C100us赋值;数据类型不对
作者:
人中狼
时间:
2020-3-15 19:45
uchar C100us;,变量类型错了吧,uchar应该最大只到255,应该要用uint
作者:
tyrl800
时间:
2020-3-15 19:54
改成
void timer0int(void) interrupt 1
{
C100us--;
if(C100us<=3000)
{
out=1;
}
else out=0;
if(C100us==0)
{
C100us=TICK;
}
}
作者:
YYB_123456
时间:
2020-3-15 20:32
uchar C100us; 数据类型装不下10000,也比较不出3000,倒是可以比较0。改成uint吧
作者:
odfggf
时间:
2020-3-15 22:17
out=~out;总在取反,占空比当然就是50%了,另外 C100us要定义成uint
作者:
odfggf
时间:
2020-3-15 22:26
本帖最后由 odfggf 于 2020-3-16 08:40 编辑
改写成这样也行
uchar C100us=0;
void timer0int() interrupt 1
{
if(C100us<3000)
{ out=1; }
else
{ out=0; }
C100us++; C100us%=10000;
}
作者:
wulin
时间:
2020-3-16 08:14
2602482600 发表于 2020-3-15 17:00
仿真出来的方波是50%的,为什么会这样呢
#include "reg51.h"
#define uchar unsigned char //数据类型宏定义
#define uint unsigned int
/*********************引脚定义********************/
#define TICK 10000
#define T100us 256-100
sbit out=P1^6;
uint C100us;
/*********************主函数**********************/
void main(void)
{
TMOD&=0xf0;
TMOD|=0x02;
TH0=T100us;
TL0=T100us;
TR0=1;
EA=1;
ET0=1;
C100us=0;
while(1);
}
void timer0int(void) interrupt 1
{
C100us++;
if(C100us<=7000)
out=1;
if(C100us>7000)
out=0;
if(C100us==TICK)
C100us=0;
}
复制代码
作者:
2602482600
时间:
2020-3-19 18:22
谢谢大家,是类型不对
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1