自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
多機紅外通信接收端(匯編程序代碼)
多機紅外通信接收端(匯編程序代碼)
 更新時間:2008-7-26 20:29:42  點擊數(shù):2
【字體: 字體顏色

/***************************************************************+
*文件名: Receive.asm
*版權(quán):  www.zlgmcu.com
*日期:  16:27 04-3-16
*功能:  多機紅外通信接收端程序代碼
****************************************************************/
$NOMOD51
$INCLUDE (REG932.INC)

INFR  EQU P0.4   ;定義紅外接收端口
MOTOR_CONTROL EQU P0.5   ;定義外部設(shè)備控制端口

HEADFLAG BIT 0x10   ;定義幀頭出錯標志
BITFLAG  BIT 0x11   ;定義位出錯標志
DATA1  DATA 0x30   ;定義DATA1全局變量
DATA2  DATA 0x31   ;定義DATA2全局變量
;-------------------------------------
 ORG 0000H
 AJMP MAIN
 ORG 003BH
 AJMP KEY_ISR
;-------------------------------------
 ORG 0080H
MAIN:
 MOV P0M1,#0x00   ;定義P0口模式
 MOV P0M2,#0x00

 ACALL KEYISR_INIT   ;調(diào)用按鍵中斷初始化程序
 ACALL DELAY100US
LOOP:
 ACALL POWER_DOWN   ;調(diào)用完全掉電程序
 AJMP LOOP
 RET
;-------------------------------------
;功能:鍵盤中斷初始化
;-------------------------------------
KEYISR_INIT:
 MOV KBMASK,#0x10   ;P04鍵盤中斷
 MOV KBCON,#0x00   ;清鍵盤中斷標志位
 SETB EKBI    ;鍵盤中斷使能
 SETB EA    ;開中斷
 RET
;-------------------------------------
;功能:完全掉電
;-------------------------------------
POWER_DOWN:
 MOV PCONA,#0xFF   ;功能模塊掉電
 MOV PCON,#0x03   ;進入完全掉電狀態(tài)
 RET
;-------------------------------------
;功能:幀校驗
;-------------------------------------
READHEAD:
 MOV A,#4    
 ACALL DELAY_N00US   ;延時400us
 JNB INFR,SKIP1   ;INFR為0,跳至SKIP1
 SETB HEADFLAG   ;INFR為1,置幀錯誤標志
SKIP1:
 ACALL DELAY100US   ;延時100us
 JNB INFR,SKIP2   ;再次讀INFR,并對其進行判斷,其為0,跳
 SETB HEADFLAG   ;為1,置幀錯誤標志
SKIP2:
 MOV A,#5
 ACALL DELAY_N00US   ;延時500us

 MOV A,#4
 ACALL DELAY_N00US   ;延時400us
 JB INFR,SKIP3   ;INFR為1,跳至SKIP3
 SETB HEADFLAG   ;INFR為0,置幀錯誤標志
SKIP3:
 ACALL DELAY100US   ;延時100us
 JB INFR,SKIP4   ;再次讀INFR,并對其進行判斷,其為1,跳
 SETB HEADFLAG   ;為0,置幀錯誤標志
SKIP4:
 MOV A,#5
 ACALL DELAY_N00US 
 
 MOV A,#4    
 ACALL DELAY_N00US   ;延時400us
 JNB INFR,SKIP5   ;INFR為0,跳至SKIP5
 SETB HEADFLAG   ;INFR為1,置幀錯誤標志
SKIP5:
 ACALL DELAY100US   ;延時100us
 JNB INFR,SKIP6   ;再次讀INFR,并對其進行判斷,其為0,跳
 SETB HEADFLAG   ;為1,置幀錯誤標志
SKIP6:
 MOV A,#5
 ACALL DELAY_N00US   ;延時500us
 RET
;-------------------------------------
;功能:從紅外線傳送的數(shù)據(jù)上讀取1字節(jié)
;出口參數(shù):A
;-------------------------------------
READBYTE:
 CLR A    ;將A清0
 MOV R7,#8    ;定義循環(huán)次數(shù)8
READBYTE_START: 
 ACALL DELAY100US   ;延時100US
 JB INFR,BIT1   ;讀INFR,為1,則跳至BIT1
BIT0: ANL A,#0xEF    ;為0,清最高位為0
 JMP READBIT_OVER 
BIT1: ORL A,#0x80    ;為1,置最高位為1
READBIT_OVER:
 RL A    ;左移1位
 
 MOV R4,A    ;保存A
 MOV A,#4
 ACALL DELAY_N00US   ;延時400us
 MOV A,R4    ;還原A
 DJNZ R7,READBYTE_START  
 RET
;-------------------------------------
;功能:讀取接收到的紅外數(shù)據(jù)
;出口參數(shù):DATA1,DATA2
;-------------------------------------
READDATA:
 ACALL READBYTE   ;讀取一字節(jié)
 MOV DATA1,A    ;存入DATA1
 ACALL READBYTE   ;讀取一字節(jié)
 MOV DATA2,A    ;存如DATA2
 RET
;-------------------------------------
;功能:延時100US
;注:在7.373Mhz情況下
;-------------------------------------
DELAY100US:
 MOV R7,#182
LOOP1:
 DJNZ R7,LOOP1 
 RET
;-------------------------------------
;功能:延時N x 100us,
;入口參數(shù):A
;-------------------------------------
DELAY_N00US:
 MOV R5,A
LOOP_N00US:
 ACALL DELAY100US
 DJNZ R5,LOOP_N00US
 RET
;-------------------------------------
;功能:MS級延時
;入口參數(shù):A
;-------------------------------------
DELAYMS:
 MOV R3,A
LOOPMS1:
 MOV R4,#10
LOOPMS2:
 ACALL DELAY100US
 DJNZ R4,LOOPMS2
 DJNZ R3,LOOPMS1
 RET
;-------------------------------------
;功能:鍵盤中斷服務(wù)程序
;-------------------------------------
KEY_ISR:
 CLR EA    ;關(guān)中斷
 MOV PCONA,#0x00   ;外部功能模塊上電
 JNB INFR,$    ;讀取INFR,等待其為1,
 MOV A,#5
 ACALL DELAYMS    ;延時5ms
 
 JB INFR,$    ;等待INFr為0
 ACALL READHEAD   ;幀頭校驗
 ACALL READDATA   ;讀數(shù)據(jù)
 
 MOV A,DATA1    
 CJNE A,#0x01,NONE_CONTROL  ;判斷數(shù)據(jù),
 SETB MOTOR_CONTROL   ;為1,則開外部設(shè)備(燈)
 /*
 MOV A,DATA2
 CJNE A,#0x02,NONE_CONTROL  ;判斷數(shù)據(jù),
 SETB MOTOR_CONTROL   ;為2,則開外部設(shè)備(燈)
 */
NONE_CONTROL:
 
 MOV KBCON,#0x00   ;清鍵盤中斷標志
 SETB EA    ;開中斷
 RETI
;-------------------------------------
 END
;-------------------------------------

  • 上一篇: 多機紅外通信發(fā)送端(C程序代碼)
  • 下一篇: 多機紅外通信接收端(C程序代碼)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1