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

📄 程序.asm

📁 这是一个弹片机控制的数字调频系统,能发射不同的频段.
💻 ASM
字号:

                  ;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ; 数字调频发射器完整程序 ;
                  ;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;26H-29H存放小数位、个位、十位、百位BCD码,24H-25H存放频率控制数据(十六进制)。
 ;70H-74H存放时间秒和分。
 ;21H存放频率控制字节低8位,22H存放高8位。
 ;23H存放键扫描时P1口的值。                                       





      CONBITL EQU 21H
      CONBITH EQU 22H
      KEYWORD EQU 23H

      ORG  0000H
      LJMP START
      ORG  000BH
      LJMP INTT0
      ORG  0020H
;;;;;;;;;;;;;;;;;;;;;
;    主程序         ;
;;;;;;;;;;;;;;;;;;;;;
START: MOV SP,#60H
       LCALL CLEARMEN
 MAIN: JNB P3.6,MAIN1
       JNB P3.7,MAIN2
       AJMP MAIN
       NOP
       NOP
       AJMP START

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 初始化程序,清存储器单元和置4端口出入状态 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLEARMEN: MOV  R0,#20H
          MOV  R1,#0AH
CLEALOOP: MOV  @R0,#00H
          INC  R0
          DJNZ R1,CLEALOOP
          MOV  R0,#70H
          MOV  R7,#04H
     ML1: MOV  @R0,#00H
          INC  R0
          DJNZ R7,ML1
          MOV  P0,#0FFH
          MOV  P1,#0FFH
          MOV  P2,#0FFH
          MOV  P3,#0FFH
          RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  p3.6按下,显示调频数字,初始显示“0880” ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 MAIN1:  CLR  P3.0
         CLR  P3.1
         CLR  P3.2
         LCALL KEYFUN15
         MOV  PCON,#00H
         MOV  29H,#00H
         MOV  28H,#08H
         MOV  27H,#08H
         MOV  26H,#00H
         LCALL DISPUPDAT
         LCALL  KEYWORD
         LCALL  DISPLAYD
         AJMP   MAIN1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 当P3.7按下时,显示时钟分和秒;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    MAINT:
            MOV  TMOD ,#01H
            MOV  TL0,#0B0H
            MOV  TH0,#3CH
            SETB  EA
            SETB  ET0
            SETB  TR0
            MOV   R4,#14H
      ML3:  LCALL DIAPLAYT
            SJMP  ML3
            RET

    MAIN2:  LCALL DEL10MS
            JB P3.7,OUT
            LCALL MAINT
      OUT:  RET
;中断服务子程序
    INTT0:  PUSH  ACC
            PUSH  PSW
            SETB  PSW.3
            MOV   TL0,#0BH
            MOV   TH0,#3CH
            MOV   A,R4
            DEC   A
            JNZ   RET0
            MOV   R4,#14H
            MOV   R0,#71H
            ACALL DAAD
            MOV   A,R2
            XRL   A,#60H
            JNZ   RET0
            ACALL CLR0
            MOV   R0,#73H
            ACALL DAAD
            MOV   A,R2
            XRL   A,#60H
            JNZ   RET0
            ACALL CLR0
     RET0:  POP   PSW
            POP   ACC
            RETI
;加一子程序
      DAAD: MOV   A,@R0
            DEC   R0
            SWAP  A
            ORL   A,@R0
            ADD   A,#01H
            DA    A
            MOV   R2,A
            ANL   A,#0FH
            MOV   @R0,A
            MOV   A,R2
            INC   R0
            ANL   A,#0F0H
            SWAP  A
            MOV   @R0,A
            RET

     CLR0:  CLR   A
            MOV   @R0,A
            DEC   R0
            MOV   @R0,A
            RET

  DIAPLAYT: MOV   R1,#70H
            MOV   R5,#0FEH
            MOV   A,R5
            ANL   A,#0FH
     PLAY:  MOV   A,R5
            MOV   P2,A
            MOV   A,@R0
            MOV   DPTR,#TAB1
            MOVC  A,@A+DPTR
            MOV   P0,A
            LCALL DEL1MS
            INC   R1
            MOV   A,R5
            JNB   ACC.3,ENDOUT
            RL    A
            MOV   R5,A
            AJMP  PLAY
   ENDOUT:  SETB  P2.3
            MOV   P0,#0FFH
            RET
     TAB1:  DB    0C0H,0F9H,0A4H,0B0H,99H
            DB    92H,82H,0F8H,80H,90H,0FFH


;;;;;;;;;;;;;;;;;
;数字调频显示   ;
;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;  1、4*4行列扫描查键程序  ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   KEYWORK: MOV  P1,#0FFH
            CLR  P1.0
            MOV  A,P1
            ANL  A,#0F0H
            CJNE A,#0F0H,KEYCON
            SETB P1.0
            CLR  P1.1
            MOV  A,P1
            ANL  A,#0F0H
            CJNE A,#0F0H,KEYCON
            SETB P1.1
            CLR  P1.2
            MOV  A,P1
            ANL  A,#0F0H
            CJNE A,#0F0H,KEYCON
            SETB P1.2
            CLR  P1.3
            MOV  A,P1
            ANL  A,#0F0H
            CJNE A,#0F0H,KEYCON
            SETB P1.3
            RET
    KEYCON: LCALL DEL10MS
            MOV  A,P1
            ANL  A,#0FFH
            CJNE A,#0F0H,KEYCHE
    KEYOUT: RET
    KEYCHE: MOV A,P1
            MOV KEYWORD,A
    CJLOOP: LCALL DISPLAYD
            MOV A,P1
            ANL A,#0F0H
            CJNE A,#0F0H,CJLOOP
            MOV  R7,#00H
            MOV  DPTR,#KEYTAB
   KEYLOOP: MOV A,R7
            MOVC A,@A+DPTR
            XRL A, KEYWORD
            JZ  KEYOK
            INC R7
            CJNE R7,#10H,KEYLOOP
            RET
     KEYOK: MOV A,R7
            MOV B,A
            RL  A
            ADD A,B
            MOV DPTR,#KEYFUNTAB
            JMP @A+DPTR
 KEYFUNTAB: LJMP   KEYFUN00
            LJMP   KEYFUN01
            LJMP   KEYFUN02
            LJMP   KEYFUN03
            LJMP   KEYFUN04
            LJMP   KEYFUN05
            LJMP   KEYFUN06
            LJMP   KEYFUN07
            LJMP   KEYFUN08
            LJMP   KEYFUN09
            LJMP   KEYFUN10
            LJMP   KEYFUN11
            LJMP   KEYFUN12
            LJMP   KEYFUN13
            LJMP   KEYFUN14
            LJMP   KEYFUN15
            RET
    KEYTAB:
            DB  0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH
            DB  0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,0FFH,0FFH

;;;;;;;;;;;;;;;;;;;;;;;;;
; 2、各个按键功能子程序 ;
;;;;;;;;;;;;;;;;;;;;;;;;;

 ;00号键功能程序
  KEYFUN00: INC  29H
            MOV  A,29H
            CLR  C
            CJNE A,#02H,FUN00
     FUN00: JC  FUN00OUT
            MOV  29H,#00H
  FUN00OUT: MOV  A,#29H
            XRL  A,#01H
            JNZ  F00OUT1
            MOV  28H,#00H
            AJMP F00OUT
   F00OUT1: MOV  28H,#08H
    F00OUT: LCALL DISPUPDAT
            RET
  ;01号键功能程序
  KEYFUN01: INC  28H
            MOV  A,28H
            CLR  C
            CJNE A,#0AH,FUN01
     FUN01: JC   FUN01OUT
            MOV  28H,#00H
  FUN01OUT: MOV  A,29H
            XRL  A,#01H
            JNZ  F01OUT
            MOV  28H,#00H
            AJMP F001OUT
    F01OUT: MOV  A,28H
            XRL  A,#08H
            JZ   F001OUT
            MOV  A,28H
            XRL  A,#09H
            JZ   F001OUT
            MOV  28H,#08H
   F001OUT: LCALL DISPUPDAT
            RET
  ;02号键功能程序
  KEYFUN02: INC  27H
            MOV  A,27H
            CLR  C
            CJNE A,#0AH,FUN02
    FUN02:  JC   FUN02OUT
            MOV  27H,#00H
 FUN02OUT:  LCALL DISPUPDAT
            RET
  ;03号键功能程序
  KEYFUN03: INC  26H
            MOV  A,26H
            CLR  C
            CJNE A,#0AH,FUN03
     FUN03: JC   FUN03OUT
            MOV  26H,#00H
  FUN03OUT: LCALL DISPUPDAT
            RET
 ;04号键功能程序(109.0MHZ频率预置)
  KEYFUN04: MOV  29H,#01H
            MOV  28H,#00H
            MOV  27H,#09H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;05号键功能程序(108.0MHZ频率预置)
  KEYFUN05: MOV  29H,#01H
            MOV  28H,#00H
            MOV  27H,#08H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;06号键功能程序(105.0MHZ频率预置)
  KEYFUN06: MOV  29H,#01H
            MOV  28H,#00H
            MOV  27H,#05H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;07号键功能程序(100.0MHZ频率预置)
  KEYFUN07: MOV  29H,#01H
            MOV  28H,#00H
            MOV  27H,#00H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;08号键功能程序(98.0MHZ频率预置)
  KEYFUN08: MOV  29H,#00H
            MOV  28H,#09H
            MOV  27H,#08H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;09号键功能程序(96.0MHZ频率预置)
  KEYFUN09: MOV  29H,#00H
            MOV  28H,#09H
            MOV  27H,#06H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;10号键功能程序(94.0MHZ频率预置)
  KEYFUN10: MOV  29H,#00H
            MOV  28H,#09H
            MOV  27H,#04H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;11号键功能程序(92.0MHZ频率预置)
  KEYFUN11: MOV  29H,#00H
            MOV  28H,#09H
            MOV  27H,#02H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;12号键功能程序(90.0MHZ频率预置)
  KEYFUN12: MOV  29H,#00H
            MOV  28H,#09H
            MOV  27H,#00H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;13号键功能程序(88.0MHZ频率预置)
  KEYFUN13: MOV  29H,#00H
            MOV  28H,#08H
            MOV  27H,#08H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;14号键功能程序(87.0MHZ频率预置)
  KEYFUN14: MOV  29H,#00H
            MOV  28H,#08H
            MOV  27H,#07H
            MOV  26H,#00H
            LCALL DISPUPDAT
            RET
 ;15号键功能程序(立体声/单声道设置键)
  KEYFUN15: CPL 03H
            JNB 03H,MONO
            CLR P3.3
            LCALL PUTBIT
            RET
      MONO: SETB P3.3
            LCALL PUTBIT
            RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 3、将BCD码转换成十六进制,与5位控制码合成操作码,写入芯片 ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 DISPUPDAT:  LCALL BCDB
             LCALL CONCOMMADN
             LCALL PUTBIT
             RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 4、将BCD码转换成十六进制程序  ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     BCDB:  MOV CONBITL,#00H
            MOV CONBITH,#00H
            MOV CONBITL,26H
            MOV  A, 27H
            MOV  B,#10H
            LCALL MULLOOP
            MOV  A,28H
            MOV  B,#100
            MOV  A,29H
            JNZ  ADD3E8
            RET
   ADD3E8:  CLR  C
            MOV  A,#0E8H
            ADD  A,CONBITL
            MOV  CONBITL,A
            MOV  A,#03H
            ADDC A,CONBITH
            MOV  CONBITH,A
            RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 5、乘法与累加器处理子程序(将4位显示的十进制BCD码转换为1个二进制数);
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 MULLOOP:  MUL  AB
           CLR  C
           ADD  A,CONBITL
           MOV  CONBITL,A
           MOV  A,CONBITH
           ADDC A,B
           MOV  CONBITH,A
           RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 6、频率控制数据与5位控制码合成BH1417F控制字  ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONCOMMADN: ANL  CONBITH,#07H
            MOV  A,20H
            ORL  A,CONBITH
            MOV  CONBITH,A
            RET
;;;;;;;;;;;;;;;;;;;;;;;;
;  7、LED显示子程序    ;
;;;;;;;;;;;;;;;;;;;;;;;;
 DISPLAYD:  MOV  R1,#26H
            MOV  R5,#0FEH
    PLAY1:  MOV  A,R5
            MOV  P2,A
            MOV  A,@R1
            MOV  DPTR,#TAB
            MOVC A,@A+DPTR
            MOV  A,P0
            MOV  A,R5
            JB  ACC.1,PLAY2
            CLR P0.7
    PLAY2:  LCALL DEL1MS
            INC   R1
            JNB   ACC.3,ENDOUT1
            RL   A
            MOV  R5,A
            SETB P0.7
            AJMP PLAY1
  ENDOUT1:  MOV  P2,#0FFH
            MOV  P0,#0FFH
            RET
      TAB:  DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0FFH
;;;;;;;;;;;;;;;;;;;;;;;
; 8、控制子发送子程序 ;
;;;;;;;;;;;;;;;;;;;;;;;
   PUTBIT:  MOV  A,CONBITL
            SETB P3.2
            LCALL PUT
            MOV  A,CONBITH
            LCALL PUT
            CLR  P3.2
            CLR  P3.1
            CLR  P3.0
            RET
;;;;;;;;;;;;;;;;;;;;;;;;
; 9、字节发送子程序    ;
;;;;;;;;;;;;;;;;;;;;;;;;
     PUT:  MOV  R3,#8
           CLR  C
    PUT1:  RRC  A
           MOV  P3.0,C
           NOP
           NOP
           NOP
           NOP
           SETB P3.1
           NOP
           NOP
           NOP
           NOP
           CLR  P3.1
           DJNZ R3,PUT1
           RET
;;;;;;;;;;;;;;;;;;;;;;;;;
;  1MS和10MS延时子程序  ;
;;;;;;;;;;;;;;;;;;;;;;;;;
   DEL1MS:
            MOV   R6,#14H
       D2:  MOV   R7,#19H
       D3:  DJNZ  R7,D3
            DJNZ  R6,D2
            RET
  DEL10MS:
            MOV   R6,#20
       D4:  MOV   R7,#248
            DJNZ  R7,$
            DJNZ  R6,D4
            RET
            ;
            ;
            END














⌨️ 快捷键说明

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