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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復制鏈接]
跳轉到指定樓層
樓主
ID:1009425 發(fā)表于 2023-1-4 16:23 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
基于12T 51內(nèi)核的紅外解碼匯編程序,移植到1T STC單片機上,需要修改頻率來達到比較精確的延時

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


單片機紅外遙控解碼記憶開關匯編語言源程序如下:
  1. ;;;;;;紅外遙控解碼記憶;;;;;開機同時,按住按鍵直到蜂鳴器叫一次再松開,按遙控器認定按鈕,待蜂鳴器叫一次后,完成解碼記憶
  2. ;;;;RC頻率30M,分頻系數(shù)1/16,采用15F104EA   ;;2015-4-16;;
  3. IAP_DATA    EQU 0C2H                ;IAP數(shù)據(jù)寄存器
  4. IAP_ADDRH   EQU 0C3H                ;IAP地址寄存器高字
  5. IAP_ADDRL   EQU 0C4H                ;IAP地址寄存器低字
  6. IAP_CMD     EQU 0C5H                ;IAP命令寄存器
  7. IAP_TRIG    EQU 0C6H                ;IAP命令觸發(fā)寄存器
  8. IAP_CONTR   EQU 0C7H                ;IAP控制寄存器
  9. CMD_IDLE    EQU 0                   ;空閑模式
  10. CMD_READ    EQU 1                   ;IAP字節(jié)讀命令
  11. CMD_PROGRAM EQU 2                   ;IAP字節(jié)編程命令
  12. CMD_ERASE   EQU 3                   ;IAP扇區(qū)擦除命令
  13. ENABLE_IAP  EQU 83H                  ;if SYSCLK<12MHz
  14. IAP_ADDRESS EQU 0000H               ;測試地址(15L204EA的EEPROM空間為1K,分兩個扇區(qū),每個512字節(jié))
  15. CLK_DIV     DATA    97H             ;RC頻率30M,分頻系數(shù)1/16,采用15F104EA
  16. ID          DATA    30H             ;燈組個數(shù)狀態(tài)值
  17. HONG        DATA    31H             ;紅外數(shù)據(jù)緩存區(qū)
  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紅外數(shù)據(jù)到緩存區(qū)  ;設置ISP/IAP/EEPROM地址
  42.        LCALL IAP_READ                                          ;讀IAP數(shù)據(jù)
  43.        MOV   31H,A
  44. START:JB PH,$                       ;等待遙控信號出現(xiàn)
  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內(nèi)不為高電平錯誤
  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區(qū)
  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中的數(shù)暫存在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                      ;比較數(shù)據(jù)碼和數(shù)據(jù)反碼是否正確?
  112. CPL A
  113. XRL A,1DH                      ;將1CH的值取反后和1DH比較 不同則無效丟棄,核對數(shù)據(jù)是否準確
  114. JNZ EXIT                       ;如果不相等說明解碼失敗退出
  115.        JB ANJIAN,MAIN2
  116.        MOV   DPTR,#IAP_ADDRESS         ;設置ISP/IAP/EEPROM地址
  117.        LCALL IAP_ERASE                 ;扇區(qū)擦除
  118.        MOV   A,1CH
  119.        MOV   DPTR,#IAP_ADDRESS         ;設置ISP/IAP/EEPROM地址
  120.        LCALL IAP_PROGRAM               ;字節(jié)編程
  121.        CLR    FENG                     ;紅外數(shù)據(jù)寫入成功蜂鳴器叫一次指示
  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               ;;;判斷紅外遙控次數(shù)決定遙控燈組個數(shù);;;;
  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               ;清除觸發(fā)寄存器
  137.     MOV   IAP_ADDRH,#80H            ;將地址設置到非IAP區(qū)域
  138.     MOV   IAP_ADDRL,#0
  139.     RET

  140. IAP_READ:                           ;;;從ISP/IAP/EEPROM區(qū)域讀取一字節(jié);;;
  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             ;寫觸發(fā)命令(0x5a)
  146.     MOV   IAP_TRIG,#0A5H            ;寫觸發(fā)命令(0xa5)
  147.     NOP                             ;等待ISP/IAP/EEPROM操作完成
  148.     MOV   A,IAP_DATA                ;讀IAP數(shù)據(jù)
  149.     LCALL IAP_IDLE                  ;關閉IAP功能
  150.     RET

  151. IAP_PROGRAM:                       ;;;寫一字節(jié)數(shù)據(jù)到ISP/IAP/EEPROM區(qū)域;;;
  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數(shù)據(jù)
  157.     MOV   IAP_TRIG,#5AH            ;寫觸發(fā)命令(0x5a)
  158.     MOV   IAP_TRIG,#0A5H           ;寫觸發(fā)命令(0xa5)
  159.     NOP                            ;等待ISP/IAP/EEPROM操作完成
  160.     LCALL IAP_IDLE                 ;關閉IAP功能
  161.     RET

  162. IAP_ERASE:                         ;;;扇區(qū)擦除;;;
  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            ;寫觸發(fā)命令(0x5a)
  168.     MOV   IAP_TRIG,#0A5H           ;寫觸發(fā)命令(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
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美精品一区二区色综合朱莉 | 日本在线小视频 | 干干干操操操 | 欧美一区免费在线观看 | 99在线免费视频 | 一区视频 | 国产伊人精品 | 成人福利视频网站 | 成人av在线播放 | 日本超碰 | 国产精品区二区三区日本 | 91精品国产综合久久福利软件 | 国产丝袜一区二区三区免费视频 | 久草视 | 69热视频在线观看 | 黄色免费av | 黄免费看 | 狠狠干影院 | 久久综合九九 | 久久国产精品免费一区二区三区 | 国产区精品 | 在线不卡| 国产成人精品午夜视频免费 | 干一干操一操 | 91精品国产一区二区三区 | 日本精a在线观看 | 天堂综合网久久 | 免费视频99 | 欧美久久久久 | 精品九九 | www.久草| 午夜资源 | 激情欧美一区二区三区中文字幕 | 中文字幕日韩一区 | 欧美专区在线 | 蜜桃视频在线观看www社区 | 国产专区在线 | 国产一区二区在线播放视频 | 欧美黑人体内she精在线观看 | av网站在线看 | 美女视频网站久久 |