#include<>
#define uint unsigned int
#define uchar unsigned char
sbit p0_0=p0^0定義p0^0為max485使能控制埠
ucharidatatable[17]=
uchar keyscan();
外部中斷int0實現接收子函式
void int0(void) interrupt 0
int m;
p1=0xff接收前先使接收方燈全部熄滅
for(m=0;m<5;m輸出按鍵傳送的5次燈的狀態
p1=table2[m];
delay(500呼叫延時子函式
t1,int0中斷初始化函式
void init()
接收子函式receive
void receive接收子函式
傳送子函式send
void send
while(sbuf!=0x01); //接收到訊號如果等於0x01那麼握手成功,否則繼續重新收發
while(flag) i=keyscan(); //將掃瞄的鍵盤編碼對應的num號碼賦值給i
flag=1;
p0_0=1設定max485傳送使能端有效
ti=0開啟傳送中斷
sbuf=table[i-1將設定陣列中的數賦值給傳送緩衝區
while (!ti如果沒傳送完,那麼繼續等待
p1=table[i-1將設定陣列中的數賦值給傳送p1
ti=0若收到,0->ti
}主函式main
void main()
else if(num1==1如果num1=1,那麼對應為傳送方
}}矩陣鍵盤4*4函式
uchar keyscan()
break; //第四列第一行按鍵編號為1
case 0xde: break; //第四列第二行按鍵編號為2
case 0xbe: break; //第四列第三行按鍵編號為3
case 0x7e: break; //第四列第四行按鍵編號為4
while(temp!=0xf0去抖動,並且實現下一次按鍵的掃瞄
temp=p2;
temp=temp&0xf0;
}p2=0xfd選中第三列
temp=p2;
temp=temp&0xf0取p2口資料的高四位,對應為按鍵的行掃瞄碼
while(temp!=0xf0如果有按鍵按下執行以下子函式,軟體防抖動
{ delay(5延時函式呼叫
temp=p2p2口資料送入temp
51微控制器串列埠485通訊程式
以下為微控制器串列埠485通訊程式,從機程式 當然也適用於主機程式 主機傳送可以先用串列埠幫手軟體來除錯,經過keil uvision4實際測試,測試效果如結尾 所示,大部分來自網路,只是改了兩個地方 len sizeof dbuf if i errlen 1 幀超長,錯誤,返回,就可以實現了,其中...
微控制器實習
第四次實習 樓道照明燈 一 實習題目 樓道照明燈 二 實習目的 綜合實驗,掌握80c51微控制器的程式設計除錯方法。三 實習內容 實現樓道間照明燈的方便控制,乙個照明燈,在樓上和樓下各有乙個 閉合式 開關控制。開關的閉合並不直接決定燈的亮滅,而開關狀態的改變才是決定燈亮滅的關鍵。即不管兩個開關當前的...
微控制器總結
微控制器引腳 80c51的資料儲存器配置 80c51的特殊功能暫存器 sfr 五個中斷源 兩個外部中斷,兩個定時器計數器中斷,乙個序列介面中斷。int0 int1輸入低電平或負跳變訊號作為中斷觸發事件 t0 t1定時器 計數器中斷 序列口中斷 8051微控制器中斷源的向量位址 tcon的中斷標誌 中...