久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機紅外遙控解碼ASM匯編程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:216499 發(fā)表于 2017-7-2 14:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
51系列單片機做的紅外遙控解碼


單片機匯編語言源程序如下:
  1. /**紅外遙控解碼范例**/
  2. /**作者:田開坤**/
  3. /**較網(wǎng)上可以下載到的程序相比,本代碼考慮了解碼過程容易死機的問題,采取辦法解決了,可以解碼失敗,但決不死機**/

  4. DQ      equ     0ebh            ;P4.3定義接口,參考STC89C51數(shù)據(jù)手冊
  5. EX2     equ     0c2h            ;外部中斷2,參考STC89C51數(shù)據(jù)手冊
  6. SEG1    equ     0ffech          ;數(shù)碼管1(最右)
  7. SEG2    equ     0ffedh          ;數(shù)碼管2
  8. SEG3    equ     0ffeeh          ;數(shù)碼管3
  9. SEG4    equ     0ffefh          ;數(shù)碼管4(最左)
  10. BYT_DLY equ     5FH             ;延時函數(shù)參數(shù)變量
  11. DA_BUF  equ     40H             ;解碼出的數(shù)據(jù)緩沖區(qū),包括41H


  12.                 ORG 0000h
  13.                 LJMP main

  14.                 ORG 003bh       ;外部中斷2入口地址,參考STC89C51數(shù)據(jù)手冊
  15.                 LJMP EINT3

  16.                 ORG 40h
  17. main:           MOV SP,#60h
  18.                 SETB EA
  19.                 SETB EX2
  20.                 SJMP [        DISCUZ_CODE_1        ]nbsp;         ;原地踏步,等中斷解碼


  21. //中斷接收解碼模塊

  22. EINT3:          CLR EA//關(guān)閉
  23.                 MOV R6,#10
  24. SB:             MOV BYT_DLY,#13 ;834uS
  25.                 ACALL DELAY     ;調(diào)用834微秒延時子程序
  26.                 JB DQ,EXIT      ;延時834微秒后判斷DQ腳是否出現(xiàn)高電平如果有就退出解碼程序
  27.                 DJNZ R6, SB     ;重復(fù) 10 次,目的是檢測在 9000 微秒內(nèi)如果出現(xiàn)高電平就退出解碼程序
  28. ;-------------------------------;以上完成對遙控信號 起始碼 的 9000 微秒的初始低電平信號的識別!!!!!

  29.                 JNB DQ, [        DISCUZ_CODE_1        ]nbsp;      ;等待,避開 起始碼 低電平
  30.                 JB DQ,[        DISCUZ_CODE_1        ]nbsp;        ;避開結(jié)果碼


  31. /*;測試按鍵一次有多少位低電平,不同遙控器不一樣*/
  32. /*;電工電子中心投影遙控器只有32位,這對后邊程序參數(shù)設(shè)置關(guān)系重大
  33.                 CLR A
  34. ADDLOOP:        JNB DQ,$
  35.                 ADD A,#1
  36.                 MOV P1,A
  37.                 JB DQ,cADD
  38.                 sjmp $
  39. */

  40.                 MOV R7,#16      ;忽略前16位系統(tǒng)識別碼 (即地址碼)
  41. AAQQ:           JNB DQ,[        DISCUZ_CODE_1        ]nbsp;       ;通過低電平段
  42.                 ;JB DQ,[        DISCUZ_CODE_1        ]nbsp;       ;以下6行代碼可以用本行替換,但這樣容易出現(xiàn)死機。
  43.                 MOV R6,#255
  44. CTN2:           JNB DQ,DER7     ;等待有效低電平到來,避開 結(jié)果碼 高電平
  45.                 MOV BYT_DLY,#3  ;42uS
  46.                 ACALL DELAY     ;調(diào)用42微秒延時子程序,延時太短,計數(shù)器R6不夠大,延時太長,會錯過最佳檢測點
  47.                 DJNZ R6,CTN2                     
  48.                 LJMP EXIT       ;防止死機
  49. DER7:           DJNZ R7,AAQQ

  50.                 MOV R1,#DA_BUF  ;設(shè)定1AH為起始RAM區(qū)
  51.                 MOV R2,#2       ;接收從DA_BUF到DA_BUF+1的2個內(nèi)存,用于存放操作碼 (即數(shù)據(jù)碼) 和操作反碼
  52. PP:             MOV R3,#8       ;每組數(shù)據(jù)為8位
  53. JJJJ:           JNB DQ,[        DISCUZ_CODE_1        ]nbsp;       ;等待通過數(shù)據(jù)碼的低電平信號,等高電平到來后出去;
  54.                 MOV BYT_DLY,#13 ;834uS
  55.                 ACALL DELAY     ;高電平開始后用840(560<t<1125,)微秒的時間尺去判斷信號此時的高低電平狀態(tài)
  56.                 MOV C,DQ        ;將DQ引腳此時的電平狀態(tài)0或1存入C中
  57.                 JNC UUU         ;如果為0就跳轉(zhuǎn)到UUU
  58.                 ;JB DQ,[        DISCUZ_CODE_1        ]nbsp;       ;以下6行代碼可以用本行替換,但這樣容易出現(xiàn)死機。
  59.                 MOV R6,#255
  60. CTN3:           JNB DQ,UUU      ;等待有效低電平到來,避開 結(jié)果碼 高電平
  61.                 MOV BYT_DLY,#3  ;42uS
  62.                 ACALL DELAY     ;調(diào)用840微秒延時子程序
  63.                 DJNZ R6,CTN3            
  64.                 LJMP EXIT       ;防止死機

  65. UUU:            MOV A,@R1       ;將R1中地址的給A
  66.                 RRC A           ;將C中的值0或1移入A中的最低位
  67.                 MOV @R1,A       ;將A中的數(shù)暫時存放在R1數(shù)值的內(nèi)存中
  68.                 DJNZ R3,JJJJ    ;接收滿8位換一個內(nèi)存

  69.                 INC R1          ;對R1中的值加1,換下一個RAM
  70.                 DJNZ R2,PP      ;接收完8位數(shù)據(jù)碼和8位數(shù)據(jù)反碼,存放在1AH/1BH中                          

  71.                 MOV A,DA_BUF
  72.                 CPL A           ;對1AH取反后和1BH比較
  73.                 CJNE A,DA_BUF+1,EXIT    ;如果不等表示接收數(shù)據(jù)發(fā)生錯誤,放棄
  74.                                 
  75.                 MOV R7,DA_BUF   ;將按鍵的鍵值通過數(shù)碼管顯示出來!
  76.                 ACALL DISP
  77.                 CLR P1.0        ;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功               
  78.                 MOV BYT_DLY,#50
  79.                 ACALL DELAY
  80.                 SETB P1.0       ;蜂鳴器停止
  81. EXIT:           SETB EA
  82.                 reti


  83. ;-------------------------延時子程序---------------------------------
  84. ;晶振22.1184M

  85. DELAY:          PUSH    BYT_DLY
  86. DEL31:          PUSH    BYT_DLY
  87. DEL32:          DJNZ    BYT_DLY,DEL32
  88.                 POP     BYT_DLY
  89.                 DJNZ    BYT_DLY,DEL31
  90.                 POP     BYT_DLY
  91.                 DJNZ    BYT_DLY,DELAY
  92.                 RET

  93. //數(shù)碼管顯示,數(shù)據(jù)由R7傳入
  94. DISP:           mov dptr,#ledmap
  95.                 mov a,r7
  96.                 anl a,#0fh
  97.                 movc a,@a+dptr
  98.                 mov dptr,#SEG1
  99.                 cpl a
  100.                 movx @dptr,a

  101.                 mov dptr,#ledmap
  102.                 mov a,r7
  103.                 swap a                                 
  104.                 anl a,#0fh
  105.                 movc a,@a+dptr
  106.                 mov dptr,#SEG2
  107.                 cpl a
  108.                 movx @dptr,a

  109.                 mov dptr,#SEG3
  110.                 mov a,#0ffh
  111.                 movx @dptr,a
  112.                 mov dptr,#SEG4         
  113.                 movx @dptr,a  
  114.                 ret

  115. ledmap: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h,00

  116.                 END
復(fù)制代碼

所有資料51hei提供下載:
紅外遙控解碼ASM.7z (12.52 KB, 下載次數(shù): 32)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久婷婷av | 91精品国产91久久久久久最新 | 一区二区三区精品在线视频 | 国产精品久久久久久久久久久久 | 亚洲精品免费在线 | 亚洲综合在线视频 | 久久亚洲综合 | 色狠狠一区 | 久久人人网 | 日本三级做a全过程在线观看 | 免费九九视频 | 久久久av | 国产一区二区三区在线 | 国产精品久久久久久久久 | 亚洲免费网| 久久宗合色| 91国在线观看 | 国产精品欧美一区二区三区 | 精品国产乱码久久久久久闺蜜 | 成人国产精品久久 | 亚洲成人精品视频 | 91高清视频在线观看 | 少妇av片 | 日韩精品一区二区三区视频播放 | 日韩久久久久久久 | 成人午夜视频在线观看 | 久久久妇女国产精品影视 | 亚洲精品在线看 | 天天操天天操 | 性视频网 | 91在线视频精品 | 成人福利网 | 日韩久久成人 | 香蕉国产在线视频 | 红桃成人在线 | 国产成人艳妇aa视频在线 | 毛片高清 | 91久久国产综合久久 | 视频在线一区二区 | 九九热在线免费视频 | 国产精品有限公司 |