[問題] 8051,偵測P0狀態,決定P2輸出

看板Electronics作者 (cc)時間11年前 (2013/03/18 23:18), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/2 (看更多)
各位版大好,目前小弟再做一個馬達控制,程式上遇到了一個問題想請教一下 如標題,有三個訊號會輸入到P0.0~P0.2,我要如何不斷偵測P0.0~P0.2的訊號 來決定P2.0~P2.3訊號呢? 例如:給P0.0~P0.2訊號為001,則P2.0~P2.3則輸出1001 給P0.0~P0.2訊號為010,則P2.0~P2.3則輸出0110 給P0.0~P0.2訊號為100,則P2.0~P2.3則輸出0000 等等以此類推,目前小弟程式寫得如下: char TEMP; void EX0_int(void) interrupt 0 { TEMP=P0; P32=1; } void main(void) { IE=0x91; P2=0; TH0=TL0=0; while(1) { if (TEMP==0x30) {P2=0x00;} else { if(TEMP==0x31) { P20=1; P21=0; P22=0; while(TEMP==0x31) { P20=1; P21=0; P22=0; P23=1; } } } 目前想到的是利用P3.2中斷,來偵測到P0訊號來決定P2的輸出,不知有沒有 辦法就是當P0.0~P0.2訊號改變時,直接改變P2的輸出,不需要通過觸發中斷腳位 來讀取P0的資料~~ 感謝各位了!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 121.254.123.196

03/18 23:51, , 1F
用邏輯閘兜電路?
03/18 23:51, 1F

03/19 06:47, , 2F
1顆7400應該可以完成解碼,不需用8051
03/19 06:47, 2F
感謝以上大大意見!! 小弟以上程式有簡略,會用8051目的是為了寫PWM來控制馬達的各種速度與轉向 所以才會用8051來做@@"所以並不是單純的P0輸入訊號進來P2輸出,而是會有PWM 與轉向的變化,有想過是否要靠外接電路來達成觸發中斷來接收P0的接腳狀態, 不過是希望電路能簡化一點,所以來問看看能否單純用8051直接偵測P0狀態輸出P2~ ※ 編輯: ccliona 來自: 121.254.123.196 (03/19 07:24)

03/19 07:32, , 3F
怎不直接用陣列對應 一行指令搞定?
03/19 07:32, 3F
不好意思~小弟還太弱,想請問大大所說的陣列對應方式是? ※ 編輯: ccliona 來自: 140.128.86.99 (03/19 15:33)
文章代碼(AID): #1HHp1NK6 (Electronics)
文章代碼(AID): #1HHp1NK6 (Electronics)