單片機(jī)學(xué)習(xí)筆記外部中斷,定時(shí)器,串口中斷
51有5個(gè)中斷源外部中斷0定時(shí)計(jì)數(shù)中斷0外部中斷1定時(shí)繼續(xù)中斷1串口中斷
MCS-51單片機(jī)中斷系統(tǒng)的結(jié)構(gòu):
本文引用地址:http://www.ex-cimer.com/article/201611/318702.htm5個(gè)中斷源的符號(hào)、名稱及產(chǎn)生的條件如下。
INT0:外部中斷0,由P3.2端口線引入,低電平或下跳沿引起。
INT1:外部中斷1,由P3.3端口線引入,低電平或下跳沿引起。
T0:定時(shí)器/計(jì)數(shù)器0中斷,由T0計(jì)滿回零引起。
T1:定時(shí)器/計(jì)數(shù)器l中斷,由T1計(jì)滿回零引起。
TI/RI:串行I/O中斷,串行端口完成一幀字符發(fā)送/接收后引起。
外部中斷 引腳P3.2 P3.3
EA=1; //全局中斷開
EX0=1; //外部中斷0開
IT0=0; //0為低電平觸發(fā) 1為下降沿觸發(fā)
void ISR_Key(void) interrupt 0 using 1
{
P1=~P1; //進(jìn)入中斷程序執(zhí)行程序,
//此時(shí)可以通過 EA=0指令暫時(shí)關(guān)掉中斷
}
定時(shí)計(jì)數(shù)器 引腳P3.4 P3.5 引腳做計(jì)數(shù)功能
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響
TH0=0x00; //給定初值,這里使用定時(shí)器最大值從0開始計(jì)數(shù)一直到65535溢出
TL0=0x00;
EA=1; //總中斷打開
ET0=1; //定時(shí)器中斷打開
TR0=1; //定時(shí)器開關(guān)打開
}
void Timer0_isr(void) interrupt 1
{
TH0=0x00; //重新賦值
TL0=0x00;
LED=~LED; //指示燈反相,可以看到閃爍
}
串口通訊
并行通訊 控制簡單 8位數(shù)據(jù)線一個(gè)詢問線 一個(gè)應(yīng)答線
線多用于短距離速度快的通訊 對(duì)硬件要求高
串口通訊線少用于長距離傳送成本低數(shù)據(jù)一位一位的發(fā)送
異步通訊指發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收的過程起始位0 + 8位數(shù)據(jù)位 + 結(jié)束位1
數(shù)據(jù)以幀為單位,不要求雙方時(shí)鐘嚴(yán)格一致,實(shí)現(xiàn)容易,設(shè)備開銷小,傳輸效率不高
單工:單方向傳送,例如遙控器
半雙工:同一時(shí)間只能一方發(fā)一方收,例如對(duì)講機(jī)
全雙工:可以同時(shí)數(shù)據(jù)雙向傳送。手發(fā)不影響。
奇偶效驗(yàn):奇校驗(yàn):0000 0001 0偶校驗(yàn):0000 00011
代碼和校驗(yàn):發(fā)送一塊數(shù)據(jù),多產(chǎn)生一個(gè)字節(jié)的校驗(yàn)字符,在代碼末尾,
比特率:美妙傳送的二進(jìn)制代碼的位數(shù),單位是位/秒(bps)
例如:每秒傳送240個(gè)字符, 0 1111 1111 1 10*240=2400bps
RS232是EIA美國電子工業(yè)協(xié)會(huì)1969年修訂的標(biāo)準(zhǔn),定義了數(shù)據(jù)終端設(shè)備DTE與數(shù)據(jù)通信設(shè)備DCE之間的物理結(jié)接口標(biāo)準(zhǔn)
RS232 規(guī)定用25針連接器,
一般有作用的是3跟線TXDRXDSGND
串口通訊要轉(zhuǎn)換電壓,開發(fā)板用的是MAX232把TTL電平轉(zhuǎn)換成RS232電平
此處有一個(gè)公式:
波特率=1/16或1/32*(晶振的頻率/12*(256-TH1))
代入:
9600=11059200/32*12*(256-TH1)
TH1=TH0=FDH
定時(shí)器為工作方式2可自動(dòng)再裝載的8位波特率發(fā)生器
void InitUART (void)
{
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重裝
TH1 = 0xFD; // TH1: 重裝值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打開
EA = 1; //打開總中斷
//ES = 1; //打開串口中斷
}
void main (void)
{
{
SendStr("UART test,技術(shù)論壇: thank you!");
DelayMs(240);//延時(shí)循環(huán)發(fā)送
DelayMs(240);
}
}
發(fā)送一個(gè)字節(jié)
------------------------------------------------*/
void SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
/*------------------------------------------------
發(fā)送一個(gè)字符串
------------------------------------------------*/
void SendStr(unsigned char *s)
{
while(*s!=看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();