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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1851|回復: 0
打印 上一主題 下一主題
收起左側

STC15F104EA紅外遙控解碼記憶開關匯編語言程序范例 附原理圖

[復制鏈接]
跳轉到指定樓層
樓主
基于12T 51內核的紅外解碼匯編程序,移植到1T STC單片機上,需要修改頻率來達到比較精確的延時

紅外遙控解碼記憶開關接線圖:


單片機紅外遙控解碼記憶開關匯編語言源程序如下:
  1. ;;;;;;紅外遙控解碼記憶;;;;;開機同時,按住按鍵直到蜂鳴器叫一次再松開,按遙控器認定按鈕,待蜂鳴器叫一次后,完成解碼記憶
  2. ;;;;RC頻率30M,分頻系數1/16,采用15F104EA   ;;2015-4-16;;
  3. IAP_DATA    EQU 0C2H                ;IAP數據寄存器
  4. IAP_ADDRH   EQU 0C3H                ;IAP地址寄存器高字
  5. IAP_ADDRL   EQU 0C4H                ;IAP地址寄存器低字
  6. IAP_CMD     EQU 0C5H                ;IAP命令寄存器
  7. IAP_TRIG    EQU 0C6H                ;IAP命令觸發寄存器
  8. IAP_CONTR   EQU 0C7H                ;IAP控制寄存器
  9. CMD_IDLE    EQU 0                   ;空閑模式
  10. CMD_READ    EQU 1                   ;IAP字節讀命令
  11. CMD_PROGRAM EQU 2                   ;IAP字節編程命令
  12. CMD_ERASE   EQU 3                   ;IAP扇區擦除命令
  13. ENABLE_IAP  EQU 83H                  ;if SYSCLK<12MHz
  14. IAP_ADDRESS EQU 0000H               ;測試地址(15L204EA的EEPROM空間為1K,分兩個扇區,每個512字節)
  15. CLK_DIV     DATA    97H             ;RC頻率30M,分頻系數1/16,采用15F104EA
  16. ID          DATA    30H             ;燈組個數狀態值
  17. HONG        DATA    31H             ;紅外數據緩存區
  18. ANJIAN      BIT     26H.0           ;按鍵選擇標志
  19. FENG        BIT     P3.3           ;蜂鳴器
  20. KEY         BIT     P3.0            ;解碼記憶選擇開關
  21. PH          BIT     P3.4            ;紅外一體化接受頭
  22. SW          BIT     P3.5
  23.        ORG         0000H
  24.        AJMP        MAIN1
  25.        ORG         0040H
  26. MAIN1: MOV      CLK_DIV,#1        ;分頻設置
  27.        MOV   ID,#00H
  28.        MOV   P3,#0FFH
  29.        SETB  ANJIAN
  30.        JB    KEY,START1            ;按鍵判斷
  31.        MOV   R7,#50
  32. D4:    ACALL  YS3
  33.        DJNZ   R7,D4
  34.        JB     KEY,START1
  35.        CLR    FENG                 ;聲音延時
  36.        MOV   R7,#50
  37. D5:    ACALL  YS3
  38.        DJNZ   R7,D5
  39.        SETB   FENG
  40.        CLR    ANJIAN
  41. START1:MOV   DPTR,#IAP_ADDRESS     ;讀取EEPOM紅外數據到緩存區  ;設置ISP/IAP/EEPROM地址
  42.        LCALL IAP_READ                                          ;讀IAP數據
  43.        MOV   31H,A
  44. START:JB PH,$                       ;等待遙控信號出現
  45. SB:MOV R4,#8                 
  46. SBA:MOV R5,#250
  47. SBB:JB PH,SXB1
  48. DJNZ R5,SBB
  49. DJNZ R4,SBA
  50. MOV R4,#2
  51. JMP SBC
  52. SXB1: MOV R5,#5
  53. SXB2: JNB PH,SBB
  54. DJNZ R5,SXB2
  55. JMP EXIT
  56. SBC:MOV R5,#250
  57. SB1:JB PH,SB2                     ;2MS內不為高電平錯誤
  58. DJNZ R5,SB1
  59. DJNZ R4,SBC
  60. JMP EXIT
  61. SB2: MOV R5,#5
  62. SB2_A:JNB PH,SB1
  63. DJNZ R5,SB2_A
  64. MOV R4,#3
  65. SB2_1:MOV R5,#250
  66. SB3: JNB PH,SXC
  67. DJNZ R5,SB3
  68. DJNZ R4,SB2_1
  69. MOV R4,#2
  70. JMP SB3_1
  71. SXC:MOV R5,#5
  72. SXC1:JB PH,SB3
  73. DJNZ R5,SXC1
  74. JMP EXIT
  75. SB3_1:MOV R5,#250
  76. SB3_2:JNB PH,SB4
  77. DJNZ R5,SB3_2
  78. DJNZ R4,SB3_1
  79. JMP EXIT
  80. SB4: MOV R5,#5
  81. SB4_1:JB PH,SB3_2
  82. DJNZ R5,SB4_1
  83. MOV R1,#1AH                   ;設定1AH為起始RAM區
  84. MOV R2,#4
  85. PP: MOV R3,#8
  86. JJJJ:MOV R5,#250
  87. JJJJ2:JB PH,JJJJ3
  88. DJNZ R5,JJJJ2
  89. JMP EXIT
  90. JJJJ3:LCALL YS1
  91. MOV C,PH
  92. JNC UUU
  93. MOV R5,#250
  94. JJJJ4:JNB PH,UUU
  95. NOP
  96. DJNZ R5,JJJJ4
  97. JMP EXIT
  98. UUU: MOV A,@R1                 ;將R1中地址的給A
  99. RRC A                          ;將C中的值移入A中的最低位
  100. MOV @R1,A                      ;將A中的數暫存在R1中
  101. DJNZ R3,JJJJ                   ;接收地址碼的高8位
  102. INC R1                         ;對R1加1,換成下一個RAM
  103. DJNZ R2,PP                     ;以下對代碼是否正確和定義進行識別
  104. MOV A,1AH                      ;比較高8位地址碼
  105. XRL A,#00000000B               ;判斷1AH的值是否等于00000000,相等的話A為0
  106. JNZ EXIT                       ;如果不等解碼失敗退出
  107. MOV A,1BH                      ;比較低8位地址
  108. XRL A,#11111111B               ;再判高8位地址是否正確
  109. JNZ EXIT                       ;如果不相等說明解碼失敗退出
  110. LCALL YS3
  111. MOV A,1CH                      ;比較數據碼和數據反碼是否正確?
  112. CPL A
  113. XRL A,1DH                      ;將1CH的值取反后和1DH比較 不同則無效丟棄,核對數據是否準確
  114. JNZ EXIT                       ;如果不相等說明解碼失敗退出
  115.        JB ANJIAN,MAIN2
  116.        MOV   DPTR,#IAP_ADDRESS         ;設置ISP/IAP/EEPROM地址
  117.        LCALL IAP_ERASE                 ;扇區擦除
  118.        MOV   A,1CH
  119.        MOV   DPTR,#IAP_ADDRESS         ;設置ISP/IAP/EEPROM地址
  120.        LCALL IAP_PROGRAM               ;字節編程
  121.        CLR    FENG                     ;紅外數據寫入成功蜂鳴器叫一次指示
  122.        MOV   R7,#50
  123. D6:    ACALL  YS3
  124.        DJNZ   R7,D6
  125.        SETB   FENG
  126.        SETB   ANJIAN
  127.        MOV    31H,1CH                  ;;;寫入成功,建議關機重啟
  128. EXIT:   AJMP   START   
  129. MAIN2: MOV   A,31H
  130.        CJNE  A,1CH,EXIT               ;;;判斷紅外遙控次數決定遙控燈組個數;;;;
  131.        CPL   SW
  132.        LJMP  START

  133. IAP_IDLE:                           ;;;關閉IAP;;;
  134.     MOV   IAP_CONTR,#0              ;關閉IAP功能
  135.     MOV   IAP_CMD,#0                ;清除命令寄存器
  136.     MOV   IAP_TRIG,#0               ;清除觸發寄存器
  137.     MOV   IAP_ADDRH,#80H            ;將地址設置到非IAP區域
  138.     MOV   IAP_ADDRL,#0
  139.     RET

  140. IAP_READ:                           ;;;從ISP/IAP/EEPROM區域讀取一字節;;;
  141.     MOV   IAP_CONTR,#ENABLE_IAP     ;使能IAP
  142.     MOV   IAP_CMD,#CMD_READ         ;設置IAP命令
  143.     MOV   IAP_ADDRL,DPL             ;設置IAP低地址
  144.     MOV   IAP_ADDRH,DPH             ;設置IAP高地址
  145.     MOV   IAP_TRIG,#5AH             ;寫觸發命令(0x5a)
  146.     MOV   IAP_TRIG,#0A5H            ;寫觸發命令(0xa5)
  147.     NOP                             ;等待ISP/IAP/EEPROM操作完成
  148.     MOV   A,IAP_DATA                ;讀IAP數據
  149.     LCALL IAP_IDLE                  ;關閉IAP功能
  150.     RET

  151. IAP_PROGRAM:                       ;;;寫一字節數據到ISP/IAP/EEPROM區域;;;
  152.     MOV   IAP_CONTR,#ENABLE_IAP    ;使能IAP
  153.     MOV   IAP_CMD,#CMD_PROGRAM     ;設置IAP命令
  154.     MOV   IAP_ADDRL,DPL            ;設置IAP低地址
  155.     MOV   IAP_ADDRH,DPH            ;設置IAP高地址
  156.     MOV   IAP_DATA,A               ;寫IAP數據
  157.     MOV   IAP_TRIG,#5AH            ;寫觸發命令(0x5a)
  158.     MOV   IAP_TRIG,#0A5H           ;寫觸發命令(0xa5)
  159.     NOP                            ;等待ISP/IAP/EEPROM操作完成
  160.     LCALL IAP_IDLE                 ;關閉IAP功能
  161.     RET

  162. IAP_ERASE:                         ;;;扇區擦除;;;
  163.     MOV   IAP_CONTR,#ENABLE_IAP    ;使能IAP
  164.     MOV   IAP_CMD,#CMD_ERASE       ;設置IAP命令
  165.     MOV   IAP_ADDRL,DPL            ;設置IAP低地址
  166.     MOV   IAP_ADDRH,DPH            ;設置IAP高地址
  167.     MOV   IAP_TRIG,#5AH            ;寫觸發命令(0x5a)
  168.     MOV   IAP_TRIG,#0A5H           ;寫觸發命令(0xa5)
  169.     NOP                            ;等待ISP/IAP/EEPROM操作完成
  170.     LCALL IAP_IDLE                 ;關閉IAP功能
  171.     RET

  172. YS1: MOV R4,#20 ;延時子程序1, 882微秒
  173. D1: MOV R5,#20
  174. DJNZ R5,$
  175. DJNZ R4,D1
  176. RET

  177. YS3: MOV R4,#2 ;延時程序3, 1000微秒
  178. D3:MOV R5,#248
  179. DJNZ R5,$
  180. DJNZ R4,D3
  181. RET
  182. END
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天插天天操 | 久久精品一级 | 日韩欧美国产精品一区二区三区 | 欧美日韩国产精品一区二区 | 91精品在线播放 | 日韩一区二区三区在线看 | 精品美女视频在线观看免费软件 | 国产欧美精品区一区二区三区 | 精品乱码一区二区 | 99精品欧美一区二区三区综合在线 | 伦理二区| 国产精品久久久久久影视 | 操久久久| 国产精品99久久久久久久久 | 龙珠z在线观看 | 一区二区高清在线观看 | 欧洲国产精品视频 | 久久性| 亚洲精品一二区 | 伊人激情综合网 | 日韩精品一区二区三区第95 | 中文字幕精品一区 | 日本亚洲一区 | www免费视频| 国产精品久久久一区二区三区 | 久久精品小视频 | 日本福利片 | 日韩一区二区av | 国产精品成人在线播放 | 欧美乱码精品一区二区三区 | 国产精品一区二区在线 | 免费成人高清 | 天天干天天想 | 精品视频一区二区 | 在线日韩视频 | 日韩中文字幕网 | 成人不卡视频 | 99久久99| 91色视频在线观看 | 夜夜爽99久久国产综合精品女不卡 | 国产精品久久久久久久三级 |