線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1127
推到 Plurk!
推到 Facebook!

一個關於8051中斷的問題

答題得分者是:robert1014
deepmotion
一般會員


發表:9
回覆:3
積分:2
註冊:2003-12-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-24 17:50:33 IP:210.59.xxx.xxx 未訂閱
我先解釋一下硬體 還有我所想的動作 我有三顆LED 紅   P0.0 綠   P0.1 黃   P0.2 開關 P2.0 然後我希望紅綠燈一直以固定頻率閃爍(例如2秒間隔) 然後當綠燈亮時  若開關有動作  則一切依舊   但當紅燈亮時  若開關有動作  則黃燈亮(此時紅燈及綠燈不受影響)    燒進晶片  測試完全沒有動作 但硬體check過了  是沒問題的 我記得有個方法可以指定某一個腳位做判別 像是只抓PO.0或P0.1  不用抓整個Port 但我忘記了  所以要將整個Port值抓出來再過濾 感覺很容易出錯 希望知道的大大能教教我 先謝謝大大們嚕    以下是我的程式碼    #include  #include /* for printf */ #include unsigned char r,q,y,temp_out; int i=20; T0_int(void) interrupt 1 { TL0=(65536-46079)%6; TH0=(65536-46079)/256; i--; if(i==0) { i=20; if(r==0x01) { r=0x02; } else { r=0x01; } temp_out= r | P0&0xfc; P0=temp_out; } } void main() { TMOD=0x01; TR0=1; IE=0x82; P0=0xfe; r=0x02; while(1) { q=P2&0x01; if (r==0x02 && q==0x01) { //y=0xfb;//1111 1011 y=0x00; } else { y=0x04; } temp_out= r | y | 0xf8; P0=temp_out; } }
robert1014
初階會員


發表:34
回覆:85
積分:43
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-01 22:30:21 IP:211.76.xxx.xxx 未訂閱
若要針對某個腳位的話,可以如下 定義 sbit RED_LED = P0^0; 程式部份 RED_LED = 0; RED_LED = 1; 這個要看你硬體腳位,是Low或High觸發 參考看看
系統時間:2024-04-19 23:35:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!