⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 danjianxuexi.txt

📁 单键学习型遥控器程序的设计
💻 TXT
字号:
;*************************
;  单键学习型遥控器
;*************************
;
SPBASE EQU 70H
LEVAL 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
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
            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
CLEARMEN: MOV @R0,A
          INC R0
          DJNZ R1,CLEARMEN
          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
      NOP
      NOP
      LJMP START
;******************
;   T1中断服务程序
;******************
;
INTT1: CPL REMOTEOUT
       RETI
;*********************
;   载波合成
;*********************
;
REMOTETX: MOV R0,#TMPHADDR
          MOV R1,#TMPLADDR
          SETB LAMP
          MOV A,R4
          MOV R3,A
          ZJ 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
TMP1: CLR TR1
      CLR ET1
      CLR REMOTEOUT
      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
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
          AJMP READHEAD
READDATA: CJNE A,DPH,READDATA00
          MOV DPH,A
          MOV DPL,A
          AJMP READHEAD

READDATA00: CLR A
            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
            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
           AJMP READLOOP0

READDATA2: CLR LAMP
           MOV @R1,DPL
           INC R1
           MOV DPL,#READTIME
           MOV DOH,#00H

READLOOP1: JNB REMOTEIN,READDATA3
           INC DPTR
           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
         SETB EX0
         SETB EA
         RETI
;***********************
;   键工作子程序
;***********************
;
KEYWORK: SETB P1.0
         JNB P1.0,KEY0
KEYOUT: RET

KEY0: LCALL DL10MS
      JB P1.0,KEYOUT
      LJMP REMOTETX
;***********************
;   延时程序
;***********************
;
DELAY: MOV R0,#DELAYCONUT0
DELAY1: DJNZ R0,DELAY1
        RET

DL10MS: MOV R1,#DELAYCONUT
DL10MS1: LCALL DELAY
         DJNZ R1,DL10MS1
         RET
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -