找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5818|回复: 3
打印 上一主题 下一主题
收起左侧

为什么我写的红外解码,8位数码管动态扫描不是同一个值

[复制链接]
楼主
ID:27916 发表于 2011-10-17 14:23 | 只看该作者
程序没有仔细看,但我还说一点我的看法吧,执行外CALL DISPLAY,其实没有必要跳到MAIN出,没有那个必要程序没执行一次都把所有的东西初始化一遍,初始化程序只要在IC上电后执行一次就可以 了
回复

使用道具 举报

沙发
ID:32341 发表于 2011-11-13 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 问题:为什么第一次不是正常的码制,而之后显示正常

ORG  0000H
   JMP  MAIN
   ORG  0003H
   JMP  INT_0
   ORG  000BH
   JMP  TIM_0
   LATCHB EQU P2.2 ;8位数码管锁存口
   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以后为解码存储区
     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以后为数据接收区
       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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

板凳
ID:74784 发表于 2022-8-5 11:56 | 只看该作者
汇编代码没有注释
根本没法看。
回复

使用道具 举报

地板
ID:996773 发表于 2023-12-12 15:52 | 只看该作者
谢谢,复制了,虽然没有注释仔细啃还是能了解作者的思路的,对自己写遥控代码有帮助的,留个脚印以后再来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表