男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

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

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

KEY1 EQU P0.0   ;定義KEY1鍵
KEY2 EQU P0.1   ;定義KEY2鍵
INFR EQU P0.3   ;定義紅外發送引腳

PLLEN BIT TCR20.7
;------------------------------
 ORG 0000H   
 AJMP MAIN
 ORG 003BH
 AJMP KEY_ISR
;------------------------------
 ORG 0080H
MAIN:
 MOV P0M1,#0x00  ;定義P0口屬性
 MOV P0M2,#0x00
 MOV P2M1,#0x40  ;定義P2.6(OCA)口屬性
 MOV P2M2,#0x40
 
 ACALL CCU_INIT  ;CCU初始化
 ACALL KEYISR_INIT  ;鍵盤中斷初始化
LOOP: 
 ACALL POWER_DOWN  ;完全掉電
 AJMP LOOP
 RET
;-------------------------------
;功能:CCU初始化
;-------------------------------
CCU_INIT:
 MOV TOR2H,#0x02  ;CCU定時器重裝值
 MOV TOR2L,#0x05
 MOV OCRAH,#0x01  ;(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比為50%
 MOV OCRAL,#0x02
 MOV TCR21,#0x85  ;PLL預分頻為5+1
 MOV CCCRA,#0x01  ;非反相的PWM在比較匹配時置位,在CCU定時器向下溢出時清0
 
 SETB PLLEN   ;啟動PLL
 SETB OCA
 JNB PLLEN,$
 MOV TCR20,#0x82  ;設置輸出模式,非反相PWM
 RET
;--------------------------------
;功能:鍵盤中斷初始化
;--------------------------------
KEYISR_INIT:
 MOV KBMASK,#0x03  ;設置P01->P00為中斷源
 MOV KBCON,#0x00  ;清除鍵盤中斷標志
 SETB EKBI   ;鍵盤中斷允許
 SETB EA   ;開中斷
 RET
;--------------------------------
;功能:完全掉電
;--------------------------------
POWER_DOWN:
 MOV PCONA,#0xFF  ;外部模塊掉電
 MOV PCON,#0x03  ;進入完全掉電模式
 RET
;--------------------------------
;功能:按鍵判斷程序
;--------------------------------
READ_KEY:
 MOV A,#12   
 ACALL DELAYMS   ;延時12MS
 JNB KEY1,KEY1_DOWN  ;判斷KEY1是否按下
 JNB KEY2,KEY2_DOWN  ;判斷KEY2是否按下
 JMP NOKEY_DOWN  
KEY1_DOWN:    ;KEY1按下 
 JNB KEY1,$   ;等待KEY1為1
 ACALL START_DEVICE01  ;發送啟動設備1(燈)的指令
 JMP NOKEY_DOWN  
KEY2_DOWN:    ;KEY2按下
 JNB KEY2,$   ;等待KEY2為1
 ACALL START_DEVICE02  ;發送啟動設備2(門/窗)的指令
 JMP NOKEY_DOWN
NOKEY_DOWN:
 RET
;--------------------------------
;功能:啟動外部設備1
;--------------------------------
START_DEVICE01:    
 ACALL SEND_HEAD  ;發送幀頭
 MOV A,#0x01
 ACALL SEND_DATA  ;發送數據 
 RET
;--------------------------------
START_DEVICE02:
 ACALL SEND_HEAD  ;發送幀頭
 MOV A,#0x02
 ACALL SEND_DATA  ;發送數據
 RET
;--------------------------------
;功能:發送幀頭
;--------------------------------
SEND_HEAD:
 CLR INFR   ;拉低INFR
 MOV A,#50
 ACALL DELAYMS   ;延時50ms
 SETB INFR   ;拉高INFR
 MOV A,#10  
 ACALL DELAYMS   ;延時10ms
 
 CLR INFR   ;拉低INFR
 MOV A,#1 
 ACALL DELAYMS   ;延時1ms
 SETB INFR   ;拉高INFR
 MOV A,#1
 ACALL DELAYMS   ;延時1ms
 CLR INFR   ;拉低INFR
 MOV A,#1 
 ACALL DELAYMS   ;延時1ms
 RET
;--------------------------------
;功能:通過紅外載波發送數據
;入口參數:R6
;--------------------------------
SEND_DATA:
 MOV R7,#8   ;循環次數
START_SEND:
 MOV A,R6
 RLC A   ;將最高位移入A
 JC BIT1   ;當C為1時,跳至BIT1
 JMP BIT0   ;跳至BIT0
BIT1:
 SETB INFR   ;INFR置高
 AJMP SENDBIT
BIT0:
 CLR INFR   ;INFR置0
 MOV R6,A   ;將A保存進R6
SENDBIT:
 ACALL DELAY400US  ;延時400us
 DJNZ R7,START_SEND
 RET
;---------------------------------
;功能:延時100us(7.373MHz時)
;---------------------------------
DELAY100US:
 MOV R5,#182
LOOP1:
 DJNZ R5,LOOP1
 RET
;---------------------------------
;功能:延時400us
;---------------------------------
DELAY400US:
 MOV R3,#4
LOOP4: 
 ACALL DELAY100US
 DJNZ R3,LOOP4
 RET
;---------------------------------
;功能:ms級延時
;入口參數:A
;---------------------------------
DELAYMS:
 MOV R3,A
LOOP_N: 
 MOV R2,#10
LOOP10:
 ACALL DELAY100US
 DJNZ R2,LOOP10
 DJNZ R3,LOOP_N
 RET
;---------------------------------
;功能:鍵盤中斷服務程序
;---------------------------------
KEY_ISR:
 CLR EA   ;關中斷
 MOV PCONA,#0x00  ;外部功能模塊上電
 ACALL CCU_INIT  ;CCU初始化
 
 MOV A,#10
 ACALL DELAYMS   ;延時10ms
 ACALL READ_KEY  ;調用判斷按鍵子程序
 MOV KBCON,#0x00  ;清中斷標志位
 MOV A,#50  
 ACALL DELAYMS   ;延時50ms
 SETB EA   ;開中斷
 RETI
;--------------------------------
 END
;--------------------------------

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

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

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 合江县| 宁城县| 昆山市| 库伦旗| 墨江| 徐闻县| 盐源县| 鹤峰县| 青川县| 措美县| 汶川县| 永新县| 阳原县| 霍州市| 华安县| 高平市| 武强县| 辉南县| 柳河县| 信丰县| 崇州市| 苗栗县| 金乡县| 石阡县| 增城市| 祁门县| 维西| 清丰县| 永新县| 肇源县| 安平县| 阿荣旗| 丹东市| 克拉玛依市| 泗水县| 孝昌县| 思南县| 沐川县| 广昌县| 岢岚县| 天长市|