标题:
单片机方波程序multisim仿真不起振的问题!
[打印本页]
作者:
ava741963963
时间:
2018-6-8 23:10
标题:
单片机方波程序multisim仿真不起振的问题!
写了一个方波的程序,仿真的时候发现没有起振,求助大神帮忙看看这段代码
#include"reg52.h"
sbit PWM=P3^0;
sbit C1=P2^4 ;
sbit C2=P2^5;
sbit C3=P2^6 ;
int s;
void timer_set(){TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
ET0=1;
EA=1;
TR0=1;
}
void Time0(void) interrupt 1 { s+=1;TH0=(65536-100)/256;
TL0=(65536-100)%256;
if(PWM)PWM=0;
else PWM=1;}
void main(){
while(1){
timer_set();
C1=TR0;
C2=EA ;
C3=ET0 ;
}}
把TH0=(65536-100)/256;
TL0=(65536-100)%256;改成TH0=(65536-10)/256;
TL0=(65536-10)%256;却可以起振,这是软件问题吗?我用的是multisim仿真的
作者:
湖南孵化
时间:
2020-6-25 17:26
不是没有起振,是multisim比较慢,你看看设置的时间步长,我一般都设成1秒
作者:
湖南孵化
时间:
2020-6-25 17:27
不是不起振,是你的时间步长设置不正确,我一般都设成1秒 ,你试下看
新建位图图像.jpg
(488.66 KB, 下载次数: 28)
下载附件
2020-6-25 17:26 上传
作者:
wulin
时间:
2020-6-26 08:37
主程序错误,主循环周期小于中断周期,定时器被重复初始化,永远进不到中断。改小中断周期虽然勉强运行但波形与预想差距很大。正确写法如下:
void main()
{
timer_set();
while(1)
{
C1=TR0;
C2=EA;
C3=ET0;
}
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1