Advertisement
Guest User

EE2004 MiniProject

a guest
Dec 6th, 2016
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pic 16 3.29 KB | None | 0 0
  1. LIST    P=18F4520
  2.  #include <P18F4520.INC>       
  3.     CONFIG  OSC = XT
  4.     CONFIG  WDT = OFF
  5.     CONFIG  LVP = OFF
  6.     CBLOCK  0x000
  7.     DELAY_H
  8.     DELAY_L
  9.     input
  10.     d4
  11.     d3
  12.     d2
  13.     d1
  14.     d3b
  15.     tmrh
  16.     tmrl
  17.     clock
  18.     ENDC
  19.         ORG 0x0000     
  20.     goto    Main
  21.     ORG 0008H
  22.     BTFSS INTCON,TMR0IF
  23.     RETFIE
  24.     GOTO TIMER
  25.         ORG     0x0100
  26. Main
  27.     movlw 0x0F
  28.     movwf ADCON1
  29.     clrf TRISD
  30.     clrf TRISB
  31.     clrf PORTD
  32.     clrf PORTB
  33.     setf TRISC
  34.     movlw b'0100'
  35.     movwf d4
  36.     movlw b'0011'
  37.     movwf d3
  38.     movlw b'0010'
  39.     movwf d2
  40.     movlw b'0001'
  41.     movwf d1
  42.     movlw 0x05
  43.     movwf d3b
  44.     movlw 0x0b
  45.     movwf tmrh
  46.     movlw 0xdc
  47.     movwf tmrl
  48.     movlw 0x01
  49.     movwf clock
  50.     movlw b'00000011'
  51.     movwf T0CON
  52.     movlw 0x0B
  53.     movwf TMR0H
  54.     movlw 0xDC
  55.     movwf TMR0L
  56.     BCF INTCON,TMR0IF
  57.     BSF T0CON,TMR0ON
  58.     BSF INTCON,TMR0IE
  59.     BSF INTCON,GIE
  60.  
  61. Loop
  62.     call LED
  63.     call button
  64.     goto Loop
  65.  
  66. button
  67.     btfss   PORTC,0
  68.     incf    d4
  69.     call digit
  70.     btfss   PORTC,1
  71.     call pause
  72.     btfss   PORTC,2
  73.     call mode
  74.     btfss   PORTC,3
  75.     call resett
  76.     btfss   PORTC,7
  77.     call demo
  78.     return
  79.  
  80. clear
  81.         movlw 0x00
  82.         movwf d1
  83.         movwf d2
  84.         movwf d3
  85.         movwf d4
  86.         return
  87.  
  88. resett:
  89.         call clear
  90.         BCF T0CON,TMR0ON
  91.         call Delay
  92. again2  btfsc   PORTC,3
  93.         goto up2
  94.         call LED
  95.         goto again2
  96. up2     call Delay
  97.         return
  98.  
  99. pause:
  100.         BTG T0CON,TMR0ON
  101.         call Delay
  102. again   btfsc   PORTC,1
  103.         goto up
  104.         call LED
  105.         goto again
  106. up      call Delay
  107.         return
  108.  
  109. mode:   call clear
  110.         BCF T0CON,TMR0ON
  111.         movf clock,w
  112.         BZ fast
  113.         movlw 0xFD
  114.         movwf tmrh
  115.         movlw 0x8F
  116.         movwf tmrl
  117.         movlw 0x09
  118.         movwf d3b
  119.         movlw 0x00
  120.         movwf clock
  121.         goto done
  122. fast:   movlw 0x0B
  123.         movwf tmrh
  124.         movlw 0xDC
  125.         movwf tmrl
  126.         movlw 0x05
  127.         movwf d3b
  128.         movlw 0x01
  129.         movwf clock
  130. done:   call Delay
  131. again3  btfsc   PORTC,2
  132.         goto up3
  133.         call LED
  134.         goto again3
  135. up3     call Delay
  136.         return
  137.        
  138.  
  139. digit:
  140.         movf d4,w
  141.         sublw 0x09
  142.         btfsc STATUS,N
  143.         goto equal
  144.         goto notequal
  145. equal:  movlw 0x00
  146.         movwf d4
  147.         incf d3
  148. notequal:
  149.         movf d3,w
  150.         subwf d3b,w
  151.         btfsc STATUS,N
  152.         goto equal2
  153.         goto notequal2
  154. equal2: movlw 0x00
  155.         movwf d3
  156.         incf d2
  157. notequal2:
  158.         movf d2,w
  159.         sublw 0x09
  160.         btfsc STATUS,N
  161.         goto equal3
  162.         goto notequal3
  163. equal3: movlw 0x00
  164.         movwf d2
  165.         incf d1
  166. notequal3:
  167.         movf d1,w
  168.         sublw 0x05
  169.         btfsc STATUS,N
  170.         goto equal4
  171.         goto notequal4
  172. equal4: movlw 0x00
  173.         movwf d1
  174. notequal4:
  175.  
  176.         return
  177.  
  178. demo
  179.         movlw 0x05
  180.         movwf d1
  181.         movlw 0x00
  182.         movwf d2
  183.         movwf d3
  184.         movwf d4
  185.         return
  186.  
  187. LED
  188.     movff d1,input
  189.     CALL bcd_7seg
  190.     movwf PORTD
  191.     movlw 0x00
  192.     movwf PORTB
  193.     CALL Delay
  194.     movff d2,input
  195.     CALL bcd_7seg
  196.     movwf PORTD
  197.     incf PORTB,F
  198.     CALL Delay
  199.     movff d3,input
  200.     CALL bcd_7seg
  201.     movwf PORTD
  202.     incf PORTB,F
  203.     CALL Delay
  204.     movff d4,input
  205.     CALL bcd_7seg
  206.     movwf PORTD
  207.     incf PORTB,F
  208.     CALL Delay
  209.     return
  210.  
  211.  
  212.    
  213. bcd_7seg
  214.     MOVLW   low bcd_table
  215.     MOVWF   TBLPTRL
  216.     MOVLW   high bcd_table
  217.     MOVWF   TBLPTRH
  218.     MOVLW   upper bcd_table
  219.     MOVWF   TBLPTRU
  220.     MOVF    input, W
  221.     ADDWF   TBLPTRL, F
  222.     MOVLW   0
  223.     ADDWFC  TBLPTRH
  224.     ADDWFC  TBLPTRU
  225.     TBLRD*
  226.     MOVF    TABLAT, W
  227.     RETURN
  228.  bcd_table
  229.  db 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
  230.  
  231. Delay: 
  232.         MOVLW   0x07
  233.         MOVWF   DELAY_H
  234. LOP_1:   MOVLW  0
  235.      MOVWF  DELAY_L
  236. LOP_2:   DECF   DELAY_L, F
  237.      BNZ    LOP_2
  238.      DECF   DELAY_H, F
  239.      BNZ    LOP_1
  240.      return
  241.  
  242. TIMER:
  243.     movf tmrh,w
  244.     movwf TMR0H
  245.     movf tmrl,w
  246.     movwf TMR0L
  247.     incf d4
  248.     BCF INTCON,TMR0IF
  249.     RETFIE
  250.    
  251.  
  252. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement