注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! 打开购物车 查看留言付款方式联系我们
初中电子 单片机教材一 单片机教材二
搜索上次看见的商品或文章:
商品名、介绍 文章名、内容
首页 电子入门 学单片机 免费资源 下载中心 商品列表 象棋在线 在线绘图 加盟五一 加入收藏 设为首页
本站推荐:
单键学习型遥控器
文章长度[14517] 加入时间[2007/2/8] 更新时间[2024/4/28 10:25:06] 级别[0] [评论] [收藏]
 
单键遥控码学习控制器电路原理图
      ;**********************************************************************
        ;*                                                                   *
      ;*           KEYX0  P1.0  * 1             40 *  VCC                   *
      ;*           KEYX1  P1.1  * 2             39 *  P0.0  KEYY0           *
      ;*           KEYX2  P1.2  * 3             38 *  P0.1  KEYY1           *
      ;*           KEYX3  P1.3  * 4             37 *  P0.2  KEYY2           *
      ;*           SCL    P1.4  * 5             36 *  P0.3  KEYY3           *
      ;*           SDA    P1.5  * 6             35 *  P0.4  KEYY4           *
      ;*       STUDYLAMP  P1.6  * 7             34 *  P0.5  KEYY5           *
      ;*            LAMP  P1.7  * 8             33 *  P0.6  KEYY6           *
      ;*                  RST   * 9             32 *  P0.7  KEYY7           *
      ;*            RXD   P3.0  * 10   MCS-51   31 *  EA    VDD             *
      ;*            TXD   P3.1  * 11            30 *  ALE                   *
      ;*   STUDYKEY INT0  P3.2  * 12            29 *  PSEN                  *
      ;*            INT1  P3.3  * 13            28 *  P2.7  A15  DEV7       *
      ;*   REMOTEIN  T0   P3.4  * 14            27 *  P2.6  A14  DEV6       *
      ;*   REMOTEOUT T1   P3.5  * 15            26 *  P2.5  A13  DEV5       *
      ;*            WR    P3.6  * 16            25 *  P2.4  A12  DEV4       *
      ;*            RD    P3.7  * 17            24 *  P2.3  A11  DEV3       *
      ;*                 XTAL2  * 18            23 *  P2.2  A10  DEV2       *
      ;*                 XTAL1  * 19            22 *  P2.1  A9   DEV1       *
      ;*                   VSS  * 20            21 *  P2.0  A8   DEV0       *
      ;*                                                                    *
      ;**********************************************************************
      ;
      ;
              SPBASE          EQU     70H ;堆栈基址
              IEVAL           EQU     00H     ;关所有中断
              MEMBASE         EQU     08H ;工作寄存器基址
              MEMS            EQU     67H ;工作寄存器个数
      ;
      ;
              BITNMB          EQU     08H ;一个字节包含八个位
      ;
              KEYFUNFLAG      EQU     80H     ; 键功能索引
              KEYFUNNMB       EQU     81H     ;键功能号
              KEYFUNRW        EQU     82H     ;遥控信号读写标志
              READFLAG        EQU     88H     ;读标记
              WITERFLAG       EQU     99H     ;写标记
      ;
              TMPHADDR        EQU     08H     ;读入高电平存放首址
              TMPLADDR        EQU     90H     ;读入低电平存放首址
              READTIME        EQU     00H     ;读入数据指令时间
      ;       LOWH            EQU     R4      ;起始位存放高地址
      ;       LOWL            EQU     R5      ;起始位存放低地址
              STUDYLAMP       EQU     P1.6    ;学习指示灯
              LAMP            EQU     P1.7    ;未定义指示灯
              STUDYKEY        EQU     P3.2    ;学习键
      ;
              REMOTEIN        EQU     P3.4    ;遥控输入
              REMOTEOUT       EQU     P3.5    ;遥控输出
              DELAYCONUT      EQU     30H     ;延时值
              DELAYCONUT0     EQU     0FFH    ;延时值
              T1COUNT         EQU     0F3H    ;T1计数值
              TMODVAL         EQU     22H
              TCONVAL         EQU     41H
              PCONVAL         EQU     00H
              T2CONVAL        EQU     00H
              SCONVAL         EQU     0F8H
              IPVAL           EQU     01H
      ;
      ;
      ;*************************************
      ;*                                   *
      ;*      主程序和中断程序入口         *
      ;*                                   *
      ;*************************************
              ORG     0000H
              AJMP    START
              ORG     0003H
              AJMP    INTEX0
              ORG     000BH
              RETI
              ORG     0013H
              RETI
              ORG     001BH
              AJMP    INTT1
              ORG     0023H
              RETI
              ORG     002BH
              RETI
      ;
      ;*************************************
      ;*                                   *
      ;*       初始化程序中的各变量        *
      ;*                                   *
      ;*************************************
      CLEARMEMIO:     CLR A
              DEC     A
              MOV     P0,A        ;清 I/O 口
              MOV     P3,A
              MOV     P1,A
              CLR     A
              MOV     P2,A
              CLR     STUDYLAMP
              CLR     LAMP
              CLR     REMOTEOUT
              SETB    REMOTEIN
              MOV     R0,#MEMBASE ;清工作寄存器
              MOV     R1,#MEMS
      CLEARMEM:       MOV     @R0,A
              INC     R0
              DJNZ    R1,CLEARMEM
              MOV     R0,#KEYFUNRW
              MOV     @R0,#READFLAG
              MOV     SP,#SPBASE  ;设堆栈基址
              MOV     IE,#IEVAL       ;关所有中断
              MOV     IP,#IPVAL
              MOV     TMOD,#TMODVAL
              MOV     PCON,#PCONVAL
              MOV     SCON,#SCONVAL
              MOV     TH1,#T1COUNT
              MOV     TL1,#T1COUNT
              SETB    EX0
                      SETB    EA
                      RET
      ;
      ;*************************************
      ;*                                   *
      ;*      主程序                       *
      ;*                                   *
      ;*************************************
      START:          LCALL   CLEARMEMIO      ;初始化
      ;
      MAIN:           LCALL   KEYWORK         ;主体程序
                      LJMP    MAIN
                      NOP         ;PC值出错处理
                      NOP
                      NOP
                      LJMP    START
      ;
      ;*************************************
      ;*                                   *
      ;*        T1中断服务程序             *
      ;*                                   *
      ;*************************************
      INTT1:          CPL     REMOTEOUT        ;40kHZ
                      RETI
      ;
      ;*************************************
      ;*                                   *
      ;*              载波合成             *
      ;*                                   *
      ;*************************************
      REMOTETX:       MOV     R0,#TMPHADDR
                      MOV     R1,#TMPLADDR
                      SETB     LAMP
       ;              CPL     STUDYLAMP
                      MOV     A,R4
                      MOV     R3,A
                      JZ  LOWBACK
                      CLR A
                      DEC A
      LOWBACKTMP:     MOV     R2,A            ;起始位复原
      LOWBACKTMP0:    SETB    TR1
              SETB    ET1
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      DJNZ    R2,LOWBACKTMP0
                      DJNZ    R3,LOWBACKTMP
      LOWBACK:        MOV     A,R5
                      MOV     R2,A
      LOWBACKTMP1:    SETB    TR1
                      SETB    ET1
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      DJNZ    R2,LOWBACKTMP1
      ;
      TMP0:           MOV     A,@R0           ;高电平处理
                      MOV     R2,A
      ;               CPL     LAMP
      TMP1:           CLR     TR1
                      CLR     ET1
                      CLR     REMOTEOUT     ;
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      DJNZ    R2,TMP1
                      INC     R0
      TMPP:           MOV     A,@R1
                      MOV     R2,A
       ;              CPL     LAMP
      TMP2:           SETB    TR1              ;低电平处理
                      SETB    ET1
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      DJNZ    R2,TMP2
                      INC     R1
                      MOV     A,@R1
                      JZ      OUT
                      AJMP    TMP0
      OUT:            CLR     TR1
                      CLR     ET1
                      CLR     LAMP
                      CLR     REMOTEOUT
                      RET
      ;
      ;*************************************
      ;*     遥控数据读取 INT0中断程序     *
      ;*     高电平存TMPHADDR为首址RAM     *
      ;*     低电平存TMPLADDR为首址RAM     *
      ;*************************************
      INTEX0:         CLR     ET1
                      CLR     TR1
                      CLR     EX0
                      CLR     EA
                      SETB    STUDYLAMP
                      CLR     LAMP
                      MOV     R0,#TMPHADDR
                      MOV     R1,#TMPLADDR
                      CLR     A
                      MOV     DPH,A
                      MOV     DPL,A
      READHEAD:       JNB     REMOTEIN,READDATA   ;寻找起始位
                      INC     DPTR
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      AJMP    READHEAD
      ;
      READDATA:       CJNE    A,DPH,READDATA00
                      MOV     DPH,A
                      AJMP    READHEAD
      ;
      READDATA00:     MOV     R3,DPH
                      MOV     DPH,A
                      MOV     DPL,A
      READLOOP01:     JB      REMOTEIN,READDATA02     ;读起始位
                      INC     DPTR
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      AJMP    READLOOP01
      ;
      READDATA02:     CLR     LAMP
                      MOV     R4,DPH
                      MOV     R5,DPL                ;存起始位
                      MOV     DPH,#00H
                      MOV     DPL,#READTIME
                      AJMP    READLOOP1
      ;
      READDATA1:      SETB    LAMP                    ;存高电平
                      MOV     @R0,DPL
                      INC     R0
                      MOV     DPL,#READTIME
                      MOV     DPH,#00H
      READLOOP0:      JB      REMOTEIN,READDATA2      ;读低电平
                      INC     DPTR
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      AJMP    READLOOP0
      ;
      READDATA2:      CLR     LAMP                    ;存低电平
                      MOV     @R1,DPL
                      INC     R1
                      MOV     DPL,#READTIME
                      MOV     DPH,#00H
      READLOOP1:      JNB     REMOTEIN,READDATA3      ;读高电平
                      INC     DPTR           
              NOP
                      NOP
                      NOP
              NOP
              NOP
              NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      NOP
                      AJMP    READLOOP1
      ;
      READDATA3:      CLR     A
                      CJNE    A,DPH,READDATA4
                      AJMP    READDATA1
      ;
      READDATA4:      MOV     @R0,A
                      MOV     @R1,A
      ;
                      SETB    LAMP
                      CLR     STUDYLAMP
                      SETB    REMOTEIN
      READEND:        JNB     STUDYKEY,READEND
                      MOV     R0,#KEYFUNRW
                      MOV     @R0,#WITERFLAG
                      SETB    EX0
                      SETB    EA
                      RETI
      ;
      ;*************************************
      ;*                                   *
      ;*          键工作子程序             *
      ;*                               *
      ;*************************************
      KEYWORK:        SETB   P1.0
                      JNB    P1.0,KEY0
      KEYOUT:         RET
      ;
      KEY0:           LCALL   DL10MS           ;延时去抖动
                      JB      P1.0,KEYOUT
                      LJMP    REMOTETX
      ;
      ;*************************************
      ;*                                   *
      ;*      延时 255 X 2 = 512 us       *
      ;*                                   *
      ;*************************************
      DELAY:          MOV     R0,#DELAYCONUT0
      DELAY1:         DJNZ    R0,DELAY1
                      RET
      ;
      ;*************************************
      ;*                                   *
      ;*             延时25 ms             *
      ;*                                   *
      ;*************************************
      DL10MS:         MOV     R1,#DELAYCONUT
      DL10MS1:        LCALL   DELAY
                      DJNZ    R1,DL10MS1
              RET
      ;
      ;
              END

1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。
2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! 以上可能是本站收集或者转载的文章,本站可能没有文章中的元件或产品,如果您需要类似的商品请 点这里查看商品列表!
本站协议 | 版权信息 |  关于我们 |  本站地图 |  营业执照 |  发票说明 |  付款方式 |  联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102
E-mail:51dz$163.com($改为@);Tel:(0755)27947428
工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389