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

📄 2051_mc44817_pll.asm

📁 AT89C2051+MC44817锁相环电路CATV射频调制器汇编源代码。
💻 ASM
字号:
; MCU AT89C2051,晶振4MHz,软件控制锁相环IC MC44817
; C68邻频调制器
; 作者:倪卸洪
; 版本V1.2 2006.9.20
TXBUF1    EQU    30H        ;定义发送数据缓冲区
TXBUF2    EQU    31H
TXBUF3    EQU    32H
TXBUF4    EQU    33H
TXBUF5    EQU    34H
COUNT     EQU    35H        ;计数器
DPBUF     EQU    36H
CHGBUF    EQU    37H
LOOP      EQU    38H
TIME      EQU    39H
CHGBUF1   EQU    3AH

EN1       BIT    P3.0
EN2       BIT    P3.1
COM1      BIT    P3.7
COM2_SDO  BIT    P3.5
COM3_CLK  BIT    P3.4
LOCK_A    BIT    P3.2
LOCK_V    BIT    P3.3   
DATAO     BIT    20H         ;数据缓冲位
FCH_Z     BIT    21H         ;增补频道标志
STR_F     BIT    22H         ;初始运行标记
LIGHT     BIT    23H         ;
;********************************
        ORG    0000H
        AJMP   MAIN
        ORG    000BH
        AJMP   SERV
MAIN:    
        MOV    P1,#0FFH
        SETB   COM3_CLK
        SETB   COM2_SDO
        SETB   COM1
        SETB   LOCK_A
        SETB   LOCK_V
        CLR    EN1
        CLR    EN2 
        CLR    FCH_Z
        MOV    TIME,#2
        MOV    LOOP,#6     ;闪烁3次
        MOV    TH0,#7DH
        MOV    TL0,#0CAH
        MOV    TMOD,#01H
        SETB   ET0
        SETB   TR0
        SETB   EA        
        SETB   STR_F       ;置开机标记
        SETB   LIGHT       ;数码管点亮标记       
        AJMP   READ_A                    
      
;********************************
SOUT:
        JB     DATAO,HBIT
        CLR    COM2_SDO
        NOP
        NOP 
        AJMP   CLKO
HBIT:   SETB   COM2_SDO
        NOP
        NOP
CLKO:   SETB   COM3_CLK
        NOP
        NOP
        NOP
        CLR    COM3_CLK
        NOP
        NOP
        RET
;********************************
;      数据发送子程序
;********************************        
TRX:    MOV    P1,#0FFH
        MOV    COUNT,#4
        MOV    A,TXBUF1
TX1:    JB     ACC.3,BDH        
        CLR    DATAO
        AJMP   BITO
BDH:    SETB   DATAO
BITO:   ACALL  SOUT
        RL     A
        DJNZ   COUNT,TX1
        MOV    COUNT,#7
        MOV    A,TXBUF2
TD1:    JB     ACC.6,DAH1
        CLR    DATAO
        AJMP   SBT1
DAH1:   SETB   DATAO
SBT1:   ACALL  SOUT
        RL     A                     
        DJNZ   COUNT,TD1
        MOV    COUNT,#8
        MOV    A,TXBUF3
TD2:    JB     ACC.7,DAH2
        CLR    DATAO
        AJMP   SBT2        
DAH2:   SETB   DATAO
SBT2:   ACALL  SOUT
        RL     A
        DJNZ   COUNT,TD2
        MOV    COUNT,#8
        MOV    A,TXBUF4
TD3:    JB     ACC.7,DAH3
        CLR    DATAO
        AJMP   SBT3        
DAH3:   SETB   DATAO
SBT3:   ACALL  SOUT
        RL     A
        DJNZ   COUNT,TD3
        MOV    COUNT,#7
        MOV    A,TXBUF5
TD4:    JB     ACC.7,DAH4
        CLR    DATAO
        AJMP   SBT4        
DAH4:   SETB   DATAO
SBT4:   ACALL  SOUT
        RL     A
        DJNZ   COUNT,TD4
        RET
;********************************
;    读取伴音分频数据
;********************************
READ_A: MOV    P1,#0FFH
        CLR    COM3_CLK
        SETB   EN1
        SETB   EN2
        NOP
        NOP
        CLR    P1.7
        NOP
        NOP
        MOV    A,P3
        NOP
        NOP
        SETB   P1.7
        CLR    EN1
        CLR    EN2
        CPL    A
        ANL    A,#00000011B
        RL     A
        MOV    R0,A
        MOV    DPTR,#TAB_A
        MOVC   A,@A+DPTR
        MOV    TXBUF2,A
        INC    R0
        MOV    A,R0
        MOVC   A,@A+DPTR
        MOV    TXBUF3,A
        MOV    TXBUF1,#00001111B
        MOV    TXBUF4,#11000000B
        MOV    TXBUF5,#00000100B
        SETB   EN1
        NOP
        NOP
        NOP
        ACALL  TRX
        NOP
        NOP
        CLR    EN1
        NOP
        NOP
        SETB   COM2_SDO
        SETB   COM3_CLK
        JB     STR_F,STR1
        ACALL  DISP
        ACALL  DISP
        ACALL  DISP        
        ACALL  DISP
        ACALL  DISP
        AJMP   READ_V
STR1:   ACALL  STR
;************************************
;     读取频道分频数据
;*************************************
READ_V: MOV    P1,#0FFH
        CLR    COM3_CLK
        NOP
        NOP
        CLR    P1.7
        NOP
        NOP
        MOV    A,P1
        NOP
        SETB   P1.7
        CPL    A        
        ANL    A,#01111111B
        MOV    R5,A
        JZ     AD
        MOV    A,R5
        CLR    C
        SUBB   A,#99
        JC     GOT
        MOV    A,#99
        AJMP   BD
GOT:    MOV    A,R5
        AJMP   BD
AD:     MOV    A,#1
BD:     MOV    DPBUF,A
        DEC    A
        RL     A
        MOV    R0,A
        MOV    DPTR,#TAB_V
        MOVC   A,@A+DPTR
        MOV    TXBUF2,A
        INC    R0
        MOV    A,R0
        MOVC   A,@A+DPTR
        MOV    TXBUF3,A
        MOV    TXBUF1,#00001111B
        MOV    TXBUF4,#01000001B
        MOV    TXBUF5,#01010000B
        SETB   EN2
        NOP
        NOP
        NOP
        ACALL  TRX
        NOP
        NOP
        CLR    EN2
        NOP
        NOP
        SETB   COM2_SDO
        SETB   COM3_CLK
        JB     STR_F,STR2
        ACALL  DISP
        ACALL  DISP
        ACALL  DISP
        ACALL  DISP
        ACALL  DISP
        AJMP   READ_A
STR2:   ACALL  STR        
        AJMP   READ_A
;********************************
;       显示子程序
;********************************
DISP:
        JB     LOCK_A,ER1
        JB     LOCK_V,ER2
        AJMP   NEXT
ER1:    SETB   TR0
        JB     LIGHT,OFF
        MOV    P1,#86H
        CLR    COM1
        ACALL  D1MS
        SETB   COM1
        MOV    P1,#0AFH
        CLR    COM2_SDO
        ACALL  D1MS
        SETB   COM2_SDO
        JB     LOCK_V,ERR       
        MOV    P1,#0F9H
        CLR    COM3_CLK
        ACALL  D1MS
        SETB   COM3_CLK
        RET
ER2:    SETB   TR0
        JB     LIGHT,OFF
        MOV    P1,#86H
        CLR    COM1
        ACALL  D1MS
        SETB   COM1
        MOV    P1,#0AFH
        CLR    COM2_SDO
        ACALL  D1MS
        SETB   COM2_SDO
        MOV    P1,#0A4H
        CLR    COM3_CLK
        ACALL  D1MS
        SETB   COM3_CLK
        RET           
ERR:    
        MOV    P1,#0AFH
        CLR    COM3_CLK
        ACALL  D1MS
        SETB   COM3_CLK
        RET
OFF:    MOV    P1,#0FFH
        ACALL  D1MS
        ACALL  D1MS
        ACALL  D1MS
        RET
;**********************************
NEXT:   MOV    A,DPBUF
        CLR    C
        SUBB   A,#58
        JNC    Z_CH 
        MOV    A,#11000110B    ;非增补显示"C"
        AJMP   TODP
Z_CH:   SETB   FCH_Z
        MOV    R4,A
        INC    R4
        MOV    A,#10100111B    ;增补显示"c"
TODP:   MOV    P1,A
        CLR    COM1
        ACALL  D1MS
        SETB   COM1
        JBC    FCH_Z,CHZ        
        MOV    A,DPBUF
        AJMP   TWO
CHZ:    MOV    A,R4
;************************************
;       16进制转BCD,显示频道数
;************************************
TWO:    MOV    B,#10     ;分离十位和个位 
        DIV    AB 
 
        MOV    DPTR,#TAB_D
        MOVC   A,@A+DPTR
        MOV    P1,A
        CLR    COM2_SDO
        ACALL  D1MS
        SETB   COM2_SDO
        MOV    A,B
        MOVC   A,@A+DPTR
        MOV    P1,A
        CLR    COM3_CLK
        ACALL  D1MS
        SETB   COM3_CLK
        RET        
;************************************
;       闪烁显示"888"
;************************************
STR:     JB    LIGHT,L1
         MOV   P1,#80H
         CLR   COM1
         ACALL D1MS
         SETB  COM1
         CLR   COM2_SDO
         ACALL D1MS
         SETB  COM2_SDO
         CLR   COM3_CLK
         ACALL D1MS
         SETB  COM3_CLK
         RET
L1:      MOV   P1,#0FFH
         ACALL D1MS
         ACALL D1MS
         ACALL D1MS
         RET                   
;************************************
;        伴音分频比
;************************************
 TAB_A:
         DB     06H,80H   ;6.5MHz
         DB     06H,00H   ;6.0MHz            
         DB     05H,80H   ;5.5MHz
         DB     04H,80H   ;4.5MHz
 
;************************************
;        频道频率对应表     
;************************************                  
TAB_V: 
         DB      0AH,0F8H    ;CH1
         DB      0BH,0F8H    ;CH2	
         DB      0CH,0F8H    ;CH3
         DB      0EH,68H     ;CH4
         DB      0FH,68H     ;CH5
         DB      19H,0C8H    ;CH6
         DB      1AH,0C8H    ;CH7
         DB      1BH,0C8H    ;CH8
         DB      1CH,0C8H    ;CH9
         DB      1DH,0C8H    ;CH10
         DB      1EH,0C8H    ;CH11
         DB      1FH,0C8H    ;CH12
         DB      3FH,0A8H    ;CH13
         DB      40H,0A8H    ;CH14
         DB      41H,0A8H    ;CH15   
         DB      42H,0A8H    ;CH16
         DB      43H,0A8H    ;CH17
         DB      44H,0A8H    ;CH18
         DB      45H,0A8H    ;CH19
         DB      46H,0A8H    ;CH20
         DB      47H,0A8H    ;CH21
         DB      48H,0A8H    ;CH22
         DB      49H,0A8H    ;CH23
         DB      4AH,0A8H    ;CH24
         DB      50H,0A8H    ;CH25
         DB      51H,0A8H    ;CH26
         DB      52H,0A8H    ;CH27
         DB      53H,0A8H    ;CH28
         DB      54H,0A8H    ;CH29
         DB      55H,0A8H    ;CH30
         DB      56H,0A8H    ;CH31
         DB      57H,0A8H    ;CH32
         DB      58H,0A8H    ;CH33
         DB      59H,0A8H    ;CH34
         DB      5AH,0A8H    ;CH35
         DB      5BH,0A8H    ;CH36
         DB      5CH,0A8H    ;CH37
         DB      5DH,0A8H    ;CH38
         DB      5EH,0A8H    ;CH39
         DB      5FH,0A8H    ;CH40
         DB      60H,0A8H    ;CH41
         DB      61H,0A8H    ;CH42
         DB      62H,0A8H    ;CH43
         DB      63H,0A8H    ;CH44
         DB      64H,0A8H    ;CH45
         DB      65H,0A8H    ;CH46
         DB      66H,0A8H    ;CH47
         DB      67H,0A8H    ;CH48
         DB      68H,0A8H    ;CH49
         DB      69H,0A8H    ;CH50
         DB      6AH,0A8H    ;CH51
         DB      6BH,0A8H    ;CH52
         DB      6CH,0A8H    ;CH53
         DB      6DH,0A8H    ;CH54
         DB      6EH,0A8H    ;CH55
         DB      6FH,0A8H    ;CH56
         DB      70H,0A8H    ;CH57

;*****************************************************
;        以下为增补频道
;*****************************************************
         DB      12H,0C8H    ;Z1
         DB      13H,0C8H    ;Z2
         DB      14H,0C8H    ;Z3
         DB      15H,0C8H    ;Z4
         DB      16H,0C8H    ;Z5
         DB      17H,0C8H    ;Z6
         DB      18H,0C8H    ;Z7
         DB      20H,0C8H    ;Z8
         DB      21H,0C8H    ;Z9
         DB      22H,0C8H    ;Z10
         DB      23H,0C8H    ;Z11
         DB      24H,0C8H    ;Z12
         DB      25H,0C8H    ;Z13
         DB      26H,0C8H    ;Z14
         DB      27H,0C8H   ;Z15
         DB      28H,0C8H   ;Z16
         DB      29H,0C8H   ;Z17
         DB      2AH,0C8H   ;Z18
         DB      2BH,0C8H   ;Z19
         DB      2CH,0C8H   ;Z20
         DB      2DH,0C8H   ;Z21
         DB      2EH,0C8H   ;Z22
         DB      2FH,0C8H   ;Z23
         DB      30H,0C8H   ;Z24
         DB      31H,0C8H   ;Z25
         DB      32H,0C8H   ;Z26
         DB      33H,0C8H   ;Z27
         DB      34H,0C8H   ;Z28
         DB      35H,0C8H   ;Z29
         DB      36H,0C8H   ;Z30
         DB      37H,0C8H   ;Z31
         DB      38H,0C8H   ;Z32
         DB      39H,0C8H   ;Z33
         DB      3AH,0C8H   ;Z34
         DB      3BH,0C8H   ;Z35
         DB      3CH,0C8H   ;Z36
         DB      3DH,0C8H   ;Z37
         DB      4BH,0A8H   ;Z37
         DB      4CH,0A8H   ;Z39
         DB      4DH,0A8H   ;Z40
         DB      4EH,0A8H   ;Z41
         DB      4FH,0A8H   ;Z42 
;********************************
;       段码表
;********************************
TAB_D:
         DB      0C0H,0F9H     
         DB      0A4H,0B0H
         DB      99H, 92H
         DB      82H, 0F8H
         DB      80H, 90H
;********************************
;        中断服务 
;********************************
SERV:    PUSH   ACC
         PUSH   PSW
         DJNZ   TIME,REDO
         MOV    TIME,#2
         CPL    LIGHT            
         DJNZ   LOOP,REDO
         MOV    TH0,#7DH
         MOV    TL0,#0CAH
         CLR    STR_F
         JB     LOCK_A,REDO
         JB     LOCK_V,REDO
         CLR    TR0           
REDO:    POP    PSW
         POP    ACC
         RETI          
;******************************** 
;      1MS延时程序
;********************************
D1MS:
        MOV    R7,#20
LOOPS:  MOV    R6,#30
        DJNZ   R6,$
        DJNZ   R7,LOOPS
        RET                     
;********************************
        END               
          

⌨️ 快捷键说明

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