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

📄 pic

📁 以PIC16C57为核心
💻
📖 第 1 页 / 共 2 页
字号:

  RTCC EQU 1
  PC EQU 2
  STATUS EQU 3
  FSR EQU 4
  RA EQU 5
  RB EQU 6
  RC EQU 7
  
  PLJS EQU 8
  TIMECOUNT EQU 9
  COUNT EQU 0AH
  COUNT1 EQU 0BH
  SDJS EQU 0CH              ; 手动级数  1---4
  JSGS  EQU 0DH               ;接收个数,看接受了几个信号,0--8
  
 
 
 
  SHOW1 EQU 10   ; 放显示的最高位置
  SHOW2 EQU 11
  SHOW3 EQU 12
  SHOW4 EQU 13
  
  
  
  LIGHT1 EQU 14   ;放灯管的显示
  LIGHT2 EQU 15
  LIGHT3 EQU 16
  LIGHT4 EQU 17
  LIGHT5 EQU 18
  
  TEMP0 EQU 19
  TEMP1 EQU  01AH
  TEMP2 EQU  01BH
  TEMP3 EQU 01CH
  TEMP4 EQU 01DH
  

  PIC54 EQU 3FFH
  SUB EQU 0

  --------------------------------------
    ORG PIC54
    GOTO MAIN
    -----------------------------------
    ORG SUB
  ------------------------------
  DELAY1MS
  MOVLW 200
  MOVWF TEMP1
  L1:
     NOP 
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     DECFSZ TEMP1
   GOTO L1
   RETLW 0
 
 CONVERT ADDWF PC                            ;共阳数码管显示???
       RETLW              03FH ;0
       RETLW              006H ;1
       RETLW              05BH ;2  
       RETLW              04FH ;3  
       RETLW              055H ;4  
       RETLW              05DH ;5  
       RETLW              07DH ;6  
       RETLW              007H ;7  
       RETLW              07FH ;8  
       RETLW              06FH ;9  
   
   SHOWJS                     ;显示级数的一段程序  SHOW1 SHOW2 SHOW3 SHOW4 显示到数码管中去
    MOVLW   0
    TRIC   RB
    
     BCF RC,7
     BSF RC,6
     BSF RC,5
     BCF RC,4
     MOVF SHOW1,W
     CALL CONVERT
     MOVWF 6
     CALL DELAY1MS
     
     BCF RC,7   ;           ABCD,假设A是最高位
     BSF RC,6
     BSF RC,5
     BSF RC,4
     MOVF SHOW2,W
     CALL CONVERT
     MOVWF 6
     CALL DELAY1MS
     
     BSF RC,7
     BCF RC,6
     BCF RC,5
     BCF RC,4
     MOVF SHOW3,W
     CALL CONVERT
     MOVWF 6
     CALL DELAY1MS
     
     BSF RC,7
     BCF RC,6
     BCF RC,5
     BSF RC,4
     MOVF SHOW4,W
     CALL CONVERT
     MOVWF 6
     CALL DELAY1MS
   RETLW 0
   

---------------------------------
   MAIN
   MOVLW B'00001110'
   TRIS RC                                                                                                                                                                                                                                                     
   BTFSS RC,1
   GOTO SENDWAVE     
   BTFSS RC,2
   GOTO SENDWAVE
   
LOOPC1  
  
   MOVLW 160
   MOVWF TIMECOUNT
   MOVWF COUNT
   MOVLW 07H             ;定了5.2s时间   
   OPTION
   CLRF RTCC
   
LOOPC2
   MOVLW 255                    ;第一次做rtcc判断,防止程序运行时间过长影响TIMECOUNT记数
   SUBWF RTCC,W
   SKPZ
   GOTO PL1
   DECF TIMECOUNT,1
   CLRF RCTT
   SKPNZ
   GOTO ENDPC
 
 PL1
  MOVLW 1
  MOVWF SHOW1

  MOVLW 0
  MOVWF SHOW4
  
  MOVLW 1
  SUBWF PLJS,W
  SKPZ 
  GOTO PL2
  MOVLW 1
  MOVWF SHOW2
  MOVLW 8
  MOVWF SHOW3
  GOTO PLEND
PL2
  MOVLW 2
  SUBWF PLJS,W
  SKPZ 
  GOTO PL3
  MOVLW 1
  MOVWF SHOW2
  MOVLW 9
  MOVWF  SHOW3
  GOTO PLEND
  
 PL3
  MOVLW 3
  SUBWF PLJS,W
  SKPZ 
  GOTO PL4
  MOVLW 2
  MOVWF SHOW2
  MOVLW 0
  MOVWF SHOW3
  GOTO PLEND
PL4
  MOVLW 4
  SUBWF PLJS,W
  SKPZ 
  GOTO PL5
  MOVLW 2
  MOVWF SHOW2
  MOVLW 1
  MOVWF SHOW3
  GOTO PLEND
  
PL5
  MOVLW 5
  SUBWF PLJS,W
  SKPZ 
  GOTO PL6
  MOVLW 2
  MOVWF SHOW2
  MOVLW 2
  MOVWF SHOW3
  GOTO PLEND
PL6
  MOVLW 6
  SUBWF PLJS,W
  SKPZ 
  GOTO PL7
  MOVLW 2
  MOVWF SHOW2
  MOVLW 3
  MOVWF SHOW3
  GOTO PLEND
PL7
  MOVLW 7
  SUBWF PLJS,W
  SKPZ 
  GOTO PL8
  MOVLW 2
  MOVWF SHOW2
  MOVLW 4
  MOVWF SHOW3
  GOTO PLEND
PL8
  MOVLW 8
  SUBWF PLJS,W
  SKPZ 
  GOTO PL9
  MOVLW 2
  MOVWF SHOW2
  MOVLW 5
  MOVWF SHOW3
  GOTO PLEND
PL9
  MOVLW 9
  SUBWF PLJS,W
  SKPZ 
  GOTO PL10
  MOVLW 2
  MOVWF SHOW2
  MOVLW 6
  MOVWF SHOW3
  GOTO PLEND
PL10
  MOVLW 10
  SUBWF PLJS,W
  SKPZ 
  GOTO PL11
  MOVLW 2
  MOVWF SHOW2
  MOVLW 7
  MOVWF SHOW3
  GOTO PLEND
PL11
  MOVLW 11
  SUBWF PLJS,W
  SKPZ 
  GOTO PL2
  MOVLW 2
  MOVWF SHOW2
  MOVLW 8
  MOVWF SHOW3
  GOTO PLEND
PL12
  MOVLW 12
  SUBWF PLJS,W
  SKPZ 
  GOTO PL13
  MOVLW 2
  MOVWF SHOW2
  MOVLW 9
  MOVWF SHOW3
  GOTO PLEND
PL13
  MOVLW 13
  SUBWF PLJS,W
  SKPZ 
  GOTO PL14
  MOVLW 3
  MOVWF SHOW2
  MOVLW 0
  MOVWF SHOW3
  GOTO PLEND
PL14
  MOVLW 14
  SUBWF PLJS,W
  SKPZ 
  GOTO PL15
  MOVLW 3
  MOVWF SHOW2
  MOVLW 1
  MOVWF SHOW3
  GOTO PLEND
PL15
  MOVLW 15
  SUBWF PLJS,W
  SKPZ 
  GOTO PL16
  MOVLW 3
  MOVWF SHOW2
  MOVLW 2
  MOVWF SHOW3
  GOTO PLEND 
PL16
  MOVLW 16
  SUBWF PLJS,W
  SKPZ 
  GOTO PL17
  MOVLW 3
  MOVWF SHOW2
  MOVLW 3
  MOVWF  SHOW3
  GOTO PLEND
PL17                ;如果PLJS不在1--16范围内则 显示0 0 0 0
    MOVLW 0
    MOVWF SHOW2
    MOVWF SHOW3
    MOVWF SHOW1
    MOVWF SHOW4
PLEND

  CALL SHOWJS
  
   MOVLW 255                          ;第二次做rtcc判断,防止程序运行时间过长影响TIMECOUNT记数
   SUBWF RTCC,W                       
   SKPZ                            ;RTCC 一直保持255,怎么办?会多次TIMECOUNT--
   GOTO NEXTRC1                    ;如果RTCC 一到255,就清0,就会少256*0.5= 128us =0.13ms
   DECF TIMECOUNT,1                 
   CLRF RTCC
   SKPNZ
   GOTO ENDPC
  
 NEXTRC1
  TEFSS RC,1                ;RC1=1 RC2=0  PLJS=PLJS+1
  GOTO NEXTRC2
  TEFSC RC,2
  GOTO LOOPC1
  CALL DELAY1MS
  TEFSS RC,1  
  GOTO NEXTRC2
  TEFSC RC,2                                                      
  GOTO LOOPC1
  MOVF TIMECOUNT,W            ;如果两次加减操作时间间隔小于0.5秒的话,则不做加减!
  SUBWF COUNT,W
  MOVWF TEMP2
  MOVLW 15
  SUBWF TEMP2
  SKPNC 
  GOTO NEXTRC2
  ;MOVF TIMECOUNT,W
  ;MOVWF COUNT
  INCF PLJS,1
  MOVLW 16                               ; if (pljs>16) pljs=16
  SUBWF PLJS,W
  SKPC
  GOTO LOOPC1
  MOVLW 16
  MOVWF PLJS
  GOTO LOOPC1                    ;重新进行5.2s记时
  
NEXTRC2
  TEFSS RC,2
  GOTO LOOPC2
  TEFSC RC,1
  GOTO LOOPC1
  CALL DELAY1MS
  TEFSS RC,2
  GOTO LOOPC2
  TEFSC RC,1
  GOTO LOOPC1
  MOVF TIMECOUNT,W
  SUBWF COUNT,W
  MOVWF TEMP2
  MOVLW 15
  SUBWF TEMP2
  SKPNC 
  GOTO LOOPC2
  DECF PLJS,1      
  MOVF PLJS,F                  ;IF (PLJS==0)   PLJS=1                                                             
  SKPZ
  GOTO LOOPC1
  MOVLW 1
  MOVWF PLJS
  GOTO LOOPC1
  ENDPC
   GOTO SENDWAVE
   
-----------------------------------------------------
;;;SENDWAVE   
   
   CONVERT1 MOVWF PC
   TABLE1 RETLW  32         ; 49    ;1
         RETLW     30            ; 46  ;2
         RETLW    27            ;42
         RETLW     25           ;38
         RETLW    23          ;35
         RETLW     20           ; 32
         RETLW     18            ; 28
         RETLW     16            ; 25
         RETLW     14            ;22
         RETLW      12             ; 19   ;10
         RETLW      10             ;  16   
         RETLW      8             ; 13
         RETLW     6             ; 10
         RETLW    4            ;7
         RETLW  2            ; 4
         RETLW    0              ;1   ;16
        
 
         
  SENDWAVE                     ;发射子程序
    MOVLW B'0000100'              ;RC3为发射断口
                                ;这个地方要根据电路图定!!!!!!!!!!!!
    TRIS RC
    CLRF RC
      
     --------------- 
      
     MOVLW 32                         ;这里增加一个降32及的程序段
    MOVLW TEMP1
 LOOPS1
                         ;假设他为上升沿触发
    BSF  RC,0 
    NOP 
    NOP
    BCF RC,0
    DECF TEMP1,1  
    SKPZ
    GOTO LOOPS1
    ----------------
    
    
    
    MOVLW TABLE
    MOVWF COUNT
    MOVF PLJS,0
    ADDWF COUNT,0   ;--->W
    CALL CONVERT1
    MOVWF COUNT1  ; 得到的数防在COUNT1中    
 
 MOVLW 4
 MOVWF COUNT 
 LOOPS2
   BSF RC,3                            ;!!!!!!!!!!!!!!!发射口选择
      MOVLW 186        ;延时            先做750个指令周期,再根据count1做一定时间
     MOVWF TIMECOUNT                      ;186*4=744
 LOOPS3 NOP
        
       DECFSZ TIMECOUNT,1
       GOTO LOOPS3                         ;1+1+(1+1+2)186+2=748
       
      NOP
      NOP                                 ;2
      
     LOOPS4  DECFSZ COUNT1,1                 ;(1+2)*COUNT1+2
          GOTO LOOPS4         
                                     ;748+(1+2)*COUNT1+2+2 = 752+(1+2)*COUNT1
     
    
    
    BCF RC,3                          ;这句话也要占时间?????
   MOVLW 186                            ;延时   先做750个指令周期,再根据count1做一定时间
     MOVWF TIMECOUNT                      ;186*4=744
 LOOPS5 NOP
       DECFSZ TIMECOUNT,1
       GOTO LOOPS5                       ;1+1+(1+1+2)186+2=748
                                     ;2
     LOOPS6  DECFSZ COUNT1,1                 ;(1+2)*COUNT1+2
          GOTO LOOPS6         
                                      ;748+(1+2)*COUNT1+2 = 750+(1+2)*COUNT1
    DECFSZ COUNT,1     ;发送4次
    GOTO LOOPS2                        ;748+(1+2)*COUNT1+2+2 = 752+(1+2)*COUNT1  假设他转移的时间内保持原壮    
    GOTO RECEWAVE
    
    
---------------------------------------------------
--------------------------------------------------------------------
RECEWAVE
    CLRF RTCC
  
    MOVLW B'0100' 
    TRIS RA       ; RA2用于接收信号根据具体电路图而定
   MOVLW
    MOVLW 06H
    OPTIOIN         ; 1:128
    MOVLW 0
    MOVWF TIMECOUNT
    
    MOVLW 0
    MOVWF JSGS
    
 LOOPR1
   MOVLW 0
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC0
  
   
    MOVLW 3
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC3
   
    MOVLW 5
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC5
   
    MOVLW 6
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC6
   
    MOVLW 7
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC7
   
    MOVLW 8
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC8
   
    MOVLW 9
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC9
   
    MOVLW 10
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC10
   
    MOVLW 11
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC11
   
    MOVLW 12
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC12
   
    MOVLW 13
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC13
   
    MOVLW 14
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC14
   
    MOVLW 15
   SUBWF TIMECOUNT,0
   SKPNZ
   GOTO TC15
                          ------;
  TC0
   MOVLW  250
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
   TC3
   MOVLW  60
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
   TC5
   MOVLW  1
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
   TC6
   MOVLW  73
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
TC7
   MOVLW  67
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
TC8
   MOVLW  14
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  186
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
TC9
   MOVLW  87
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  212
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
   
TC10
  MOVLW  65
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  174
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
TC11
   MOVLW  12
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  106
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
    MOVLW  184
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
TC12
   MOVLW  6
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  84
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW 147
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  209
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
TC13
   MOVLW  18
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  94
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  141
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  188
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW 235
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   GOTO RECEIVE
   
TC14
   MOVLW  25
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  72
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  119
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  166
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW 213
   SUBWF RTCC ,0
   SKPNZ
   GOTO CHULI
   MOVLW  144

⌨️ 快捷键说明

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