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

📄 复件 sn8p2501a.asm

📁 RFID的电子标签原码
💻 ASM
📖 第 1 页 / 共 2 页
字号:

chip  SN8P2501b
//{{SONIX_CODE_OPTION
	.Code_Option	LVD		LVD_L		; 2.0V Reset
	.Code_Option	Reset_Pin	P11
	.Code_Option	Watch_Dog	Disable
	.Code_Option	High_Clk	IHRC_16M	; Internal 16M RC Oscillator
	.Code_Option	Fcpu		#2     ; Fcpu = Fosc/4
	.Code_Option	Security	Enable
	.Code_Option	Noise_Filter	Enable
//}}SONIX_CODE_OPTION



.DATA
        ACC_TEMP  DS  1
        PFLAG_TEMP DS 1  
       
        COUNT0    DS  1
        COUNT1    DS  1
        count2    ds  1

        Voice     DS  1 
     
.CODE       
        org    00h
        jmp  start 
        ORG    08H
        JMP    ZD       
        org      10h
        ;音阶数据(输出方波频率数据) 
DATAS:    
       dw      0x11be	;5            ;6.09K
       dw      0x11be	;6            ;5.95K
       dw      0x11be	;7            ;5.81K
       dw      0x11be	;8            ;5.68K
       dw      0x11be	;9            ;5.55K
       dw      0x11ca	;5            ;6.09K
       dw      0x11ca	;6            ;5.95K
       dw      0x11ca	;7            ;5.81K
       dw      0x11ca	;8            ;5.68K
       dw      0x11ca	;9            ;5.55K

;DATAS: dw      0x11ad	;0            ;6.94k      
 ;      dw      0x11b1   ;1            ;6.75K
  ;     dw      0x11b5	;2            ;6.57K
   ;    dw      0x11b9	;3            ;6.41K
    ;   dw      0x11c2	;4            ;6.25K
     ;  dw      0x11c4	;5            ;6.09K
;       dw      0x11c7	;6            ;5.95K
 ;      dw      0x11ca	;7            ;5.81K
  ;     dw      0x11cd	;8            ;5.68K
   ;    dw      0x11d0	;9            ;5.55K
    

ZD:     B0XCH  A,ACC_TEMP      ;中断保护
        B0MOV  A,PFLAG
        B0MOV  PFLAG_TEMP,A
  
        B0BTS1   FT0IRQ
        JMP      RETU
        B0BCLR   FT0IRQ
        MOV      A,#0F1H
        B0MOV    T0C,A
        
        B0BTS1   P2.5
        JMP      $+3
        B0BCLR   P2.5
        JMP      $+2
        B0BSET   P2.5
  

RETU:   B0MOV   A,PFLAG_TEMP
        B0MOV   PFLAG,A
        B0XCH   A,ACC_TEMP        
        RETI


start: 
        MOV   A,#07fh
        B0MOV   STKP,A 
        B0MOV  PFLAG,#00H      
   ;***************I/O设置********************
        CLR   P0
        clr   p1
        clr   p5 
        CLR   P2
          
        b0bset  p1.0   
        mov    a,#00000001b 
        b0mov  p1m,a
        mov  a,#00h
        b0mov  p0m,a
        mov a,#0ffh
        b0mov  p5m,a
        b0mov  p2m,a
   
        MOV   A,#01H         ;使能P0.0端口的上拉电阻
        B0MOV  P0UR,A

       
  ;********************************************
        CLR    Y
        CLR    Z

  ;****开启P1口唤醒功能**P0口始终具有唤醒功能******
        MOV    A,#0FFH
        B0MOV  P1W,A 

  ;************16.3S唤醒一次************************
        B0BCLR  FT0IEN      ;禁止T0中断
        B0BCLR  FT0ENB      ;停止记数 
        B0BCLR  FT0IRQ      ;清中断标志
        MOV     A,#00010000B
        B0MOV   T0M,A       ;选择内部时钟 1:256 
 ;**************************************************

 ;***********TC0设置作为BUZZER输出时钟**************
        B0BCLR   FTC0IEN
        B0BCLR   FTC0ENB
        B0BCLR   FTC0IRQ
        MOV      A,#01010000B   ;8分频
        B0MOV    TC0M,A
 ;**************************************************
       
 ;**************************************************
             B0BSET  FCLKMD      ;进入低速模式
             B0BSET  FSTPHX      ;关闭高速时钟 省电
 ;**************************************************

 ;*******上电延时100MS******************************
              B0BCLR  P1.0
              CALL    DELAY_LED
CALL    DELAY_LED
CALL    DELAY_LED
              B0BSET  P1.0
 ;***************************************************
            

;******************************************************************
;//////////////////////////////////////////////////////////////////
;***********检测2次正常后进入“绿色省电模式”**********************

OPEN:         MOV    A,#50
              B0MOV  COUNT0,A
LOOP_OPEN:    @RST_WDT    
              B0BTS1  P0.0           ;是否TEST按键按下?
              JMP     KEY_CL
              B0BTS0  P1.1           ;是否断线\大力报警(P1.1=1异常  P1.1=0正常)
              JMP     DX_BJ
;              B0BTS0  P1.2           ;是否感应报警(P1.2=1异常  P1.2=0正常)
;              JMP     GY_BJ
              B0BTS1  P1.3           ;是否低压报警(P1.2=1正常  P1.2=0异常)
              JMP     DY_BJ                                       
              DECMS   COUNT0
              JMP     LOOP_OPEN                 
;*******************************************************************
;*******************************************************************          
            CLR     T0C           ;T0初始直设定   T0 16.3S唤醒一次
            B0BCLR  FT0IRQ        ;清中断标志
            B0BSET  FT0ENB        ;开始记数
           
            B0BCLR  FCPUM0
            B0BSET  FCPUM1        ;进入“绿色模式” (T0 16.3S唤醒一次,P1 P0唤醒)           
;--------------------------------------------------
;-------------绿色模式-----------------------------
;--------------------------------------------------       
            B0BCLR   FT0ENB       ;停止记数
            B0BTS1   FT0IRQ       ;判断是否为T0唤醒  若是点亮绿色LED100MS
            JMP      OPEN         ;否则为P1 P0唤醒
           
            B0BCLR   P1.0         ;点亮RED色LED100MS           
            CALL     DELAY_LED
            CALL     DELAY_LED
            CALL     DELAY_LED
            B0BSET   P1.0
            JMP      OPEN
;********************************************************************************
;////////////////////////////////////////////////////////////////////////////////
   

;*******************************************************************************
;***************测试报警处理****************************************************            
KEY_CL:      MOV     A,#50
             B0MOV   COUNT1,A 
KEY_CL_1:    @RST_WDT  
             B0BTS0  P0.0           ;是否TEST按键按下?             
             JMP     OPEN  
             DECMS   COUNT1
             JMP     KEY_CL_1
             
             B0BCLR  FSTPHX          ;开启高速时钟
             CALL   DELAY_100MS        ;延时            
             B0BCLR  FCLKMD          ;进入普通模式 
         
             CALL    PWM_START       ;启动升压电路

  TEST_BJ:   CALL    PLAY_Voice_L_H              
             CALL    PLAY_Voice_H_L
             B0BTS0  P0.0            ;按键是否放开?
             JMP     TEST_RET             
             JMP     TEST_BJ 

           
TEST_RET:    MOV     A,#255
             B0MOV   COUNT1,A 
TEST_RET_1:  @RST_WDT  
             B0BTS1  P0.0             ;是否TEST按键放开?             
             JMP     TEST_BJ 
             DECMS   COUNT1
             JMP     TEST_RET_1

             B0BSET  P1.0            ;关闭LED
             CALL    PWM_STOP        ;关闭升压电路            
             CALL    STOP_Voice      ;关闭声音输出
             B0BSET  FCLKMD          ;进入低速模式
             B0BSET  FSTPHX          ;关闭高速时钟 省电   
             JMP     OPEN       

;********************************************************************************
;********************************************************************************



;*************报警检测去干扰处理*************************************************
           
DX_BJ:       MOV     A,#100
             B0MOV   COUNT1,A 
DX_BJ_1:     @RST_WDT  
             B0BTS1  P1.1           ;是否断线\大力报警(P1.1=1异常  P1.1=0正常)          
             JMP     OPEN  
             DECMS   COUNT1
             JMP     DX_BJ_1
             JMP     BJ             ;去报警


GY_BJ:       MOV     A,#100
             B0MOV   COUNT1,A 
GY_BJ_1:     @RST_WDT  
             B0BTS1  P1.2           ;是否感应报警(P1.2=1异常  P1.2=0正常)         
             JMP     OPEN  
             DECMS   COUNT1
             JMP     GY_BJ_1
             JMP     BJ             ;去报警


DY_BJ:       MOV     A,#100
             B0MOV   COUNT1,A 
DY_BJ_1:     @RST_WDT  
             B0BTS0  P1.3           ;是否低压报警(P1.2=1正常  P1.2=0异常)         
             JMP     OPEN  
             DECMS   COUNT1
             JMP     DY_BJ_1
             JMP     DDY_CL             ;去报警


;*************************************************************************
;*******************低电压报警*****B0BTS1  P1.3 *************************************************
DDY_CL:      
                          
             B0BCLR  FSTPHX          ;开启高速时钟
             CALL    DELAY_100MS        ;延时            
             B0BCLR  FCLKMD          ;进入普通模式 
         
BJBOOT:      CALL    PWM_START       ;启动升压电路
             CALL    PLAY_Voice_L_H              
             CALL    PLAY_Voice_H_L
             CALL    PWM_STOP        ;关闭升压电路            
             CALL    STOP_Voice      ;关闭声音输出
             B0BSET  P1.0            ;关闭LED
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS
CALL   DELAY_200MS

⌨️ 快捷键说明

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