Advertisement
Guest User

voja_antonic_bookscanner.asm

a guest
Nov 20th, 2012
478
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;                                                      
  2. ;                  book scanner za kiber pipu 15.11.12.
  3. ;                                                      
  4. ;                   ____    ____                      
  5. ;             MCLR |    \__/    | B7  PGD              
  6. ;        LM in  A0 |            | B6  PGC              
  7. ;    tranz out  A1 |            | B5  out cw/ccw      
  8. ;          out  A2 |            | B4  out -Full Power  
  9. ;  test key in  A3 |            | B3  out EXP0        
  10. ;           in  A4 |            | B2  in KEY          
  11. ;  mot clk out  A5 |    2525    | B1  in HALL          
  12. ;              Vss |            | B0  LM in            
  13. ;     16 MHz   Osc |            | Vdd                  
  14. ;     16 MHz   Osc |            | Vss                  
  15. ;      LED out  C0 |            | C7  RXD              
  16. ;     EXP2 out  C1 |            | C6  TXD              
  17. ;           in  C2 |            | C5  out EXP1        
  18. ;           in  C3 |____________| C4  out              
  19. ;                                                      
  20.  
  21.     LIST P=18F2525
  22.     #include <P18F2525.INC>
  23.  
  24. #define motclock lata,5
  25. #define cwccw latb,5
  26. #define motpower latb,4
  27. #define led lata,2
  28. #define click0 latc,5       ; (uostravanje)
  29. #define click1 latc,5       ; (camera 1)
  30. #define click2 latc,1       ; (camera 2)
  31. #define hilite2 latc,0
  32. #define key porta,3
  33. #define extkey portb,2
  34. #define hall portb,1
  35.  
  36.     config osc = HS
  37.     config fcmen = off
  38.     config ieso = off
  39.     config pwrt = on
  40.     config borv = 1
  41.     config wdt = off
  42.     config mclre = on
  43.     config lpt1osc = off
  44.     config pbaden = off
  45.     config stvren = on
  46.     config lvp = off
  47.     config xinst = off
  48.     config debug = off
  49.     config cp0 = off
  50.     config cp1 = off
  51.     config cp2 = off
  52.     config cpb = off
  53.     config cpd = off
  54.     config wrt0 = on
  55.     config wrt1 = on
  56.     config wrt2 = on
  57.     config wrtb = on
  58.     config wrtc = on
  59.     config wrtd = off
  60.     config ebtr0 = off
  61.     config ebtr1 = off
  62.     config ebtr2 = off
  63.     config ebtrb = off
  64.  
  65.     CBLOCK  0
  66. inner
  67. outer
  68. keyrotor
  69. stepcount
  70. liftcount
  71. speedbyte
  72.  
  73.     ENDC
  74.  
  75. ;____________________________________________________MACROS
  76.  
  77. gore macro
  78.     bcf cwccw
  79.      endm
  80.  
  81. dole macro
  82.     bsf cwccw
  83.      endm
  84.  
  85. weak macro
  86.     bsf motpower    ; low power
  87.      endm
  88.  
  89. strong macro
  90.     bcf motpower    ; high power
  91.      endm
  92.  
  93. ifhallon macro
  94.     btfss   hall
  95.      endm
  96.  
  97. ifhalloff macro
  98.     btfsc   hall
  99.      endm
  100.  
  101. defspeed macro
  102.     movlw   .56
  103.     movwf   speedbyte
  104.      endm
  105.  
  106. speed macro speedvalue
  107.     movlw   speedvalue
  108.     movwf   speedbyte
  109.      endm
  110.  
  111. ifz macro
  112.     btfsc   status,z
  113.      endm
  114.  
  115. ifnz macro
  116.     btfss   status,z
  117.      endm
  118.  
  119. ifc macro
  120.     btfsc   status,c
  121.      endm
  122.  
  123. ifnc macro
  124.     btfss   status,c
  125.      endm
  126.  
  127. ;*********************************************************************************
  128. ;*********************************************************************************
  129. ;****************                                                *****************
  130. ;****************               M    A    I    N                 *****************
  131. ;****************                                                *****************
  132. ;*********************************************************************************
  133. ;*********************************************************************************
  134.  
  135.  
  136.     org 0
  137.  
  138.     movlw   0fh
  139.     movwf   adcon1
  140.     movlw   7
  141.     movwf   cmcon
  142.  
  143.     movlw   b'00000000'
  144.     movwf   porta
  145.     movlw   b'00000000'
  146.     movwf   portb
  147.     movlw   b'00000000'
  148.     movwf   portc
  149.     movlw   B'011001'
  150.     movwf   trisa
  151.     movlw   B'00000111'
  152.     movwf   trisb
  153.     movlw   B'10001100'
  154.     movwf   trisc
  155.                 ; ___ clear ram bank 0-3
  156.     lfsr    fsr0,0
  157. goclr1k
  158.     clrf    postinc0
  159.     btfss   fsr0h,2
  160.     goto    goclr1k
  161.  
  162. ;******************************************************************************
  163. ;******************************************************************************
  164. ;**                                                                          **
  165. ;**                   F  A  R  M                                             **
  166. ;**                                                                          **
  167. ;******************************************************************************
  168. ;******************************************************************************
  169.  
  170.                 ; jedan step motora je 0,153 mm
  171.     bcf led
  172.     call    home
  173.     ifc
  174.     goto    goerror
  175. farm
  176.     defspeed
  177.     bcf led
  178.     weak
  179.     dole
  180.     call    waitkey
  181.  
  182.     strong
  183.     call    slowstart
  184.     movlw   .123
  185.     movwf   liftcount
  186. move_down           ; \ u ovoj petlji ide nadole
  187.     call    mm2
  188.     decfsz  liftcount,f
  189.     bra move_down   ; / u ovoj petlji ide nadole
  190.  
  191.     btfsc   extkey
  192.     bra otp1
  193.                 ; still down mode
  194. waitjust
  195.     call    timing0
  196.     weak
  197.     gore
  198.     bsf hilite2
  199.     bcf status,c
  200.     btfsc   extkey
  201.     bsf status,c
  202.     rlcf    keyrotor
  203.     movf    keyrotor,w
  204.     xorlw   b'11111110'
  205.     bnz waitjust
  206.     bra goup
  207. otp1
  208.     call    timing2
  209.     weak
  210.     gore
  211.     bsf hilite2
  212.     movlw   0
  213.     call    timing3
  214.  
  215.     bsf click0
  216.     bsf click1
  217.     call    timing3
  218.     bsf click2
  219.     call    timing3
  220.     call    timing3
  221.     call    timing3
  222.     call    timing3
  223.     call    timing3
  224.     call    timing3
  225.     call    timing3
  226.     call    timing3
  227.     bcf click0
  228.     bcf click1
  229.     call    timing3
  230.     bcf click2
  231.     call    timing3
  232.     call    timing3
  233.     call    timing3
  234.     call    timing3
  235.     call    timing3
  236.     call    timing3
  237.     call    timing3
  238. goup
  239.     bcf hilite2
  240.     call    home        ; ide nagore
  241.     ifc
  242.     goto    goerror
  243.     call    timing2
  244.     bra farm
  245. ;-------------------------------
  246.  
  247. showhall
  248.     ifhallon
  249.     bsf led
  250.     ifhalloff
  251.     bcf led
  252.     return
  253.  
  254. ;-------
  255. mm2             ; napravi 13 koraka (2 mm)
  256.     movlw   .13     ; za 2 mm
  257.     movwf   stepcount
  258. gost20
  259.     btg motclock
  260.     call    timing
  261.     btg motclock
  262.     call    timing
  263.     decfsz  stepcount,f
  264.     bra gost20
  265.     return
  266. ;-------
  267. timing0
  268.     movlw   .5
  269.     movwf   outer
  270.     bra gostep
  271. timing2
  272.     movlw   .200
  273.     movwf   outer
  274.     bra gostep
  275. timing
  276.     movf    speedbyte,w
  277.     movwf   outer
  278. gostep2
  279.     movlw   .6
  280.     movwf   inner
  281. gostep
  282.     decfsz  inner,f
  283.     bra gostep
  284.     decfsz  outer,f
  285.     bra gostep2
  286.     return
  287. ;-------
  288. timing3             ; dugi tajming, period w
  289.     movwf   outer
  290. gostep3
  291.     nop
  292.     nop
  293.     nop
  294.     nop
  295.     nop
  296.     decfsz  inner,f
  297.     bra gostep3
  298.     decfsz  outer,f
  299.     bra gostep3
  300.     return
  301.  
  302. ;-------
  303. waitkey
  304.     btfss   extkey
  305.     return
  306.     btfss   key
  307.     return
  308.     bra waitkey
  309. ;-------------------------------
  310.  
  311. home
  312.     strong
  313.     defspeed
  314.     ifhalloff
  315.     bra samogore
  316.                 ; prvo ide dole da se otkaci od halla
  317.     dole
  318.     call    slowstart
  319.     movlw   .3      ; za 20 mm
  320.     call    gosteps2
  321.     call    slowstop
  322.     ifhallon
  323.     goto    errhome
  324.     movlw   .200
  325.     call    timing3
  326. samogore            ; ide gore do halla, error ako ga nije nasao
  327.     gore
  328.     call    slowstart_long
  329.     defspeed
  330.     movlw   .150        ; za 300 mm max posle kojih prijavljuje gresku
  331.     call    gosteps
  332.     bc  errhome
  333. slowstop            ; sad ide jos usporeno
  334.     speed   90
  335.     movlw   1       ; jos 2 mm
  336.     call    gosteps2
  337.     speed   160
  338.     movlw   1       ; jos 2 mm
  339.     call    gosteps2
  340.     speed   200
  341.     movlw   1       ; jos 2 mm
  342.     call    gosteps2
  343.     bcf status,c    ; NC = no error
  344.     return
  345. errhome
  346.     bsf status,c    ; C = error
  347.     return
  348. ;-------
  349.  
  350. slowstart
  351.     speed   200
  352.     movlw   1       ; jos 2 mm
  353.     call    gosteps2
  354.     speed   160
  355.     movlw   2       ; jos 2 mm
  356.     call    gosteps2
  357.     speed   90
  358.     movlw   3       ; jos 2 mm
  359.     call    gosteps2
  360.     defspeed
  361.     return
  362.  
  363. slowstart_long
  364.     speed   160
  365.     movlw   8       ; x 2 mm
  366.     call    gosteps2
  367.     speed   120
  368.     movlw   1       ; x 2 mm
  369.     call    gosteps2
  370.     speed   90
  371.     movlw   1       ; x 2 mm
  372.     call    gosteps2
  373.     defspeed
  374.     return
  375.  
  376.  
  377. ;-------
  378.  
  379. gosteps             ; napravi w*2mm, stop and clr C if hall low
  380.     strong
  381.     movwf   liftcount
  382. godns
  383.     call    mm2
  384.     ifhallon
  385.     bra foundhall
  386.     decfsz  liftcount,f
  387.     bra godns
  388.     bsf status,c    ; set C, error (nije nasao hall)
  389.     return
  390. foundhall
  391.     bcf status,c    ; clr C, nasao hall
  392.     return
  393. ;-------
  394.  
  395. gosteps2            ; samo napravi w*2mm bezuslovno
  396.     strong
  397.     movwf   liftcount
  398. godns2
  399.     call    mm2
  400.     decfsz  liftcount,f
  401.     bra godns2
  402.     return
  403.  
  404. ;------------------------------
  405.  
  406. goerror             ; samo blinka led do beskraja
  407.     weak
  408.     btg led
  409.     clrf    wreg
  410.     call    timing3
  411.     bra goerror
  412.  
  413. ;------------------------------
  414.     END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement