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

📄 发送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    0030H 
 MAIN: 
        LCALL   RFM12_INITTAL
        LCALL    OPEN_TX
        LCALL    LEAD_CODE                 ;发送引导码,同步码
SEND_DMDATA2:
        LCALL    WAITI
        MOV      A,#0B8H                   ;发射寄存器写命令
        LCALL    WRT_CMD
        MOV      A, @R1                    ;点名命令低字节到高字节
        LCALL    WRT_CMD
        LCALL    ENDD 
        LCALL    CLOSE_TRX                 ;关闭发射机
        LCALL    OVER_CODE                   ;发送结束码
        SJMP     $
;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   
;**********************************************************************************************************************
;关闭发射机、接收机
CLOSE_TRX:
          MOV    A,#82H                           ;电源管理命令
          LCALL  WRT_CMD                          ;关闭发射机/关闭频率合成器/关闭晶体振荡器/禁止时钟输出
          MOV    A,#01H
          LCALL  WRT_CMD
          LCALL   ENDD
          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   
;******************************************************************************         
;读字节                                                                        
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                                                                 
 ;**********************************************************************************************************************
 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

⌨️ 快捷键说明

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