外部中斷0服務(wù)程序內(nèi)處理:
/****************************************************************************
函數(shù)功能: 外部中斷0終端服務(wù)初始化函數(shù)
****************************************************************************/
void ispInt0Init(void)
{
IT0 = 1; //低電平觸發(fā),INT0 (P3.2)
EX0 = 1; //使能外部中斷
EA = 1; //開(kāi)總中斷
}
/****************************************************************************
函數(shù)功能: 定時(shí)器0中斷服務(wù)初始化函數(shù)
****************************************************************************/
void ispTime0Init(void)
{
TMOD |= 0x02; //自動(dòng)重新裝載
TL0 = 0xEC; //設(shè)置定時(shí)初值
TH0 = 0xEC;
IE |= 0x82; //EA = 1; ET0 = 1;
PT0 = 1; //優(yōu)先級(jí)
TR0 = 0; //關(guān)閉
}
/****************************************************************************
函數(shù)功能: 外部中斷0中斷服務(wù)函數(shù)
****************************************************************************/
void ispInt0() interrupt 0
{
unsigned char i; //循環(huán)控制變量
unsigned int IR_Val; //用于接收P3^2引腳的數(shù)據(jù)
IR_Val = 0;
EX0 = 0; //關(guān)閉外部中斷0
TR0 = 1; //開(kāi)啟定時(shí)器0
timerCount = 0; //定時(shí)變量清零
//20us*20=400us(1668us/4=417us),判斷第1個(gè)起始位
while(timerCount < 20)
{
if (IR_Receive)
{
TR0 = 0; //關(guān)定時(shí)器
EX0 = 1; //開(kāi)外部中斷
return;
}
}
IR_Val |= ~IR_Receive;
timerCount = 0;
//接收第1個(gè)起始位后的13位數(shù)據(jù)
for(i = 0; i < 13;)
{
if(timerCount > 83) //20us*84=1680us(1688us)
{
IR_Val = IR_Val << 1;
IR_Val = IR_Val | ~IR_Receive;
timerCount = 0;
i++;
}
}
TR0 = 0; //關(guān)定時(shí)器
//IR_Val = ~IR_Val; //接收到的數(shù)據(jù)是發(fā)送數(shù)據(jù)的反碼,取反還原為發(fā)送的數(shù)據(jù)
//起始位 控制位 系統(tǒng)碼 指令碼:11 X 00000 XXXXXX
IR_Start = (unsigned char)((IR_Val & 0x1000) >> 12); //0011 0000 0000 0000 取得第12~13位
IR_Con = (bit)((IR_Val & 0x0800) >> 11); //0000 1000 0000 0000 取得第11位
IR_Sys = (unsigned char)((IR_Val & 0x07c0) >> 6); // IR_Val & 0000 0111 1100 0000 >> 6 = 0000 0111 11取得6~10位
IR_Cmd = (unsigned char)(IR_Val & 0x003f); //0000 0000 0011 1111 取得0~5位
// if(IR_Start == 0x01 && IR_Sys == 0x00)
// {
SAA301T_ok = 1; //接收數(shù)據(jù)有效
// }
// IR_Val = ~IR_Val; //接收數(shù)據(jù)取反還原
// IR_Sys = (unsigned char)((IR_Sys & 0x07c0)>>6); //取得系統(tǒng)碼
// if((IR_Start & 0x1000) && (IR_Sys == 0x00)) //接收數(shù)據(jù)有效
// { //第二個(gè)起始位1 //系統(tǒng)碼00000
// IR_Cmd = (IR_Val & 0x003f); //取得指令碼 0000 0000 0011 1111
// IR_Con = (bit)(IR_Val & 0x0800); //取得控制字 0000 1000 0000 0000
// SAA301T_ok = 1; //置位接收有效標(biāo)志位
// }
while (!IR_Receive); //等待IR_Receive=1
EX0 = 1;
}
/****************************************************************************
函數(shù)功能: 定時(shí)器中斷0中斷服務(wù)函數(shù),時(shí)間控制
****************************************************************************/
void ispTime0() interrupt 1 using 1
{
//1us * 20 = 20us
timerCount++;
}
定時(shí)器中斷服務(wù)程序處理:
/****************************************************************************
函數(shù)功能: 外部中斷0終端服務(wù)初始化函數(shù)
****************************************************************************/
void ispInt0Init(void)
{
IT0 = 0; //低電平觸發(fā),INT0 (P3.2)
EX0 = 1; //使能外部中斷
EA = 1; //開(kāi)總中斷
}
/****************************************************************************
函數(shù)功能: 定時(shí)器0中斷服務(wù)初始化函數(shù)
****************************************************************************/
void ispTime0Init(void)
{
TMOD |= 0x01;//定時(shí)器0工作方式1
TL1 = 0xE0; //設(shè)置定時(shí)初值
TH1 = 0xB0;
EA = 1; //開(kāi)總中斷
ET0 = 1; //開(kāi)定時(shí)器1中斷
TR0 = 0; //定時(shí)器0開(kāi)關(guān)
}
/****************************************************************************
函數(shù)功能: 定時(shí)器1中斷服務(wù)初始化函數(shù)
****************************************************************************/
void ispTime1Init(void)
{
TMOD |= 0x20; //定時(shí)器1工作2 8位重裝定時(shí)計(jì)數(shù)
TL1 = 0xEC; //設(shè)置定時(shí)初值
TH1 = 0xEC;
EA = 1; //開(kāi)總中斷
ET1 = 1; //開(kāi)定時(shí)器1中斷
TR1 = 0; //定時(shí)器1開(kāi)關(guān)
}
/****************************************************************************
函數(shù)功能: 外部中斷0中斷服務(wù)函數(shù)
****************************************************************************/
void ispInt0() interrupt 0
{
EX0 = 0; //關(guān)外部中斷
TR1 = 1; //打開(kāi)定時(shí)器1
time1Count = 0; //定時(shí)器1計(jì)數(shù)值清零
IR_Val = 0;
//20us * 10 = 400 1668 / 4 = 417
while(time1Count < 20) //假信息判斷
{
if(IR_Receive)
{
EX0 = 1;
TR1 = 0;
return;
}
}
TR1 = 0; //關(guān)定時(shí)器1中斷
time1Count = 0;
if(timeCount == 0)
{
TL0 = 0xFF; //設(shè)置定時(shí)初值
TH0 = 0xF9;
TR0 = 1; //開(kāi)定時(shí)器0中斷
IR_Val |= IR_Receive;
}
}
/****************************************************************************
函數(shù)功能: 定時(shí)器中斷0中斷服務(wù)函數(shù),時(shí)間控制
****************************************************************************/
void ispTime0() interrupt 1
{
TL1 = 0xE0; //設(shè)置定時(shí)初值
TH1 = 0xB0;
timeCount++; //定時(shí)器中斷進(jìn)入次數(shù)計(jì)數(shù)
IR_Val <<= 1;
IR_Val |= ~IR_Receive; //接收到的數(shù)據(jù)是發(fā)送數(shù)據(jù)的反碼,取反還原為發(fā)送的數(shù)據(jù)
if(timeCount == 13)
{
TR0 = 0; //關(guān)掉定時(shí)器0
timeCount = 0;
//起始位 控制位 系統(tǒng)碼 指令碼:11 X 00000 XXXXXX
IR_Start = (unsigned char)((IR_Val & 0x3000) >> 12); //0011 0000 0000 0000 取得第12~13位
IR_Con = (bit)(IR_Val & 0x0800); //0000 1000 0000 0000 取得第11位
IR_Sys = (unsigned char)((IR_Val & 0x07c0)>>6); //IR_Val & 0000 0111 1100 0000 >> 6 = 0000 0111 11取得6~10位
IR_Cmd = (unsigned char)(IR_Val & 0x3f); //0000 0000 0011 1111 取得0~5位
if(IR_Start == 0x03 && IR_Sys == 0x00)
{
SAA301T_ok = 1;
IR_Val = 0; //接收數(shù)據(jù)有效
}
while(!IR_Receive);
EX0 = 1; //打開(kāi)外部中斷
}
}
上一篇:對(duì)51系列單片機(jī)SPI總線的認(rèn)識(shí)
下一篇:SAA3010T紅外解碼
推薦閱讀
史海拾趣
成立于2004年的珠海艾派克微電子有限公司,在創(chuàng)業(yè)初期便致力于集成電路芯片設(shè)計(jì)領(lǐng)域的探索。公司憑借著對(duì)CPU設(shè)計(jì)技術(shù)、多核SoC專用芯片設(shè)計(jì)技術(shù)、安全芯片設(shè)計(jì)技術(shù)等核心技術(shù)的深入研究,逐步在行業(yè)內(nèi)積累了良好的口碑。這一時(shí)期,艾派克堅(jiān)持以市場(chǎng)需求為導(dǎo)向,不斷優(yōu)化產(chǎn)品性能,為公司的長(zhǎng)遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
在穩(wěn)固國(guó)內(nèi)市場(chǎng)的同時(shí),福聲科技積極尋求國(guó)際合作機(jī)會(huì),努力拓展海外市場(chǎng)。公司憑借其優(yōu)質(zhì)的產(chǎn)品和服務(wù),成功吸引了日本、韓國(guó)、加拿大、美國(guó)等多個(gè)國(guó)家和地區(qū)的客戶。通過(guò)與國(guó)際知名企業(yè)的合作與交流,福聲科技不僅提升了自身的技術(shù)水平和品牌影響力,還進(jìn)一步拓寬了國(guó)際市場(chǎng)渠道,為公司的全球化戰(zhàn)略奠定了堅(jiān)實(shí)基礎(chǔ)。
自1976年成立以來(lái),ETRI一直致力于打造高效便捷的智慧產(chǎn)業(yè)生態(tài)圈。在汽車制造、軌道交通等行業(yè)中,電氣和機(jī)械設(shè)備是必不可少的。ETRI憑借其卓越的技術(shù)實(shí)力,為這些行業(yè)提供了在各種惡劣環(huán)境下都能保持穩(wěn)定性的產(chǎn)品。無(wú)論是在電機(jī)馬達(dá)、編碼器、傳感器,還是在泵、閥、流量計(jì)以及溫度計(jì)壓力表等廣泛使用的設(shè)備中,ETRI都展現(xiàn)了其行業(yè)領(lǐng)先的解決方案。
2013年,綠索超容在南京江寧區(qū)智能電網(wǎng)產(chǎn)業(yè)園正式成立。公司自創(chuàng)立之初,就明確了“制造中國(guó)可靠性最高的超級(jí)電容”的目標(biāo),以及“引領(lǐng)超容行業(yè),做綠色能源模范”的使命。這一清晰的發(fā)展定位,為綠索超容后續(xù)的技術(shù)創(chuàng)新和市場(chǎng)拓展奠定了堅(jiān)實(shí)的基礎(chǔ)。公司初期雖然面臨資金和技術(shù)挑戰(zhàn),但通過(guò)不懈努力,逐步建立了自己的研發(fā)團(tuán)隊(duì)和生產(chǎn)體系。
東晨(DC)公司深知市場(chǎng)需求的重要性,因此制定了精準(zhǔn)的市場(chǎng)策略。公司通過(guò)深入研究消費(fèi)者需求,不斷推出符合市場(chǎng)趨勢(shì)的新產(chǎn)品。同時(shí),東晨(DC)公司還注重與渠道商的合作,通過(guò)建立穩(wěn)定的銷售渠道,將產(chǎn)品快速推向市場(chǎng)。此外,公司還積極參與各種展會(huì)和論壇,展示最新技術(shù)和產(chǎn)品,贏得了客戶和業(yè)界的廣泛贊譽(yù)。
除了追求經(jīng)濟(jì)效益外,AW Industries Inc還注重履行社會(huì)責(zé)任。公司積極參與環(huán)保事業(yè),通過(guò)采用環(huán)保材料、減少?gòu)U棄物排放等方式降低生產(chǎn)對(duì)環(huán)境的影響。同時(shí),公司還關(guān)注員工福利和社會(huì)公益事業(yè),通過(guò)捐款、資助等方式回饋社會(huì)。這些舉措不僅提升了公司的社會(huì)形象,也為公司的長(zhǎng)期發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
請(qǐng)注意,這些故事是基于電子行業(yè)的一般情況虛構(gòu)的,并不代表任何真實(shí)事件或公司。如果您需要關(guān)于特定公司的真實(shí)發(fā)展故事,建議您查閱相關(guān)資料或訪問(wèn)公司官網(wǎng)以獲取更準(zhǔn)確的信息。
做基于虛擬儀器的測(cè)試系統(tǒng)硬件可以用單片機(jī)實(shí)現(xiàn)嗎? 基于虛擬儀器的電參數(shù)測(cè)量系統(tǒng),下位機(jī)硬件部分用單片機(jī)可以實(shí)現(xiàn)嗎?直接做還是有怎樣?與上位機(jī)有無(wú)關(guān)聯(lián)?… 查看全部問(wèn)答∨ |
溫室智能控制系統(tǒng)畢業(yè)的設(shè)計(jì) 我正在做一個(gè)關(guān)于“溫室智能控制系統(tǒng)的畢業(yè)的設(shè)計(jì)”,控制量(溫度,濕度,光照,co2控制,土壤,水分) 希望大家討論一下,能夠提供些資料和意見(jiàn)。… 查看全部問(wèn)答∨ |
目前,很多電子設(shè)計(jì)工程師和相關(guān)專業(yè)的人員都從事了FPGA的設(shè)計(jì),目前用FPGA做了哪些,或準(zhǔn)備做哪些領(lǐng)域的需求,對(duì)FPGA設(shè)計(jì)有什么需求,想法和思路,工作或?qū)W習(xí)中最迫切的是哪些,通過(guò)交流希望能共同提高,互通有無(wú)。… 查看全部問(wèn)答∨ |
|
請(qǐng)問(wèn)寫(xiě)WDM驅(qū)動(dòng)的開(kāi)發(fā)工具有哪些選擇? 1, 用SourceInsight編輯, 然后ddk命令行直接build 2, 在vs里面編輯,然后用ddk命令行直接build? 那個(gè)更好一些?或者還有其他什么選擇? 誰(shuí)可以詳細(xì)介紹一下這方面的實(shí)際情況?… 查看全部問(wèn)答∨ |
小弟剛裁減好一個(gè)wince,編譯通過(guò),NK.bin文件也生成了,但不知道該如何將生成的文件下載到目標(biāo)板上!我用的是CF卡,是不是可以直接將生成的文件拷到CF卡中,如果是這樣,那需要拷那些文件?還有,需不需要做啟動(dòng)引導(dǎo)程序?如何做?請(qǐng)各位高手,大 ...… 查看全部問(wèn)答∨ |
今天買了一塊sst89e516rd 但是不知道寫(xiě)好監(jiān)控程序了沒(méi) 自己也沒(méi)有這個(gè)芯片下載器和監(jiān)控程序 還有這個(gè)芯片和keil 軟件怎么聯(lián)調(diào)啊 希望個(gè)位大俠指點(diǎn)!… 查看全部問(wèn)答∨ |
|
做一個(gè)msp430+KT0803K的程序,KT0803K是I2C接口,哎,KT0803K的文檔感覺(jué)寫(xiě)得又不好,調(diào)的更疼了 調(diào)了很久的程序,沒(méi)有上拉電阻,現(xiàn)在能往設(shè)備里寫(xiě)數(shù)據(jù)能收到ACK信號(hào)(雖然要等很久才能收到,用硬件仿真器仿的,大概要等個(gè)4、5秒,這不會(huì)是沒(méi)收到AC ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 智能護(hù)眼臺(tái)燈設(shè)計(jì)
- 蓄電池高能脈沖充電系統(tǒng)設(shè)計(jì)
- 基于51單片機(jī)定時(shí)器的電子時(shí)鐘設(shè)計(jì)方案
- 瑞薩電子推出面向單電機(jī)應(yīng)用優(yōu)化的卓越MCU, 涵蓋電動(dòng)工具、家用電器等廣泛應(yīng)用場(chǎng)景
- 地平線陳黎明:中高階智能駕駛拐點(diǎn)已到,將迎來(lái)快速增長(zhǎng)
- 格芯收購(gòu)MIPS:RISC-V技術(shù)路線的新變量
- 消息稱蜂巢能源獲smart電池項(xiàng)目定點(diǎn)
- 極氪9X有哪些豪華混動(dòng)技術(shù)?
- 重磅!電動(dòng)汽車換電新國(guó)標(biāo)發(fā)布!
- 緊跟全球行業(yè)變革浪潮 采埃孚引領(lǐng)汽車底盤(pán)技術(shù)革新
- 英特爾前 CEO 帕特?基辛格再創(chuàng)業(yè):評(píng)估 AI 模型是否符合特定的人類價(jià)值觀
- 汽車動(dòng)力傳動(dòng)機(jī)引擎及機(jī)械/實(shí)體參數(shù)測(cè)試
- 車云一體數(shù)據(jù)閉環(huán)的趨勢(shì)
- 車云一體其他層面的架構(gòu)設(shè)計(jì)借鑒-上
- 全力備戰(zhàn)新iPhone 蘋(píng)果iPhone X或今秋停產(chǎn)
- 被小米超越之后,三星在印度建立全球最大的手機(jī)工廠
- 官微再爆華為nova 3 確定采用麒麟970
- OPPO A3s即將登陸印度市場(chǎng) 搭載驍龍450芯片
- 疑似三星Galaxy Note 9官方渲染圖泄漏:全視曲面屏
- 因芯片短缺加劇 全球汽車預(yù)計(jì)將減產(chǎn)超810萬(wàn)輛
- 2021年中國(guó)機(jī)器人細(xì)分賽道投資分析報(bào)告
- 傳蘋(píng)果VR頭顯已進(jìn)入試產(chǎn)階段 預(yù)計(jì)2022年發(fā)布
- 【8.30-9.5】一周大事件 | 極智嘉賦能世運(yùn)電路實(shí)現(xiàn)PCB柔性生產(chǎn);九號(hào)公司發(fā)布智能割草機(jī)器人
- 日本半導(dǎo)體產(chǎn)業(yè):輝煌不再 優(yōu)勢(shì)仍存
- 基于重復(fù)控制和電壓前饋控制的光伏并網(wǎng)發(fā)電系統(tǒng)研究與設(shè)計(jì)
- Modbus通訊協(xié)議簡(jiǎn)化
- si114x紅外傳感器
- TP4056鋰電池1A專用充電板 充電模塊 鋰電池充電小板
- 急求DSP2000系列的選型建議
- 如何為ADC增加隔離而不損害其性能呢?
- 模擬IC設(shè)計(jì)的難度--獻(xiàn)給初學(xué)者
- 想請(qǐng)教一下大神,這是什么情況
- [【HC32F460開(kāi)發(fā)板測(cè)評(píng)】(第二篇)HC32F460單片機(jī)的三種低功耗模式測(cè)評(píng)
- TI高達(dá)1GHz且豐富的外設(shè)資源的Sitara處理器AM3352