summaryrefslogtreecommitdiff
path: root/software/idm/idm.asm
blob: d2d68bcc03f863d3116a6462f537387a1ca0aac3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
  ;;
  ;;  spreadspace pic utils
  ;;
  ;;
  ;;  Copyright (C) 2011 Christian Pointner <equinox@spreadspace.org>
  ;;                         
  ;;  This file is part of spreadspace pic utils.
  ;;
  ;;  spreadspace pic utils is free software: you can redistribute it and/or modify
  ;;  it under the terms of the GNU General Public License as published by
  ;;  the Free Software Foundation, either version 3 of the License, or
  ;;  any later version.
  ;;
  ;;  spreadspace pic utils is distributed in the hope that it will be useful,
  ;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
  ;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  ;;  GNU General Public License for more details.
  ;;
  ;;  You should have received a copy of the GNU General Public License
  ;;  along with spreadspace pic utils. If not, see <http://www.gnu.org/licenses/>.
  ;;
  ;; -------------------------------------
  ;; PREAMBLE

  LIST      p=16F1847
  include   "p16f1847.inc"
  __config  _CONFIG1,  _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
  __config  _CONFIG2,  _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_LO & _LVP_OFF


  ;; -------------------------------------
  ;; DEFINES
CNT0 EQU H'0020'
CNT1 EQU H'0021'
CNT2 EQU H'0022'
TMP  EQU H'0023'
  
  ;; -------------------------------------
  ;; OFFSET
  org	      .0
  goto      init

  ;; -------------------------------------
  ;; Interrupts
  org       .4
  clrf      BSR
  btfsc     PIR1,SSP1IF
  goto      int_spi
  retfie

int_spi
  bsf       PORTA,7
  bcf       PIR1,SSP1IF
  incf      TMP,f
  movf      TMP,w
  movwf     SSP1BUF
  bcf       PORTA,7
  retfie

  ;; -------------------------------------
  ;; INIT
init
  ;; BANK 4
  movlw     b'00000100'
  movwf     BSR
  movlw     b'00100100'
  movwf     SSP1CON1
  movlw     b'00010000'
  movwf     SSP1CON3
  movlw     b'00000000'
  movwf     SSP1STAT
  
  ;; BANK 3
  movlw     b'00000011'
  movwf     BSR
  clrf      ANSELA
  clrf      ANSELB

  ;; BANK 2
  movlw     b'00000010'
  movwf     BSR

  ;; BANK 1
  movlw     b'00000001'
  movwf     BSR  
  movlw     b'01111111'
  movwf     TRISA
  movlw     b'01110011'
  movwf     TRISB
;  movlw     b'01011000'                 ;  1 MHz
;  movlw     b'01100000'                 ;  2 MHz
;  movlw     b'01101000'                 ;  4 MHz
;  movlw     b'01110000'                 ;  8 MHz
  movlw     b'01111000'                 ; 16 MHz
  movwf     OSCCON
  movlw     b'00001000'
  movwf     PIE1
  
  ;; BANK 0
  clrf      BSR
  clrf      PIR1
  movlw     b'11000000'
  movwf     INTCON
  bcf       PORTA,7

  bcf       PORTB,3
  
  clrf      TMP
  
  ;; -------------------------------------
  ;; MAINLOOP
main
;;   movlw     .255
;;   movwf     CNT0

;; outer1
;;   movlw     .255
;;   movwf     CNT1

;; outer
;;   movlw     .20
;;   movwf     CNT2
  
;; inner
;;   decfsz    CNT2,f
;;   goto      inner
  
;;   decfsz    CNT1,f
;;   goto      outer

;;   decfsz    CNT0,f
;;   goto      outer1

;;   movlw     b'00001000'
;;   xorwf     PORTB,f

  goto	    main

  ;; -------------------------------------
  ;; END
  end