亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 用幾個單片機點亮LED時,同時供電后會出現時間差 [打印本頁]

作者: namecy    時間: 2019-4-19 16:47
標題: 用幾個單片機點亮LED時,同時供電后會出現時間差
如題,我用幾個單片機點亮LED,一開始用的延時而已,同時供電后亮滅同步,經過一段時間后會出現不同步的現象,我以為是延時誤差的原因,后來改用了定時器,定時0.5S,出現的問題一樣,也是一開始同步,經過一段時間后不同步,請問是什么原因導致的呢;

作者: angmall    時間: 2019-4-19 17:41
你這改的代碼程序也不發,讓大家猜嘛,那叫人家怎么幫你?
作者: liuwang2051    時間: 2019-4-19 17:55
難道是晶震誤差?
作者: snni00    時間: 2019-4-19 18:00
時間長了單片機之間時間偏差肯定越來越大,時鐘同步解決
作者: namecy    時間: 2019-4-20 08:40
補發下代碼
#include <REG52.H>       
#include <stdio.h>   //Keil library       
#include <INTRINS.H>
#define FSCLK        11059200
typedef unsigned char  uchar;
typedef unsigned short ushort;
typedef unsigned int   uint;
uint num = 1,flag = 1,time = 0;

sbit led1=P1^2;
sbit led2=P1^4;
void times(int num);
void Delay_ms(uint time)
{
        uint i,j;
        for(i = 0;i < time;i ++)
                for(j = 0;j < 930;j ++);
}

void main()
{
         
        while(1)
        {
    led1 = 0;
    led2 = 0;
    times(1);
                led2 = 1;
                led1 = 1;
                times(1);
       
}
        }
void time0()interrupt 1
{
        TMOD = 0X01;
        TH0 = (65536-FSCLK/12/20)/256;
        TL0 = (65536-FSCLK/12/20)%256;
        ET0 = 1;
        EA = 1;
        time ++;
        if(time == 10)
        {
                time = 0;
                flag = 1;
        }
}
void times(uint num)
{
        while(num!=0)
        {
                TR0 = 1;
        if(flag!=0)
        {
                num--;
                flag = 0;
                TR0 = 0;
        }
}
}
作者: namecy    時間: 2019-4-20 08:42
用的是STC15W408AS,內置晶振的
作者: tigerzq    時間: 2019-4-20 10:10
點led還要用多個單片機嗎?一個不就解決問題了嗎?好像內置的晶振精度不是很高吧!
作者: wulin    時間: 2019-4-20 10:12
namecy 發表于 2019-4-20 08:42
用的是STC15W408AS,內置晶振的

首先單片機內置時鐘誤差就比較大,何況多機工作不可能同頻同相,時間長了積累誤差非常大。如果必須采用多機工作只能用一個外部時鐘源向所有MCU提供同步時鐘。STC15W408AS可以設置為使用外部時鐘。
作者: liuzx66    時間: 2019-4-20 10:30
必須用同步信號才行
作者: namecy    時間: 2019-4-20 11:00
wulin 發表于 2019-4-20 10:12
首先單片機內置時鐘誤差就比較大,何況多機工作不可能同頻同相,時間長了積累誤差非常大。如果必須采用多 ...

好的,謝謝,我試試
作者: tzs233    時間: 2019-4-20 11:05
我也遇到過類似問題。 延時時間超過以 unsigned char為基準的數值(即>255后) 進位標志上(CY)有時會出錯誤。
仿真的反匯編也看不出來。 延時一下長一下短的。
建議你再判斷一次會杜絕這個問題。

比如
//=====延時函數===
//由定時器2確定lgRunTime基準時間===
void TestDelay(unsigned int lDelayTime)
{
        lgRunTime = 0;
       
        while(lgRunTime<lDelayTime)
        {
                ;       
        }
        while(lgRunTime<lDelayTime)
        {
                ;       
        }
}
作者: baisstg    時間: 2019-4-22 15:44
是晶振誤差導致的,建議用一個同步信號去讓多個單片機同步




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1