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

📄 rf_sub.s43

📁 一个基于MSP430F135单片机的热量计量表的C语言原码
💻 S43
📖 第 1 页 / 共 2 页
字号:
;;++++++++++++++++锁定位0+++++++++++++++++
            bic.b     #rf_write_bit,&P1OUT
            call      #rf_write0_delay
            bis.b     #rf_write_bit,&P1OUT
            call      #rf_snap_delay
            ret
RF_data_write
;;++++++++++++++++数据写+++++++++++++++++
            mov       #20h,bit_counter_R7
write_next_bit
            rlc       com_data_R6
            rlc       com_data_R5     
            bit       #c_bit,SR
            jnz       rf_write_1
rf_write_0                  
            bic.b     #rf_write_bit,&P1OUT
            call      #rf_write0_delay  
            jmp       snap_next_bit   
rf_write_1          
            bic.b     #rf_write_bit,&P1OUT
            call      #rf_write1_delay 
snap_next_bit 
            bis.b     #rf_write_bit,&P1OUT
            call      #rf_snap_delay
            dec       bit_counter_R7
            jnz       write_next_bit
            ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

            
;;++++++++++++++++地址码+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RF_address_code
            mov       #3h,bit_counter_R7           
write_address_bit
            rlc       address_R4
            bit       #c_bit,SR
            jnz       rf_write_address_1             
            bic.b     #rf_write_bit,&P1OUT
            call      #rf_write0_delay  
            jmp       address_snap_bit   
rf_write_address_1
            bic.b     #rf_write_bit,&P1OUT
            call      #rf_write1_delay 
address_snap_bit
            bis.b     #rf_write_bit,&P1OUT
            call      #rf_snap_delay
            dec       bit_counter_R7
            jnz       write_address_bit
            ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

            
;;+++++++++++++++++停止模式++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RF_stop
            bic.b     #rf_write_bit,&P1OUT
            mov.b     #015h,&counter
rf_stop_delay
            call      #rf_write1_delay 
            call      #rf_snap_delay
            dec.b     &counter
            jnz       rf_stop_delay
            ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                      
;;++++++++++++++++延时程序1,写"1"时的延时,写"0"时的延时,空隙延时++++++++++++++++++++++
rf_write1_delay 
            mov       #50,R9                             ;大约52-59 
            call      #rf_write_delay
            ret          
rf_write0_delay 
            mov       #16,R9                              ;大约22-26
            call      #rf_write_delay
            ret          
rf_snap_delay  
            mov       #10,R9                              ;大约120us  
            call      #rf_write_delay
            ret                        
rf_write_delay
            nop
            nop
            nop
            nop
            nop
            dec       R9
            jnz       rf_write_delay
            ret            
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                    
;;+++++++++++++++++清射频卡数据保存区+++++++++++++++++++++++++++++++++++++++++++++++++
rf_ram_clr                       
              clr.b   rf_capture_data(R8)
              inc     R8
              cmp     #20h,R8
              jnz     rf_ram_clr
              ret
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


;;+++++++++++++++++射频卡操作子程序+++++++++++++++++++++++++++++++++++++++++++++++++++++
rf_card_deal             
;;-------读卡的初始化处理。
              bis.b   #rf_read_bit,&P1SEL
              bic.b   #rf_read_bit,&P1DIR
              clr     R8
              call    #rf_ram_clr
              bis.b   #read_rf_first_bit+read_rf_syn_bit,&rf_flag_byte
              bic.b   #read_rf_stop_bit,&rf_flag_byte
              mov     #20h,bit_counter_R7
              mov     #0D900h,&CCTL0
              mov     #0224h,&TACTL
              clr     &CCR0
              clr     R8
              clr     R13
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

              
;;+++++++++++++++等待读完射频卡。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wait_rf_deal_end
              dec     R13
              jz      read_rf_error
              bit     #01h,&CCTL0
              jnz     RF_read_test
              bit.b   #read_rf_stop_bit,&rf_flag_byte
              jz      wait_rf_deal_end
              clr     &CCTL0
              clr     &TACTL              
              ;MOV.W	  #0x0, R12
              mov.b   #0x01, is_RF_data_ok;
              ret
read_rf_error
              clr     com_data_R5
              clr     com_data_R6
              clr     &CCTL0
              clr     &TACTL
              ;MOV.W	  #0x1, R12
              mov.b   #0x02, is_RF_data_ok;
              ret      
RF_read_test          			  
              mov     #0224h,&TACTL        
              mov     &CCR0,R9             
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


;;++++++++++++读射频卡测试+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;             mov     R9,rf_capture_data(R8)
;             incd    R8
;             cmp     #140,R8
;             jhs     ISR_CCIFG2_end
;             bic     #01h,&CCTL0
;             jmp     wait_rf_deal_end
;ISR_CCIFG2_end
;             jmp     $
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


;;+++++++++++以下查找同步最关键,可以用以上小段程序测试++++++++++++++++++++++++++++++++++
              bit.b   #read_rf_first_bit,&rf_flag_byte
              jz      RF_read_normal
              bit.b   #read_rf_syn_bit,&rf_flag_byte
              jz      RF_read_first              
;;-------射频卡的同步处理。
              cmp     #300,R9    ;288
              jlo     search_rf_synchronization
              cmp     #390,R9    ;368
              jhs     search_rf_synchronization
              bic.b   #read_rf_syn_bit,&rf_flag_byte
search_rf_synchronization
              bic     #01h,&CCTL0
              jmp     wait_rf_deal_end
RF_read_first
              cmp     #150,R9 ;如果小于, 忽略掉随后的一个捕获
              jlo     search_rf_synchronization
              cmp     #300,R9 ;如果大于300, 则是一个大捕获
              jhs     find_rf_synchronization
              bic.b   #read_rf_first_bit,&rf_flag_byte
              mov.b   #1h,&wait_half_counter
              jmp     search_rf_synchronization
find_rf_synchronization
              clr.b   &wait_half_counter
              bic.b   #read_rf_first_bit,&rf_flag_byte
              jmp     decide_this_bit
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


;;++++++++++++++++++++正常的读卡操作+++++++++++++++++++++++++++++++++++++++++++++++++++++                      
RF_read_normal              
              cmp     #90,R9 	;小于,则错误
              jlo     rf_bit_error
              cmp     #300,R9	;大于则错误
              jhs     rf_bit_error
              cmp     #150,R9
              jlo     wait_half_bit
              jmp     decide_this_bit              
rf_bit_error
              clr     R8
              call    #rf_ram_clr
              bis.b   #read_rf_first_bit+read_rf_syn_bit,&rf_flag_byte
              bic.b   #read_rf_stop_bit,&rf_flag_byte
              mov     #20h,bit_counter_R7
              mov     #0D900h,&CCTL0
              mov     #0224h,&TACTL
              clr     &CCR0
              clr     R8
              bic     #01h,&CCTL0
              jmp     wait_rf_deal_end                         
wait_half_bit
              inc.b   &wait_half_counter
              cmp.b   #2h,&wait_half_counter
              jhs     decide_this_bit
              bic     #01h,&CCTL0
              jmp     wait_rf_deal_end              
decide_this_bit
              clr.b   &wait_half_counter
              bit     #CCI_bit,&CCTL0
              jz      this_bit_0
              jmp     this_bit_1
              bic     #01h,&CCTL0
              jmp     wait_rf_deal_end              
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
              
;;+++++++++++++++++处理数据块、数据字节、和每位之间的关系+++++++++++++++++++++++++++++++
this_bit_0
              setc
              rlc     com_data_R6
              rlc     com_data_R5
              jmp     rf_data_counter
this_bit_1
              clrc
              rlc     com_data_R6
              rlc     com_data_R5
rf_data_counter
              dec     bit_counter_R7
              jz      RF_read_normal_end
              bic     #01h,&CCTL0
              jmp     wait_rf_deal_end              
RF_read_normal_end
              mov     com_data_R5,rf_capture_data(R8)
              incd    R8                                    ;2,6,a,e
              mov     com_data_R6,rf_capture_data(R8) 
              incd    R8
              cmp     #28,R8
              jhs     rf_end
              mov     #20h,bit_counter_R7
              bic     #01h,&CCTL0
              jmp     wait_rf_deal_end
rf_end
              bis.b   #read_rf_stop_bit,&rf_flag_byte
              bic     #01h,&CCTL0
              jmp     wait_rf_deal_end
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
              
END

⌨️ 快捷键说明

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