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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

使用單片機(jī)判斷撥碼開關(guān)位數(shù)時(shí),返回結(jié)果異常

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1143744 發(fā)表于 2025-5-22 16:30 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
硬件情況:
             單片機(jī)型號(hào)是STC8G2K64S4 ,LQFP48封裝
             P0 P2是接收端口(準(zhǔn)雙向置1),P1 P4是驅(qū)動(dòng)端口(準(zhǔn)雙向置0)

             撥碼開關(guān) 是多組獨(dú)立開關(guān)的集合體,有4組,6組,8組,9組等
工程原理:
             將撥碼開關(guān)引腳與單片機(jī)端口相連,閉合開關(guān)后,檢測(cè)接收端口0 的個(gè)數(shù),來判斷當(dāng)前開關(guān)的位數(shù)(檢測(cè)前已確保所有開關(guān)閉合)
             由于STC8G系列一組IO只有8個(gè)引腳,如果要測(cè)量的撥碼開關(guān)位數(shù)大于8,就必須啟用兩組IO來組合實(shí)現(xiàn)
             程序中,先將兩組IO的檢測(cè)結(jié)果(8位)組合為16位,然后再從高位往低位計(jì)數(shù) “0”的個(gè)數(shù),即可得出撥碼開關(guān)的位數(shù)
源代碼:
              P1=0x00;P4=0x00;
             _nop_();_nop_();
      
             bits=detect_bit(con_bit(P0,P2));


             unsigned int con_bit (unsigned char vol_high,unsigned char vol_low){
                                return (vol_high<<8)|vol_low ;
                                }


              unsigned char detect_bit(unsigned int vol) {
                                  unsigned int mask = 0x8000;
                                  unsigned char cnt = 0;
                                  while (mask && !(vol & mask)) {       // 當(dāng)mask位為0時(shí)計(jì)數(shù)
                                   cnt++;
                                  mask >>= 1;
                                   }
                                return cnt;                          // 返回連續(xù)高位0的個(gè)數(shù)(0-16)
                                }
問題:
           經(jīng)實(shí)踐,當(dāng)撥碼開關(guān)位數(shù)<8時(shí),返回的bits 是0;當(dāng)撥碼開關(guān)位數(shù)>=8時(shí),返回的bits 是8 ,無法按照期望正確返回待測(cè)的撥碼開關(guān)位數(shù)
求助大伙,這是什么原因?qū)е碌模?/font>

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

使用道具 舉報(bào)

沙發(fā)
ID:1121801 發(fā)表于 2025-5-23 08:28 | 只看該作者
程序模擬運(yùn)行一下,單步運(yùn)行,設(shè)置位然后觀察變量變化.這是單片機(jī)程序最簡(jiǎn)單的檢查方法.而且你程序不長(zhǎng),很容易發(fā)現(xiàn)問題的.
回復(fù)

使用道具 舉報(bào)

板凳
ID:332444 發(fā)表于 2025-5-23 08:51 | 只看該作者
為什么一定要組合?如果是做表決器,一組單獨(dú)處理后相加即可.
回復(fù)

使用道具 舉報(bào)

地板
ID:1143744 發(fā)表于 2025-5-23 11:17 | 只看該作者
cyi8 發(fā)表于 2025-5-23 08:28
程序模擬運(yùn)行一下,單步運(yùn)行,設(shè)置位然后觀察變量變化.這是單片機(jī)程序最簡(jiǎn)單的檢查方法.而且你程序不長(zhǎng),很容 ...

謝謝您的意見
回復(fù)

使用道具 舉報(bào)

5#
ID:1143744 發(fā)表于 2025-5-23 11:21 | 只看該作者
xianfajushi 發(fā)表于 2025-5-23 08:51
為什么一定要組合?如果是做表決器,一組單獨(dú)處理后相加即可.

因?yàn)楹罄m(xù)程序也會(huì)使用到這個(gè)組合后的結(jié)果,如果分開的話,后面每個(gè)調(diào)用這個(gè)結(jié)果的語句及函數(shù)都需要進(jìn)行修改

不過,問題已經(jīng)找到了,8位的char 左移8位結(jié)果會(huì)全部丟失,需要強(qiáng)制類型轉(zhuǎn)換
再加上硬件端口排布的小問題

感謝您的回復(fù)
回復(fù)

使用道具 舉報(bào)

6#
ID:1133081 發(fā)表于 2025-5-23 13:14 | 只看該作者
#define PD P0<<8|P1


unsigned int con_bit()
{
        static unsigned int num=0;
        if(num!=PD)
        {
                num=PD;
                return num;
        }       
}
回復(fù)

使用道具 舉報(bào)

7#
ID:332444 發(fā)表于 2025-5-23 15:06 | 只看該作者
ziqidong 發(fā)表于 2025-5-23 11:21
因?yàn)楹罄m(xù)程序也會(huì)使用到這個(gè)組合后的結(jié)果,如果分開的話,后面每個(gè)調(diào)用這個(gè)結(jié)果的語句及函數(shù)都需要進(jìn)行修 ...

如果用賦值十進(jìn)制讀取十進(jìn)制再轉(zhuǎn)二進(jìn)制計(jì)算0的個(gè)數(shù)或1的個(gè)數(shù)是很容易的,也容易理解,代碼也簡(jiǎn)潔易讀;
多組IO讀取一組處理一組,順理成章的;
況且,還可以只使用1組IO當(dāng)輸入,其他IO當(dāng)控制公共端,可以組成8組8輸入,64人表決器。
例如使用51單片機(jī)的P0端作為獨(dú)立按鍵輸入,按鍵公共端由另外IO控制,賦值P0=255,讀取也是十進(jìn)制的值,按鍵1按下時(shí)讀取到的值254即11111110,254轉(zhuǎn)二進(jìn)制,逢0計(jì)數(shù)即得1,假如按鍵2按下讀取到253轉(zhuǎn)二進(jìn)制也得1即11111101,按鍵1、2按下讀取到252轉(zhuǎn)二進(jìn)制即得2即11111100。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久网站免费视频 | 国产精品一区二 | 久久精品久久精品久久精品 | 国产精品精品 | 国产精品视频500部 a久久 | 欧美亚洲一区二区三区 | 亚洲一区二区在线播放 | 欧美在线一区二区三区四区 | 午夜一级大片 | 日本网站在线看 | 毛片一区二区三区 | 欧美aa在线 | 国产黄色大片在线观看 | 亚洲国产视频一区 | 欧美国产视频 | 欧美一级免费 | 日本在线视频一区二区 | caoporn免费| 亚洲视频一区二区三区 | 久久久久久成人网 | 欧美性网| 99久久精品国产麻豆演员表 | 成人h电影在线观看 | 国产免费一区二区三区免费视频 | 秋霞影院一区二区 | 久久久久久九九九九九九 | 中文字幕三区 | 欧美a免费 | 国产精品1区2区 | 久久久久久毛片免费观看 | 久久精品国产一区 | 成人免费看黄网站在线观看 | 欧美视频1区| 五月天国产视频 | 毛片在线看片 | 国色天香综合网 | 久热m3u8 | 久久亚洲国产精品日日av夜夜 | 91精品国产91久久久久久密臀 | 欧美视频免费 | 欧美电影免费观看 |