欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: stc單片機兩個長整型相減出錯 仿真總是不行 [打印本頁]

作者: ZXHREG    時間: 2017-7-18 18:06
標題: stc單片機兩個長整型相減出錯 仿真總是不行
unsigned char cnt=0;//pca計數器溢出次數
unsigned long count0=0;//記錄上一次捕獲值
unsigned long count1=0;//記錄本次捕獲值
unsigned long length=0;//存儲信號的時間長度

void PCA_ISR() interrupt 7
{
        if(CF)
        {        CF=0;
                cnt++;//pca計數器溢出次數+1
        }
        if(CCF3)
        {
                CCF3=0;
                count0=count1;//備份上次捕獲的值(上次捕獲時的計數值)
                ((unsigned char *)&count1)[3]=CCAP3L;
                ((unsigned char *)&count1)[2]=CCAP3H;
                ((unsigned char *)&count1)[1]=cnt;
                 ((unsigned char *)&count1)[0]=0;
               
                length=count1 - count0;沒有執行相減之前,count1和count0的值都正常不超1M,減完最大數竟然有428M


               
                cnt=0;
               
        }
}
用的是stc8a8k64sa12最新的單片機
不知道錯在哪里了 count1和count0的值用lcd輸出都顯示正常
length的值就不穩定,最大到400多M
這個芯片有仿真功能,就是仿真不成功 總是 Connection to target system lost!


作者: yzwzfyz    時間: 2017-7-19 06:35
約定是非符號數,求差后,如果出現負數了,你讓編譯如何下結論?說正,可是差出來是負不能說瞎話;說負又違反你的約定,于是跳樓犧牲被你逼死了。
作者: ZXHREG    時間: 2017-7-19 21:00
yzwzfyz 發表于 2017-7-19 06:35
約定是非符號數,求差后,如果出現負數了,你讓編譯如何下結論?說正,可是差出來是負不能說瞎話;說負又違 ...

有什么好的算法嗎,剛學就照著宏晶例子抄來的,有什么好的算法嗎,是不是在持續一個周期后清零重新計數,
作者: zl2168    時間: 2017-7-20 10:07
先學概念:數據類型轉換,再學Keil C調試,觀測程序逐條執行后,數據類型變化。最后再去Proteus仿真。介紹一本書,《80C51單片機實用教程——基于Keil C和Proteus》,4.2.4  數據類型轉換,高等教育出版社ISBN 978-7-04-044532-9, 用于學習51單片機原理,程序(雙解c和匯編)語句條條有注解,便于閱讀理解,便于自學。內有一節:4.2.4  數據類型轉換
作者: ZXHREG    時間: 2017-7-20 19:12
zl2168 發表于 2017-7-20 10:07
先學概念:數據類型轉換,再學Keil C調試,觀測程序逐條執行后,數據類型變化。最后再去Proteus仿真。介紹 ...

新學,用的是最新的stc8a8k64s4a12 ,不知為什么keil下仿真就出connection to target system  lost
改了一下,不出溢出的錯誤了,但總是覺得哪里不對,還請指教
void PCA_ISR() interrupt 7
{
        if(CF)
        {        CF=0;
                cnt++;//pca計數器溢出次數+1
                if(cnt>=168)//11.0592頻率下不足1HZ清零
                {
                        CH=0;    CL=0;
                        count1=0;count0=0;
                        cnt=0;
                        CCF3=0;
                        HZ=0;
                        pcaFlag=1;
                }
        }
        if(CCF3)
        {
                CCF3=0;
                count0=count1;//備份上次捕獲的值(上次捕獲時的計數值)
                ((unsigned char *)&count1)[3]=CCAP3L;
                ((unsigned char *)&count1)[2]=CCAP3H;
                ((unsigned char *)&count1)[1]=cnt;
                ((unsigned char *)&count1)[0]=0;
                 length=count1-count0;
                HZ=11059200/length;//11.0592M頻率
                pcaFlag=1;               
        }
}




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