|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
C語(yǔ)言編譯過(guò)程P0口的問(wèn)題,求大俠指教 |
作者:小小公民 欄目:單片機(jī) |
//2006.12.8 //檢測(cè)端口P0各管腳的電平 //問(wèn)題:在調(diào)試狀態(tài)下,IF語(yǔ)句執(zhí)行混亂 //對(duì)條件不進(jìn)行判斷就隨意執(zhí)行。 //注:僅僅是在軟件中調(diào)試,所以應(yīng)該不上上拉電阻的問(wèn)題。 //換做其它端口運(yùn)行正常。 //現(xiàn)在還是很迷惑,呵呵,苦惱ing,一定要解決! #include<reg51.h> #include<stdio.h> #define high 1 #define low 0 #define port00 P0_0 #define port01 P0_1 #define port02 P0_2 #define port03 P0_3 #define port04 P0_4 sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P0_4=P0^4; void main() { int a1,b1; port00=low; port01=low; port02=high; port03=low; port04=low; for(;;) { a1=0; b1=0; if(port00==low) { a1=2; b1=3; port00=high;//此處已被賦值為1,但在if(port00==low)仍然執(zhí)行a1=2; //b1=3; //port00=high; } else if(port01==low) { a1=3; b1=3; port01=high; } else if(port02==high) { a1=4; b1=4; port02=low; } else if(port03==low) { a1=5; b1=5; port03=high; } else if(port04==low) { a1=6; b1=6; port04=high; } else continue; } } * - 本貼最后修改時(shí)間:2006-12-8 17:36:08 修改者:小小公民 |
2樓: | >>參與討論 |
作者: tjjack 于 2006/12/8 17:56:00 發(fā)布:
re #define port00 P0_0 #define port01 P0_1 #define port02 P0_2 #define port03 P0_3 #define port04 P0_4 sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P0_4=P0^4; 不對(duì) |
3樓: | >>參與討論 |
作者: 小小公民 于 2006/12/9 7:52:00 發(fā)布:
呵呵,那么應(yīng)該怎么改寫 只這樣寫仍然會(huì)出現(xiàn)那種情況。 sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P0_4=P0^4; |
4樓: | >>參與討論 |
作者: lixun00 于 2006/12/9 9:57:00 發(fā)布:
8951系列的P0口是當(dāng)作總線用的,使勇士要加上拉電阻,其他的... 為準(zhǔn)雙向口,你可以參考"口"電路 |
5樓: | >>參與討論 |
作者: wyh820826 于 2006/12/10 9:29:00 發(fā)布:
你想實(shí)現(xiàn)什么功能 |
6樓: | >>參與討論 |
作者: northerns 于 2006/12/10 13:07:00 發(fā)布:
用什么調(diào)試的? |
7樓: | >>參與討論 |
作者: AIRWILL 于 2006/12/10 21:57:00 發(fā)布:
就是上拉問(wèn)題啦 |
8樓: | >>參與討論 |
作者: 小小公民 于 2006/12/11 15:39:00 發(fā)布:
不是上拉電阻的問(wèn)題 1.用的是Keil C51 7.09 評(píng)估版 ;實(shí)現(xiàn)鍵盤功能; 2.不是上拉電阻的問(wèn)題,因?yàn)閮H僅只是在軟件中實(shí)驗(yàn),將P0口換為P1,P2,P3都可以在軟件中正常調(diào)試; 3.在DEBUG調(diào)試模式下,觀察I/O口控制窗口:在語(yǔ)句內(nèi)向P0口寫入數(shù)據(jù)時(shí),只能改變上面一行數(shù)據(jù)。 去圖書館也沒(méi)找到原因,困惑ing. |
9樓: | >>參與討論 |
作者: 小小公民 于 2006/12/11 16:10:00 發(fā)布:
是不是需要在軟件中有什么特殊設(shè)置? |
10樓: | >>參與討論 |
作者: 小小公民 于 2006/12/11 17:18:00 發(fā)布:
這是編譯后的程序 C:0x0800 C280 CLR P0_0(0x80.0) 24: port01=low; C:0x0802 C281 CLR P0_1(0x80.1) 25: port12=high; C:0x0804 D292 SETB P1_2(0x90.2) 26: port13=low; C:0x0806 C293 CLR P1_3(0x90.3) 27: port14=low; C:0x0808 C294 CLR P1_4(0x90.4) 28: for(;;) 29: { 30: if(port00==low) C:0x080A 208004 JB P0_0(0x80.0),C:0811 31: { 32: port00=high;//此處已被賦值為1,但在if(port00==low)仍然執(zhí)行a1=2; 33: //b1=3; //port00=high; C:0x080D D280 SETB P0_0(0x80.0) 34: } C:0x080F 80F9 SJMP C:080A 35: else if(port01==low) C:0x0811 208104 JB P0_1(0x80.1),C:0818 36: { 37: port01=high; C:0x0814 D281 SETB P0_1(0x80.1) 38: } C:0x0816 80F2 SJMP C:080A 39: else if(port12==high) C:0x0818 309204 JNB P1_2(0x90.2),C:081F 40: { 41: port12=low; C:0x081B C292 CLR P1_2(0x90.2) 42: } C:0x081D 80EB SJMP C:080A 43: else if(port13==low) C:0x081F 209304 JB P1_3(0x90.3),C:0826 44: { 45: port13=high; C:0x0822 D293 SETB P1_3(0x90.3) 46: } C:0x0824 80E4 SJMP C:080A 47: else if(port14==low) C:0x0826 2094E1 JB P1_4(0x90.4),C:080A 48: { 49: port14=high; C:0x0829 D294 SETB P1_4(0x90.4) 50: } C:0x082B 80DD SJMP C:080A 99: MOV R0,#IDATALEN - 1 C:0x082D 787F MOV R0,#0x7F 100: CLR A C:0x082F E4 CLR A 101: IDATALOOP: MOV @R0,A C:0x0830 F6 MOV @R0,A 102: DJNZ R0,IDATALOOP C:0x0831 D8FD DJNZ R0,IDATALOOP(C:0830) 151: MOV SP,#?STACK-1 152: ; This code is required if you use L51_BANK.A51 with Banking Mode 4 153: ; EXTRN CODE (?B_SWITCH0) 154: ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0 C:0x0833 758107 MOV SP(0x81),#0x07 155: LJMP ?C_START C:0x0836 020800 LJMP main(C:0800) |
11樓: | >>參與討論 |
作者: 沈老 于 2006/12/11 21:15:00 發(fā)布:
http://www.zsmcu.com/system/ViewInfo.asp?id=300 參見(jiàn)http://www.zsmcu.com/system/ViewInfo.asp?id=300 |
|
|
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào) |