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

📄 中断接收1字节.asm

📁 RF12射频模块收发一字节程序(汇编) 51单片机
💻 ASM
字号:
        SEL           BIT   P2.7
        SDI           BIT   P2.6
        SCK           BIT   P2.5
        SDO           BIT   P2.4
        IRQ           BIT   P3.2
        ORG    0000H
        AJMP   MAIN
        ORG    0003H
        LJMP   EXT0      ;INT0中断入口 
        ORG    0030H 
MAIN:         
;外部中断T0的初始化                      
        CLR    IT0             ;低电平触发
        SETB   EA              ;开总中断 
        MOV    SP,#0E8H                       
        LCALL  RFM12_INITTAL   ;RFM12初始化
        LCALL  OPEN_RX         ;打开接收机
WAIT_WAIT:
       SJMP    WAIT_WAIT           
;接收(EXT0)中断程序
EXT0:   CLR   EX0
        PUSH   ACC
        PUSH   PSW
        MOV    PSW,#18H            ;选择工作寄存器3
        LCALL  RCV_ZDATA
        POP    PSW
        POP    ACC
        RETI
;接收子程序
RFM12_RECV:
         LCALL    WAITI
         MOV     A, #0B0H         ;写入接收控制命令
         LCALL   RD_CMD
         MOV     A, #00H
         LCALL   RD_CMD
         LCALL   ENDD
         RET        
        

;RFM12初始化                                                                               
RFM12_INITTAL:                                                                            
        SETB    SEL                                                                      
        SETB    SDI                                                                      
        CLR     SCK                                                                      
                                                                                         
        MOV     A,#80H          ;配制寄存器命令                                          
        LCALL   WRT_CMD         ;工作频段 433HZ/晶阵负载电容12PF                         
        MOV     A,#0D7H         ;使能内部发射寄存器/使能内部FIFO寄存器                   
        LCALL   WRT_CMD                                                                  
        LCALL   ENDD                                                                     
                                                                                         
        MOV     A,#0A6H         ;频率设置命令                                            
        LCALL   WRT_CMD         ;设置发射机的中心频率430.8HZ                             
        MOV     A,#40H                                                                   
        LCALL   WRT_CMD                                                                  
        LCALL   ENDD                                                                     
                                                                                         
        MOV     A,#0C6H         ;数据速率命令                                            
        LCALL   WRT_CMD         ;速率9600                                            
        MOV     A,#23H                                                             
        LCALL   WRT_CMD                                                                  
        LCALL   ENDD                                                                     
                                                                                         
        MOV     A,#94H          ;接收机控制命令                                          
        LCALL   WRT_CMD         ;使能VDI/VDI响应时间最快                                 
        MOV     A,#0A0H         ;接收带宽134KHZ                                          
        LCALL   WRT_CMD                                                                  
        LCALL   ENDD                                                                     
                                                                                         
        MOV     A,#0C2H         ;数据滤波命令                                            
        LCALL   WRT_CMD         ;启用时钟恢复自动锁定/时钟恢复快速自动锁定使能           
        MOV     A,#0ACH         ;选择数字滤波/设置门限DQD4                               
        LCALL   WRT_CMD                                                                  
        LCALL   ENDD                                                                     
                                                                                         
        MOV     A,#0CAH         ;输出和FIFO模式命令                                      
        LCALL   WRT_CMD         ;设置FIFO中断门限FIFO8                                   
        MOV     A,#81H          ;设置FIFO填充条件:同步字                                 
        LCALL   WRT_CMD         ;禁止高灵敏复位模式                                      
        LCALL   ENDD                                                                     
                                                                                         
        MOV     A,#0C4H         ;AFC命令                                                 
        LCALL   WRT_CMD         ;VDI有效保留偏移值 /使能AFC输出寄存器/打开AFC功能        
        MOV     A,#83H          ;AFC自动模式:上电运行一次                                
        LCALL   WRT_CMD         ;频率漂移范围:无限制                                     
        LCALL   ENDD                                                                     
                                                                                         
        MOV     A,#98H          ;发射机配置控制命令                                      
        LCALL   WRT_CMD         ;调制频偏:30KHZ \                                        
        MOV     A,#50H                                                                   
        LCALL   WRT_CMD                                                                  
        LCALL   ENDD                                                                     
        RET

   
;******************************************************************************         
;读字节                                                                        
RD_CMD :                                                                       
           CLR  SCK                                                            
           CLR  SEL                                                            
           MOV R3,#08H                                                         
           NOP                                                                 
           CLR	C                                                              
           RLC A                                                               
OUTBYT2:                                                                       
           CLR SCK                                                             
           NOP                                                                 
           NOP                                                                 
           MOV SDI,C                                                           
           SETB SCK                                                            
           NOP                                                                 
           NOP                                                                 
           MOV  C,SDO                                                          
           CLR  SCK                                                            
           RLC  A                                                              
           DJNZ R3,OUTBYT2                                                     
           RET                                                                 
                                                                               
;******************************************************************************
;写字节                                                                        
;*******************************************************************           
 WRT_CMD:  CLR  SCK                                                            
           CLR   SEL                                                           
           MOV R7,#08H                                                         
                                                                               
  OUTBYT1:                                                                     
           CLR SCK                                                             
           NOP                                                                 
           NOP                                                                 
           RLC A                                                               
           MOV SDI,C                                                           
           SETB SCK                                                            
           DJNZ R7,OUTBYT1                                                     
           RET 
;**********************************************************************                                                                
WAITI:                                                                         
WAITQ:     JB      IRQ,WAITQ                                                   
           RET                                                                 
 ;**********************************************************************************************************************
;打开发射机
OPEN_TX:
         MOV     A, #00H         ;读状态寄存器
         LCALL   WRT_CMD
         MOV     A, #00H
         LCALL   WRT_CMD
         LCALL   ENDD
         MOV     A,#82H                           ;电源管理命令
         LCALL   WRT_CMD                           ;打开发射机/打开频率合成器/打开晶体振荡器/禁止时钟输出
         MOV     A,#39H
         LCALL   WRT_CMD
         LCALL   ENDD
         RET
;**********************************************************************************************************************
;关闭发射机、接收机
CLOSE_TRX:
          MOV    A,#82H                           ;电源管理命令
          LCALL  WRT_CMD                          ;关闭发射机/关闭频率合成器/关闭晶体振荡器/禁止时钟输出
          MOV    A,#01H
          LCALL  WRT_CMD
          LCALL   ENDD
          RET
;***********************************************************************************************************************
;打开接收机
OPEN_RX:

        MOV     A, #82H
        LCALL   WRT_CMD
        MOV     A, #0D9H
        LCALL   WRT_CMD
        LCALL   ENDD

        MOV     A,#0CAH         ;使能FIFO
        LCALL   WRT_CMD
        MOV     A, #83H
        LCALL   WRT_CMD
        LCALL   ENDD

        MOV     A,#00H          ;读状态寄存器
        LCALL   WRT_CMD
        MOV     A,#00H
        LCALL   WRT_CMD
        LCALL   ENDD
        RET
;*******************************************************************************************************************
;关闭接收机FIFO
CLOSE_RX_FIFO:
         MOV     A,#0CAH ;输出和FIFO模式命令 /禁止填充FIFO
         CALL    WRT_CMD  ;设置FIFO中断门限FIFO8
         MOV     A ,#81H  ;设置FIFO填充条件:同步字
         CALL    WRT_CMD  ;禁止高灵敏复位模式
         LCALL   ENDD
         RET
;******************************************************
;发送引导码,同步码
LEAD_CODE:
         LCALL   WAITI
         MOV     A, #0B8H        ;发送引导码
         LCALL   WRT_CMD
         MOV     A,#0AAH
         LCALL   WRT_CMD
         LCALL   ENDD

         LCALL   WAITI
         MOV     A,#0B8H         ;发送引导码
         LCALL   WRT_CMD
         MOV     A,#0AAH
         LCALL   WRT_CMD
         LCALL   ENDD

         LCALL    WAITI
         MOV     A, #0B8H        ;发送引导码
         LCALL   WRT_CMD
         MOV     A, #0AAH
         LCALL   WRT_CMD
         LCALL   ENDD

         LCALL    WAITI
         MOV     A, #0B8H        ;发送同步码
         LCALL   WRT_CMD
         MOV     A, #2DH
         LCALL   WRT_CMD
         LCALL   ENDD

         LCALL    WAITI
         MOV     A, #0B8H         ;发送同步码
         LCALL   WRT_CMD
         MOV     A, #0D4H
         LCALL   WRT_CMD
         LCALL   ENDD
         RET
 OVER_CODE:
         LCALL    WAITI                      ; H
         MOV     A, #0B8H        ;发送引导码
         LCALL   WRT_CMD
         MOV     A,#0AAH
         LCALL   WRT_CMD
         LCALL   ENDD

         LCALL    WAITI
         MOV     A,#0B8H        ;发送引导码
         LCALL   WRT_CMD
         MOV     A, #0AAH
         LCALL   WRT_CMD
         LCALL   ENDD

         LCALL    WAITI
         MOV     A,#0B8H        ;发送引导码
         LCALL   WRT_CMD
         MOV     A,#0AAH
         LCALL   WRT_CMD
         LCALL   ENDD
         RET                                                 
ENDD:                                                                                             
       CLR  SCK      
       SETB SEL      
       NOP           
       NOP           
       RET









⌨️ 快捷键说明

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