欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機紅外NEC解碼匯編有兩個結果?

[復制鏈接]
跳轉到指定樓層
樓主
ID:521383 發表于 2020-3-13 23:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
測試的時候發現有兩個結果 一個是正確的解碼了 一個是錯誤的解碼 然后錯誤的解碼好像少接收了兩位 不知道哪里出錯了 應該不是因為干擾 我沒有弄驗證數據的 因為我用別人的程序的時候 感覺沒有任何出錯 每次都是解碼成功 我的這個錯誤的解碼得到的結果也是反碼補碼是對的上的 錯誤的和正確的差兩位 比如一個是00000000(正確的)  一個是00000011(錯誤的)  都是少偏移了兩位一樣

單片機源程序如下:
  1. ORG 000H
  2. MOV TMOD,#20H
  3. MOV TH1,#0FDH
  4. MOV TL1,#0FDH
  5. SETB TR1
  6. MOV SCON,#01000000B
  7. MAIN:
  8. JB P3.2,$;等待遙控信號出現
  9. MOV R6,#8
  10. SB: ACALL YS1 ;調用888微秒延時子程序
  11. JB P3.2,MAIN ;延時888微秒后判斷P3.2腳是否出現高電平如果有就退出解碼程序
  12. DJNZ R6, SB;重復10次,目的是檢測在8880微秒內如果出現高電平就退出解碼程序
  13. ;以上完成對遙控信號的9000微秒的初始低電平信號的識別。
  14. JNB P3.2, $ ;等待高電平避開9毫秒低電平引導脈沖
  15. JB P3.2,$;等待高電平的引導碼過去
  16. ;CALL YS2 ;延時4.74毫秒避開4.5毫秒的結果碼
  17. MOV R1,#24H ;設定24H為起始RAM區
  18. MOV R2,#4
  19. PP: MOV R3,#8
  20. JJJJ:JNB P3.2,$;等待地址碼第一位的高電平信號
  21. ACALL YS3 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態
  22. MOV C,P3.2 ;將P3.2引腳此時的電平狀態0或1存入C中
  23. JNC  UUU;如果為0就跳轉到UUU
  24. JB P3.2,$;如果為1就等待高電平信號結束
  25. UUU: MOV A,@R1 ;將R1中地址的給A
  26. RRC A;將C中的值0或1移入A中的最低位
  27. MOV @R1,A ;將A中的數暫時存放在R1中
  28. DJNZ R3,JJJJ;接收地址碼的高8位
  29. INC R1;對R1中的值加1,換成下一個RAM
  30. DJNZ R2,PP ;接收完16位地址碼和8位數據碼和8位數據反碼,存放在24H/25H/26H/27H的RAM中
  31. CPL P1.1
  32. LCALL SEND3
  33. JMP MAIN

  34. YS1: MOV R4,#20 ;
  35. D1: MOV R5,#19 ;
  36. DJNZ R5,$;
  37. DJNZ R4,D1;
  38. RET;延時888us左右

  39. YS3: MOV R4,#35 ;
  40. D3: MOV R5,#10 ;
  41. DJNZ R5,$;
  42. DJNZ R4,D3;
  43. RET;一共846.9us

  44. YS2: MOV R4,#17 ;
  45. D2: MOV R5,#125;
  46. DJNZ R5,$;
  47. DJNZ R4,D2;
  48. RET;大概921us

  49. SEND3:
  50. MOV A,26H
  51. MOV SBUF,A
  52. JNB TI,$
  53. CLR TI
  54. RET

  55. END
復制代碼


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

使用道具 舉報

沙發
ID:235200 發表于 2020-3-14 01:06 | 只看該作者
程序中下列兩句需仔細去測量時間
ACALL YS3 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態
MOV C,P3.2 ;將P3.2引腳此時的電平狀態0或1存入C中
回復

使用道具 舉報

板凳
ID:401564 發表于 2020-3-14 08:42 | 只看該作者
紅外接收最好使用中斷,而你的代碼是直接在中斷向量地址那進行,雖然中斷沒有打開,但我不知道會有什么不同,一般都不這么干的
你單片機的具體型號是什么?延時是否對應得上?

ORG 0H
LJMP MAIN
ORG 003H
LJMP INT0_ISR  ;這是紅外接收程序
ORG 100H
MAIN



INT0_ISR:

;紅外接收在這里進行
RETI
回復

使用道具 舉報

地板
ID:521383 發表于 2020-3-14 15:03 | 只看該作者
csmyldl 發表于 2020-3-14 01:06
程序中下列兩句需仔細去測量時間
ACALL YS3 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態 ...

振晶是11.0592MHZ 時間上應該是對的上的吧 YS3大概是873.425us左右 應該用873.425延時應該是可以判斷的吧 會不會出現時間的疊加 然后就錯誤了 可是有時候解碼成功 有時解碼有誤差 前面多接收了兩位 然后后面少接收了兩位 造成了誤差 但是不知道為啥這樣
回復

使用道具 舉報

5#
ID:521383 發表于 2020-3-14 15:04 | 只看該作者
Y_G_G 發表于 2020-3-14 08:42
紅外接收最好使用中斷,而你的代碼是直接在中斷向量地址那進行,雖然中斷沒有打開,但我不知道會有什么不同,一 ...

好的 我試一下不在那個地址寫一下看看  當時沒想那么多
回復

使用道具 舉報

6#
ID:401564 發表于 2020-3-14 15:28 | 只看該作者
qcw729 發表于 2020-3-14 15:04
好的 我試一下不在那個地址寫一下看看  當時沒想那么多

我不知道你用的單片機型號是什么,不能確定延時對不對
你可以去STC下載器那,那有現成的延時程序,自己不用計算,套用就可以了
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表