找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3047|回復: 18
收起左側(cè)

PIC單片機語句編譯的問題?

[復制鏈接]
ID:72649 發(fā)表于 2023-2-19 20:59 | 顯示全部樓層 |閱讀模式
PIC16F里面的語句上面不能編譯,下面可以編譯,什么原因?
        else if(L_KEY1==0 & M_KEY1==1 & H_KEY1 ==1)為什么不能編譯?

        else if(L_KEY1==0 && M_KEY1==1 && H_KEY1 ==1)這樣就可以編譯了
但是在51單片機可以編譯
回復

使用道具 舉報

ID:384109 發(fā)表于 2023-2-19 22:13 | 顯示全部樓層
兩個是不同的語法,不同的指令,即使能編譯通過,也是執(zhí)行不同的功能,查查C語言的編程資料
回復

使用道具 舉報

ID:883242 發(fā)表于 2023-2-19 22:20 | 顯示全部樓層
上面那種寫法即使能通過編譯也不可能正常執(zhí)行,有嚴重的邏輯問題,樓主回家查教材吧。
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-20 08:48 來自觸屏版 | 顯示全部樓層
人中狼 發(fā)表于 2023-2-19 22:13
兩個是不同的語法,不同的指令,即使能編譯通過,也是執(zhí)行不同的功能,查查C語言的編程資料

        else if(L_KEY1==0 & M_KEY1==1 & H_KEY1 ==1)  在51編譯器可以編譯,但是在pic編譯器不能編譯,是什么原因
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-20 08:50 來自觸屏版 | 顯示全部樓層
Hephaestus 發(fā)表于 2023-2-19 22:20
上面那種寫法即使能通過編譯也不可能正常執(zhí)行,有嚴重的邏輯問題,樓主回家查教材吧。

else if(L_KEY1==0 && M_KEY1==1 && H_KEY1 ==1)這樣就可以編譯了
但是在51單片機可以編譯
回復

使用道具 舉報

ID:69038 發(fā)表于 2023-2-20 09:17 | 顯示全部樓層
hjx5548 發(fā)表于 2023-2-20 08:50
else if(L_KEY1==0 && M_KEY1==1 && H_KEY1 ==1)這樣就可以編譯了
但是在51單片機可以編譯

編譯器只是對你代碼進行語法過行校驗合不合法,對你的邏輯是否合理就不管不顧了。
回復

使用道具 舉報

ID:879348 發(fā)表于 2023-2-20 11:50 | 顯示全部樓層
一個&是位操作,和&&是2回事,對于C語言沒有規(guī)定行不行,報錯是編譯器決定是否報這個錯誤
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-20 14:47 來自觸屏版 | 顯示全部樓層
wufa1986 發(fā)表于 2023-2-20 11:50
一個&是位操作,和&&是2回事,對于C語言沒有規(guī)定行不行,報錯是編譯器決定是否報這個錯誤

我把代碼發(fā)出來給你看看,看看哪里出了問題
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-20 15:15 | 顯示全部樓層
hjx5548 發(fā)表于 2023-2-20 14:47
我把代碼發(fā)出來給你看看,看看哪里出了問題
http://www.torrancerestoration.com/bbs/dpj-226936-1.html
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-20 16:06 | 顯示全部樓層
hjx5548 發(fā)表于 2023-2-20 14:47
我把代碼發(fā)出來給你看看,看看哪里出了問題

Serial number: HCPICP-111111 (PRO)
Error   [712] C:\Users\Administrator\Desktop\SH180508A.PCB\daima\guolu.c.c; 107. can't generate code for this expression
Error   [712] C:\Users\Administrator\Desktop\SH180508A.PCB\daima\guolu.c.c; 119. can't generate code for this expression
Error   [712] C:\Users\Administrator\Desktop\SH180508A.PCB\daima\guolu.c.c; 129. can't generate code for this expression
Advisory[1395] notable code sequence candidate suitable for compiler validation suite detected (116)
回復

使用道具 舉報

ID:213173 發(fā)表于 2023-2-20 16:46 | 顯示全部樓層
hjx5548 發(fā)表于 2023-2-20 14:47
我把代碼發(fā)出來給你看看,看看哪里出了問題

&是位運算符,&&是邏輯運算符,差之毫厘,謬以千里。
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-20 23:53 來自觸屏版 | 顯示全部樓層
wulin 發(fā)表于 2023-2-20 16:46
&是位運算符,&&是邏輯運算符,差之毫厘,謬以千里。

兩個運算符我知道,我現(xiàn)在用的是位運算符,想要實現(xiàn)代碼的功能,但是就是不能編譯。
回復

使用道具 舉報

ID:1063136 發(fā)表于 2023-2-21 11:13 | 顯示全部樓層
不熟悉優(yōu)先級的話可以用括號
回復

使用道具 舉報

ID:962286 發(fā)表于 2023-2-21 11:38 | 顯示全部樓層
hjx5548 發(fā)表于 2023-2-20 23:53
兩個運算符我知道,我現(xiàn)在用的是位運算符,想要實現(xiàn)代碼的功能,但是就是不能編譯。

你是想要判斷按鍵L_KEY1有按下同時M_KEY1和H_KEY1無按下嗎?
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-24 05:37 來自觸屏版 | 顯示全部樓層
wufa1986 發(fā)表于 2023-2-20 11:50
一個&是位操作,和&&是2回事,對于C語言沒有規(guī)定行不行,報錯是編譯器決定是否報這個錯誤

MPLAB-IDE編譯器
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-24 05:38 來自觸屏版 | 顯示全部樓層
MCU_FANS 發(fā)表于 2023-2-21 11:38
你是想要判斷按鍵L_KEY1有按下同時M_KEY1和H_KEY1無按下嗎?

滿足三個開關后,才能執(zhí)行下面的功能。不是按鈕,是開關。
回復

使用道具 舉報

ID:962286 發(fā)表于 2023-2-24 15:03 | 顯示全部樓層
hjx5548 發(fā)表于 2023-2-24 05:38
滿足三個開關后,才能執(zhí)行下面的功能。不是按鈕,是開關。

那你應該用 && 而不是用 & 。
回復

使用道具 舉報

ID:72649 發(fā)表于 2023-2-24 18:18 來自觸屏版 | 顯示全部樓層
MCU_FANS 發(fā)表于 2023-2-24 15:03
那你應該用 && 而不是用 & 。

用&&功能不能實現(xiàn)
回復

使用道具 舉報

ID:1034262 發(fā)表于 2023-2-24 18:45 | 顯示全部樓層
這種情況一定要多加括號。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表