[問題] 8051,偵測P0狀態,決定P2輸出
各位版大好,目前小弟再做一個馬達控制,程式上遇到了一個問題想請教一下
如標題,有三個訊號會輸入到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
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)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):