找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2541|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

自己理解的一個串口中斷函數(shù),大神指點,初學(xué)者可以看看比較

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:233997 發(fā)表于 2017-9-26 20:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>

typedef unsigned char num;

void UsartInit() //初始化串口
{
TMOD=0X20; //確定T1定時器計數(shù)器工作方式——工作方式1
SCON=0X50; //確定串口工作方式——工作方式1 波特率=(2^SMOD/32)*T1溢出率
PCON=0X80; //SMOD 倍頻選擇 SMOD=0 波特率正常,SMOD=1波特率加倍
TH1=0XF3; //根據(jù)已知波特率、晶振頻率、串口工作方式計算初值
TL1=0XF3;
EA=1;  //開總中斷
ES=1; //開串口中斷
TR1=1; //開啟計數(shù)模式

}

void main()
{
UsartInit();//初始化串口
while(1);//等待中斷

        }

void serialopen() interrupt 4  //中斷函數(shù),選擇中斷源 4
{
num receivedata; //receivedata 接受和發(fā)送的數(shù)據(jù)
receivedata=SBUF;  //接受數(shù)據(jù)寫入SBUF
RI=0;                         //必須軟件清零RI。硬件置1,CPU響應(yīng)中斷,下一幀數(shù)據(jù)寫入SBUF。
SBUF=receivedata; //發(fā)送數(shù)據(jù)到SBUF
while(!TI);           //!TI不是0既是1,說明數(shù)據(jù)還沒發(fā)送完。TI不是1,便是0,跳出while函數(shù),說明數(shù)據(jù)發(fā)送完畢。
TI=0; //必須軟件清零


}

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:235772 發(fā)表于 2017-9-27 08:45 | 只看該作者
在串行中斷函數(shù)內(nèi),首先判斷是哪種中斷,然后在進(jìn)行相關(guān)操作。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表