久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3553|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

這個(gè)單片機(jī)函數(shù)功能是16位自動重載模式中給定時(shí)器設(shè)定初值的,賦值給8位寄存器TL0

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
廢話不多說,先上代碼

/************************* 定時(shí)器設(shè)定計(jì)數(shù)(16位) *************************
        
                變量名                |                        取值范圍                |                        變量含義
                NUM                        |                        0 ~ 4                        |                        定時(shí)器編號
                COUNT                |                0 ~ 65535                |                        定時(shí)器計(jì)數(shù)值
        
*/


void _TIMER_COUNT_16_(uint8_t NUM, uint16_t COUNT){
        
        uint16_t Temp;
        Temp = 65536 - COUNT;
        
        switch (NUM){
                case 0 :
                        TL0 = Temp;
                        TH0 = _crol_(Temp,8);
                        break;
                case 1 :
                        TH1 = Temp;
                        TH1 = _crol_(Temp,8);
                        break;
                case 2 :
                        T2L = Temp;
                        T2H = _crol_(Temp,8);
                        break;
                case 3 :
                        T3L = Temp;
                        T3H = _crol_(Temp,8);
                        break;
                case 4 :
                        T4L = Temp;
                        T4H = _crol_(Temp,8);
                        break;
        }
        
}


我本來想寫一個(gè)庫函數(shù),做一個(gè)長期的積累,結(jié)果就出怪事了。


這段代碼里的兩個(gè)變量在上面注釋里有,編譯之后單步運(yùn)行,發(fā)現(xiàn)變量監(jiān)視器里發(fā)生“靈異事件”。


這個(gè)函數(shù)功能是16位自動重載模式中給定時(shí)器設(shè)定初值的。假定 NUM = 0(給定時(shí)器0設(shè)定初值)。Temp是一個(gè)16位無符號變量,用來存放定時(shí)器初始值(65536 - 計(jì)數(shù)值COUNT)。賦值給8位寄存器TL0,直接將低8位送進(jìn)去,沒有任何問題。然后Temp右移8位,幅值給TH0,但這中間發(fā)生了幾個(gè)奇怪的問題。


1、測試,Temp(定時(shí)器初值) = 65536 - COUNT(計(jì)數(shù)值)。但這條語句執(zhí)行完之后,COUNT的值也發(fā)生了變化,雖說運(yùn)算結(jié)果是正確的,而且COUNT是局部變量不影響主函數(shù),但哪有把操作數(shù)改變的道理?萬一我下面再需要用到COUNT呢?那不全亂套了?




2、一開始我用的是 “>>” 右移運(yùn)算符,但無論怎么改都沒有效果,Temp變量并沒有右移8位。后來改用 intrins.h 的庫函數(shù) _cror_(),不用不要緊,一用更邪門了。_cror_(Temp,8)操作之后連NUM這個(gè)數(shù)都改變了,但這可是NUM啊!這是定時(shí)器編號啊,函數(shù)里沒有修改,也根本不需要修改,怎么莫名其妙地就被改了呢?而且說好的移位呢?也沒實(shí)現(xiàn)啊……




希望前輩答疑解惑,多謝啦!



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:47286 發(fā)表于 2020-9-25 20:13 | 只看該作者
用宏定義寫不好么 你這么寫是挺方便 但編譯后文件大 運(yùn)行速度也有影響 畢竟要走一個(gè)switch

#define FOC 1 //1=11.0592 2=22.1148

#if FOC==1 //如果 頻率設(shè)置=1 編譯以下內(nèi)容
THV=0x??; //高8位
THL=0x??; //低8位
#elif FOC==2 //如果 頻率設(shè)置=2 編譯以下內(nèi)容
THV=0x??; //高8位
THL=0x??; //低8位
#endif 結(jié)束編譯

TL0 = THV;
TH0 = TLV;

這樣寫編譯的時(shí)候?qū)嶋H上只編譯實(shí)際值 沒有額外運(yùn)算 而且 也可以實(shí)現(xiàn)靈活配置
回復(fù)

使用道具 舉報(bào)

板凳
ID:224104 發(fā)表于 2020-9-26 15:33 | 只看該作者
dzbj 發(fā)表于 2020-9-25 20:13
用宏定義寫不好么 你這么寫是挺方便 但編譯后文件大 運(yùn)行速度也有影響 畢竟要走一個(gè)switch

#define FOC  ...

只是單純想寫個(gè)庫,而且初始化只有一次,不是循環(huán)調(diào)用,應(yīng)該不影響運(yùn)行效率
回復(fù)

使用道具 舉報(bào)

地板
ID:311846 發(fā)表于 2020-9-27 16:46 | 只看該作者
本帖最后由 權(quán)威人物 于 2020-9-27 16:51 編輯

親,移位操作這邊建議加括號哦!對于一些符號類型不匹配的也建議手動加強(qiáng)制轉(zhuǎn)換,對于_cror_建議仔細(xì)看看的函數(shù)說明,以后對函數(shù)有異議麻煩請自行找度娘,一般不會重現(xiàn)偏差。
回復(fù)

使用道具 舉報(bào)

5#
ID:311846 發(fā)表于 2020-9-27 16:49 | 只看該作者
對于NUM驗(yàn)證直接,固定NUM的值,在其他所有地方的NUM使用屏蔽掉
回復(fù)

使用道具 舉報(bào)

6#
ID:224104 發(fā)表于 2020-9-28 10:45 | 只看該作者
權(quán)威人物 發(fā)表于 2020-9-27 16:46
親,移位操作這邊建議加括號哦!對于一些符號類型不匹配的也建議手動加強(qiáng)制轉(zhuǎn)換,對于_cror_建議仔細(xì)看看的 ...

剛剛查了一下才知道,_cror_ 是字節(jié)變量右移,謝謝啦
回復(fù)

使用道具 舉報(bào)

7#
ID:224104 發(fā)表于 2020-9-28 10:48 | 只看該作者
權(quán)威人物 發(fā)表于 2020-9-27 16:49
對于NUM驗(yàn)證直接,固定NUM的值,在其他所有地方的NUM使用屏蔽掉

請問具體代碼怎么實(shí)現(xiàn)呢?
回復(fù)

使用道具 舉報(bào)

8#
ID:224104 發(fā)表于 2020-9-28 11:37 | 只看該作者
問題已經(jīng)完全解決了,經(jīng)測試是編譯器的鍋。

選擇8(默認(rèn))就會出現(xiàn)各種各樣莫名其妙的問題。改成3之后所有的錯(cuò)誤都沒了。

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人精品女人久久久 | 国产一级精品毛片 | 午夜视频在线免费观看 | a级片在线观看 | 91免费观看国产 | 亚洲人人 | av手机免费在线观看 | 中文字字幕一区二区三区四区五区 | 日韩欧美三区 | 亚洲精品乱码久久久久久蜜桃91 | 精品欧美乱码久久久久久 | 欧美日韩综合一区 | 99久久精品免费看国产四区 | 91伊人| 免费观看www | 99热这里都是精品 | 国产精品视频在线播放 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 美女黄18岁以下禁止观看 | 韩国精品在线 | 精品国产欧美一区二区三区成人 | 久综合 | 一本一道久久a久久精品蜜桃 | 婷婷国产一区二区三区 | 波多野结衣先锋影音 | 日韩手机在线视频 | 亚洲国产片| 97超在线视频| 日韩欧美三级 | 久久www免费人成看片高清 | 成人网在线观看 | www.4567 | 久草影视在线 | 国产精品成人免费 | 91干b| 欧美日韩免费 | 亚洲欧美日韩久久久 | 国产一区日韩在线 | 羞羞色影院 | 中文字幕在线三区 | 日本久久视频 |