找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2893|回复: 3
打印 上一主题 下一主题
收起左侧

单片机方波程序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仿真的
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:126173 发表于 2020-6-25 17:26 | 只看该作者
不是没有起振,是multisim比较慢,你看看设置的时间步长,我一般都设成1秒
回复

使用道具 举报

板凳
ID:126173 发表于 2020-6-25 17:27 | 只看该作者
不是不起振,是你的时间步长设置不正确,我一般都设成1秒 ,你试下看

新建位图图像.jpg (488.66 KB, 下载次数: 18)

新建位图图像.jpg
回复

使用道具 举报

地板
ID:213173 发表于 2020-6-26 08:37 | 只看该作者
主程序错误,主循环周期小于中断周期,定时器被重复初始化,永远进不到中断。改小中断周期虽然勉强运行但波形与预想差距很大。正确写法如下:
void main()
{
        timer_set();
        while(1)
        {
                C1=TR0;
                C2=EA;
                C3=ET0;
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表