找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

為什么我寫的紅外解碼,8位數(shù)碼管動(dòng)態(tài)掃描不是同一個(gè)值

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:32341 發(fā)表于 2011-11-13 11:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

 問(wèn)題:為什么第一次不是正常的碼制,而之后顯示正常

ORG  0000H
   JMP  MAIN
   ORG  0003H
   JMP  INT_0
   ORG  000BH
   JMP  TIM_0
   LATCHB EQU P2.2 ;8位數(shù)碼管鎖存口
   LATCHA EQU P2.3
   RECEIVEOK EQU 20H.0
   REDATEOK EQU  20H.1
   DTTMP  EQU    70H ;TEMP
   PRTMP  EQU   71H
   CONS32  EQU   72H
   
MAIN:
   CALL  INITIAL
   CALL  INITIME0
   CALL  INIINT0
   MAILP:
   JNB RECEIVEOK,MAILP
   CLR   RECEIVEOK
   CLR   REDATEOK
   CALL  PROCESS
   CALL  DISPLAY 
   JMP   MAIN

    
INITIAL: ; INITIAL
   CLR RECEIVEOK
   CLR REDATEOK
   MOV R7,#00H
   MOV DTTMP,#30H
   MOV PRTMP,#50H
   MOV CONS32,#32
   RET

INITIME0: ;TIME0 INITIAL
   MOV  TMOD,#02H
   MOV  TL0,#00H
   MOV  TH0,#00H
   SETB  ET0
   SETB  EA
   RET
INIINT0:  ;INT0 INITIAL
   SETB  IT0
   SETB  EX0
   SETB  EA
   SETB  PX0
   RET
PROCESS:
   CLR EX0
   MOV R0,#30H
   MOV R3,#8
PROLP2:
   MOV R2,#4
   CLR A
 PROLP0:
   CJNE @R0,#7,CMP
     SETB C
     RRC A
     JMP PROLP1
   CMP:
     JC ZERO
     CPL C
     RRC A
     JMP PROLP1
    ZERO:
     CPL C
     RRC A
    PROLP1:
     INC R0
     DJNZ R2,PROLP0
     SWAP A
     MOV R1,PRTMP ; 開辟50H以后為解碼存儲(chǔ)區(qū)
     MOV @R1,A
     INC R1
     MOV PRTMP,R1
     DJNZ R3,PROLP2
     SETB EX0
     RET
DISPLAY:
     MOV R3,#0FFH
     CLR EX0
     DISDL0:
     MOV R1,#11111110B
     MOV R0,#50H
     MOV R2,#8
     DISLP0:
     MOV A,@R0
     INC R0
     MOV DPTR,#TAB
     MOVC A,@A+DPTR
     MOV  P0,A
     SETB LATCHB
     CLR  LATCHB
     MOV A,R1
     MOV P0,A
     SETB LATCHA
     CLR  LATCHA
     RL  A
     MOV  R1,A
     CALL DELAY
     DJNZ R2,DISLP0
    
    DISDL:
     MOV R5,#100
     DJNZ R5,$
     DJNZ R3,DISDL0
     SETB EX0
     RET
DELAY:

MOV R4,#2
MOV R5,#2
DELLP1:
  MOV R6,#2
  DJNZ R6,$
  DJNZ R5,DELLP1
  DJNZ R4,DELLP1
RET

       

TIM_0:
   INC R7
   RETI
INT_0:
   SETB TR0
   JB REDATEOK,REDATE
    CJNE R7,#30,CHOOSE
     CHOOSE:
      JC INTEXIT0
      ;CJNE R7,#200,CHOOSE1
     ; CHOOSE1:
      ; JNC INTEXIT0
        SETB REDATEOK
  JMP INTEXIT1
    REDATE:
       MOV R0,DTTMP ;開辟30H以后為數(shù)據(jù)接收區(qū)
       MOV A,R7
       MOV @R0,A
       INC R0
       MOV DTTMP,R0
       DJNZ CONS32,INTEXIT1
       SETB RECEIVEOK
       CLR TR0
 INTEXIT1:
      MOV R7,#00H
      RETI
   INTEXIT0:
      RETI
   
 TAB:
  DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
  DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H 
 END
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:27916 發(fā)表于 2011-10-17 14:23 | 只看該作者
程序沒(méi)有仔細(xì)看,但我還說(shuō)一點(diǎn)我的看法吧,執(zhí)行外CALL DISPLAY,其實(shí)沒(méi)有必要跳到MAIN出,沒(méi)有那個(gè)必要程序沒(méi)執(zhí)行一次都把所有的東西初始化一遍,初始化程序只要在IC上電后執(zhí)行一次就可以 了
回復(fù)

使用道具 舉報(bào)

板凳
ID:74784 發(fā)表于 2022-8-5 11:56 | 只看該作者
匯編代碼沒(méi)有注釋
根本沒(méi)法看。
回復(fù)

使用道具 舉報(bào)

地板
ID:996773 發(fā)表于 2023-12-12 15:52 | 只看該作者
謝謝,復(fù)制了,雖然沒(méi)有注釋仔細(xì)啃還是能了解作者的思路的,對(duì)自己寫遙控代碼有幫助的,留個(gè)腳印以后再來(lái)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表